570 likes | 608 Views
Search Strategies. CMPT 420 / CMPG 720. Uninformed Search Strategies. Uninformed search strategies use only the information available in the problem definition Breadth-first search Uniform-cost search Depth-first search Depth-limited search Iterative deepening search. Breadth-first search.
E N D
Search Strategies CMPT 420 / CMPG 720
Uninformed Search Strategies • Uninformed search strategies use only the information available in the problem definition • Breadth-first search Uniform-cost search Depth-first search • Depth-limited search Iterative deepening search
Breadth-first search • Expand shallowest unexpanded node
Breadth-first search • Expand shallowest unexpanded node
Breadth-first search • Expand shallowest unexpanded node
Breadth-first search • Expand shallowest unexpanded node Examine siblings before children
Breadth-first search • Expand shallowest unexpanded node Implementation: • Frontier is a FIFO queue, i.e., new successors go at end
Graph Representation 2 1 3 5 4 • Adjacency list representation of G = (V, E) • An array of V lists, one for each vertex in V • Each list Adj[u] contains all the vertices v such that there is an edge between u and v • Adj[u] contains the vertices adjacent to u (in arbitrary order) • Can be used for both directed and undirected graphs 1 2 3 4 5 Undirected graph
Graph Representation 0 1 0 1 0 0 1 1 1 1 2 1 0 1 0 1 0 3 1 0 1 0 1 5 4 1 1 0 0 1 • Adjacency matrix representation of G = (V, E) • Assume vertices are numbered 1, 2, … V • The representation consists of a matrix A V x V : • aij = 1 if (i, j) E 0 otherwise 1 2 3 4 5 For undirected graphs matrix A is symmetric: aij = aji A = AT 1 2 3 4 Undirected graph 5
Breadth-first search • Is BFS guaranteed to find a solution if one exists?
Breadth-first search • Is BFS guaranteed to find a solution if one exists? • Problem?
Breadth-first search • Guaranteed to find a solution if one exists • Problem: it might take a very long time to find a solution! • note how much of tree is expanded that doesn't contribute towards goal
Properties of breadth-first search • Complete? • Yes • Optimal? • Time? • Space?
Properties of breadth-first search • Complete? • Yes • Optimal? • Yes (if cost = 1 per step) • Time? • Space?
Properties of breadth-first search • Complete? • Yes • Optimal? • Yes (if cost = 1 per step) • Time? • 1+b+b2+b3+… +bd = O(bd) • exponential in d • Space?
Properties of breadth-first search • Complete? • Yes • Optimal? • Yes (if cost = 1 per step) • Time? • 1+b+b2+b3+… +bd = O(bd) • exponential in d • Space? • O(bd) (O(bd-1) nodes in the explored set and O(bd) nodes in the frontier)
Uniform-cost search • Expand the node with the lowest path cost g(n) • (Cheapest search) Implementation:
Uniform-cost search • Expand the node with the lowest path cost g(n) • (Cheapest search) Implementation: • Frontier = priority queue ordered by path cost g(n)
Properties of uniform-cost search • Equivalent to breadth-first if step costs all equal • Complete? • Yes • Optimal? • Yes – nodes expanded in increasing order of path cost • Time? • O(bd) • Space? • O(bd)
Depth-first search • Expand deepest unexpanded node
Depth-first search • Expand deepest unexpanded node
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Examine children before siblings
Depth-first search • Expand deepest unexpanded node Implementation: • Frontier= LIFO queue
More efficient (in some cases) than breadth-first search • Problem: what if some branch is very long: can spend a lot of time searching useless cases
Properties of depth-first search • Complete? • Yes (if every branch has finite number of states) • Optimal? • No
Properties of depth-first search • Complete? • Yes (if every branch has finite number of states) • Optimal? • No • Time? • O(bm): terrible if m is much larger than d • but if solutions are dense, may be much faster than breadth-first
Comparing Uninformed Search Strategies • Time and space complexity are measured in • b – maximum branching factor of the search tree • m – maximum depth of the state space • d – depth of the least cost solution
Properties of depth-first search • Complete? • Yes (if every branch has finite number of states) • Optimal? • No • Time? • O(bm): terrible if m is much larger than d • but if solutions are dense, may be much faster than breadth-first • Space? • O(bm), i.e., linear space!
Depth-limited search • Depth-first search with depth limit l, • i.e., nodes at depth l have no successors • 20 cities in map of Romania • l =19 • Any city can be reached from any other city in at most 9 steps. • Diameter gives a better depth limit.
Properties of Depth-limited search • Complete? • Yes (if the goal is within the limit) • Optimal? • No • Time? • O(bl) • Space? • O(bl)
Properties of Depth-limited search • Depth-first search can be viewed as a special case with l = infinity • Main advantage that the search process can't descend forever (in a branch without solution). • However, it will not find a solution if all solutions require a depth greater than the limit. • (This is likely when l is unknown.)
How to overcome this and maintain the advantages of depth limited search?
Iterative deepening search • Gradually increases the limit – 0, 1, 2, … • If don't find solution, increase depth and try again • Combines the benefits of depth-first and breadth-first search.