AI: Chapter 3
uniform- cost search
When all step costs are equal, breadth-first search is optimal because it always expands the shallowest unexpanded node. By a simple extension, we can find an algorithm that is optimal with any step-cost function. Instead of expanding the shallowest node, uniform- cost search expands the node n with the lowest path cost O(n). This is done by storing the frontier as a priority queue ordered by q.
consistency
A heuristic h(n) is consistent if, for every node n and every successor n' of n generated by any action rt, the estimated cost of reaching the goal from n is no greater than the step cost of getting to n' plus the estimated cost of reaching the goal from re!
A* search
A* evaluates nodes by combining g(n), the cost to reach the node, and h(n), the cost to get from the node to the goal: (n) = g(n) + h(n) .
Optimality:
Does the strategy find the optimal solution
H(n)
estimated cost of the cheapest path from the state at node n to a goal state (Notice that km) takes a node as input, but, unlike g(n), it depends only en the state at that
admissible heuristic
one that never overestimates the cost to reach the goal.
Hueristic
outside information that helps solve the problem
Completeness
s the algorithm guaranteed to find a solution when there is one?
Breadth-first search
simple strategy in which the root node is expanded first, then all the successors of the root node are expanded next, then their successors, and so on. In general, all the nodes are expanded at a given depth in the search tree before any nodes at the next level are expanded.
Iterative deepening depth -first search
(or iterative deepening depth-first search) is a general strategy. often used in combination with depth-first tree search, that finds the best depth limit. It does this by gradually increasing the limit—first 0, then 1, then 2, and so on—until a goal is found. This will occur when the depth limit reaches d, the depth of the shallowest goal node. Iterative deepening combines the benefits of depth-first and breadth-first search. Like depth-first search, its memory requirements are modest: 00d) to be precise. Like breadth-first search, it is complete when the branching factor is finite and optimal when the path cost is a nondecreasing function of the depth of the node.
Greedy best - first search
Greedy best-first search' tries to expand the node that is closest to the goal, on the grounds that this is likely to lead to a solution quickly. Thus, it evaluates nodes by using just the heuristic function; that is, f (n) = H(n)
Time complexity
How long does it take to find a solution
Space complexity
How much memory is needed to perform the search
Depth-limited search
The embarrassing failure of depth-first search in infinite state spaces can be alleviated by supplying depth-first search with a predetermined depth limit L. That is, nodes at depth L treated as if they have no successors.
Bidirectional search
The idea behind bidirectional search is to run two simultaneous searches—one forward from the initial state and the other backward from the goal—hoping that the two searches meet in the middle
abstraction
The process of removing unneeded details
Depth first search
always expands the deepest node in the current frontier of the search tree. The progress of the search is illustrated in Figure 3.16. The. search proceeds immediately to the deepest level of the search tree, where the nodes have no successors. As those nodes are expanded, they are dropped from the frontier, so then the search "backs up" to the next deepest node that still has unexplored successors. Whereas breadth-first-search uses a FIFO queue, depth-first search uses a LIFO queue.