0% found this document useful (0 votes)
19 views37 pages

Uniform Cost Search

Uploaded by

dabaci3568
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views37 pages

Uniform Cost Search

Uploaded by

dabaci3568
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 37

Uniform Cost Search

Uniform cost search


• Breadth-first finds the shallowest goal state
• but not necessarily be the least-cost solution
• work only if all step costs are equal
• Uniform cost search
• modifies breadth-first strategy
• by always expanding the lowest-cost node
• The lowest-cost node is measured by the path cost g(n)
Uniform cost search
• the first found solution is guaranteed to be the cheapest
• least in depth
• But restrict to non-decreasing path cost
• Unsuitable for operators with negative cost
Uniform-cost search
Expand least-cost unexpanded node

• Implementation:
• fringe = queue ordered by path cost

• Equivalent to breadth-first if step costs all equal

• Complete? Yes, if step cost ≥ ε

• Time? # of nodes with g ≤ cost of optimal solution, O(bceiling(C*/ ε)) where C* is the cost of the optimal
solution
• Space? # of nodes with g ≤ cost of optimal solution, O(bceiling(C*/ ε))

• Optimal? Yes – nodes expanded in increasing order of g(n)

let
C* be the cost of optimal solution.
ε is possitive constant (every action cost)
Depth-first search
• Always expands one of the nodes at the deepest
level of the tree
• Only when the search hits a dead end
• goes back and expands nodes at shallower levels
• Dead end  leaf nodes but not the goal
• Backtracking search
• only one successor is generated on expansion
• rather than all successors
• fewer memory
Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
Expand deepest unexpanded node
• Implementation:
• fringe = LIFO queue, i.e., put successors at front

Depth-first search
S

A D

B D A E

C E E B B F
11

D F B F C E A C G
14 17 15 15 13
G C G F
19 19 17 G 25
Depth-first search (Analysis)
• Not complete
• because a path may be infinite or looping
• then the path will never fail and go back try another
option
• Not optimal
• it doesn't guarantee the best solution
• It overcomes
• the time and space complexities
Properties of depth-first
search
• Complete? No: fails in infinite-depth spaces, spaces with
loops
• Modify to avoid repeated states along path

•  complete in finite spaces

• 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!

• Optimal? No

Depth-Limited Strategy
• Depth-first with depth cutoff k (maximal depth below which nodes
are not expanded)

• Three possible outcomes:


• Solution
• Failure (no solution)
• Cutoff (no solution within cutoff)
Depth-limited search
• It is depth-first search
• with a predefined maximum depth
• However, it is usually not easy to define the suitable
maximum depth
• too small  no solution can be found
• too large  the same problems are suffered from
• Anyway the search is
• complete
• but still not optimal
Depth-limited search
S depth = 3
A D 3
6
B D A E

C E E B B F
11

D F B F C E A C G
14 17 15 15 13
G C G F
19 19 17
G 25
Iterative deepening search
• No choosing of the best depth limit
• It tries all possible depth limits:
• first 0, then 1, 2, and so on
• combines the benefits of depth-first and breadth-first search
Iterative deepening search
Iterative deepening search
(Analysis)
• optimal
• complete
• Time and space complexities
• reasonable
• suitable for the problem
• having a large search space
• and the depth of the solution is not known
Properties of iterative deepening search
Complete? Yes

• Time? (d+1)b0 + d b1 + (d-1)b2 + … + bd = O(bd)

• Space? O(bd)

• Optimal? Yes, if step cost = 1
Iterative lengthening search
• IDS is using depth as limit
• ILS is using path cost as limit
• an iterative version for uniform cost search
has the advantages of uniform cost search
• while avoiding its memory requirements
• but ILS incurs substantial overhead
• compared to uniform cost search
Bidirectional search
• Run two simultaneous searches
• one forward from the initial state another backward from the
goal
• stop when the two searches meet
• However, computing backward is difficult
• A huge amount of goal states
• at the goal state, which actions are used to compute it?
• can the actions be reversible to computer its predecessors?
Bidirectional Strategy
2 fringe queues: FRINGE1 and FRINGE2

Time and space complexity = O(bd/2) << O(bd)


Bidirectional search
S
Forward
A D Backwards

B D A E

C E E B B F
11

D F B F C E A C G
14 17 15 15 13
G C G F
19 19 17
G 25
Comparing search strategies
Avoiding repeated states
• for all search strategies
• There is possibility of expanding states
• that have already been encountered and expanded before, on some
other path
• may cause the path to be infinite  loop forever
• Algorithms that forget their history
• are doomed to repeat it
Avoiding repeated states
• Three ways to deal with this possibility
• Do not return to the state it just came from
• Refuse generation of any successor same as its parent state
• Do not create paths with cycles
• Refuse generation of any successor same as its ancestor states
• Do not generate any generated state
• Not only its ancestor states, but also all other expanded states have
to be checked against
Avoiding repeated states
• We then define a data structure
• closed list:
a set storing every expanded node so far
• If the current node matches a node on the closed list,
discard it.

You might also like