02 Solving Problems by Searching (Us)
02 Solving Problems by Searching (Us)
Problem solving
We want:
To automatically solve a problem
We need:
A representation of the problem Algorithms that use some strategy to solve the problem defined in that representation
Problem representation
General:
State space: a problem is divided into a set of resolution steps from the initial state to the goal state Reduction to sub-problems: a problem is arranged into a hierarchy of sub-problems
Specific:
Game resolution Constraints satisfaction
States
A problem is defined by its elements and their relations. In each instant of the resolution of a problem, those elements have specific descriptors (How to select them?) and relations. A state is a representation of those elements in a given moment. Two special states are defined:
Initial state (starting point) Final state (goal state)
State space
The state space is the set of all states reachable from the initial state. It forms a graph (or map) in which the nodes are states and the arcs between nodes are actions. A path in the state space is a sequence of states connected by a sequence of actions. The solution of the problem is part of the map formed by the state space.
Problem solution
A solution in the state space is a path from the initial state to a goal state or, sometimes, just a goal state. Path/solution cost: function that assigns a numeric cost to each path, the cost of applying the operators to the states Solution quality is measured by the path cost function, and an optimal solution has the lowest path cost among all solutions. Solutions: any, an optimal one, all. Cost is important depending on the problem and the type of solution sought.
Problem description
Components:
State space (explicitly or implicitly defined) Initial state Goal state (or the conditions it has to fulfill) Available actions (operators to change state) Restrictions (e.g., cost) Elements of the domain which are relevant to the problem (e.g., incomplete knowledge of the starting point) Type of solution:
Sequence of operators or goal state Any, an optimal one (cost definition needed), all
Example: 8-puzzle
1 4
2 5
3 6
Example: 8-puzzle
State space: configuration of the eight tiles on the board Initial state: any configuration Goal state: tiles in a specific order Operators or actions: blank moves
Condition: the move is within the board Transformation: blank moves Left, Right, Up, or Down
Example: n queens (n = 4, n = 8)
Example: n queens (n = 4, n = 8)
State space: configurations from 0 to n queens on the board with only one queen per row and column Initial state: configuration without queens on the board Goal state: configuration with n queens such that no queen attacks any other Operators or actions: place a queen on the board
Condition: the new queen is not attacked by any other already placed Transformation: place a new queen in a particular square of the board
Operators: directed arcs between nodes The search process explores the state space. In the worst case all possible paths between the initial state and the goal state are explored.
Romania
Whats the problem?
Accomplish a goal
Reach Bucharest by 13:00
Romania
Whats an example of a non-goal-based problem?
Live long and prosper Maximize the happiness of your trip to Romania Dont get hurt too much
Romania
What qualifies as a solution?
You can/cannot reach Bucharest by 13:00 The actions one takes to travel from Arad to Bucharest along the shortest (in time) path
Romania
What additional information does one need?
A map
An initial state
A goal state A function defining state transitions
Which cities could you be in? Which city do you start from? Which city do you aim to reach? When in city foo, the following cities can be reached
Successors= generate_successors(Current)
Successors= process_repeated(Successors, Closed_states, Open_states) Open_states.insert(Successors)
Current= Open_states.first()
eWhile eAlgorithm
Arad
Arad
Arad
Zerind (75)
Timisoara (118)
Sibiu (140)
Arad
Zerind (75)
Timisoara (118)
Sibiu (140)
Arad
Zerind (75)
Timisoara (118)
Sibiu (140)
Dradea (151)
Faragas (99)
Node
Data structure constituting part of a search tree
Includes parent, children, depth, path cost g(x)
Search strategies
A strategy is defined by picking the order of node expansion Strategies are evaluated along the following dimensions: Completeness does it always find a solution if one exists? Time complexity number of nodes generated/expanded Space complexity maximum nodes in memory Optimality does it always find a least-cost solution?
Search strategies
Time and space complexity are measured in terms of: b maximum branching factor of the search tree (may be infinite) d depth of the least-cost solution m maximum depth of the state space (may be infinite)
Nodes
Open nodes:
Generated, but not yet explored Explored, but not yet expanded
Closed nodes:
Explored and expanded
35
Breadth-first search
Expand shallowest unexpanded node Implementation:
A FIFO queue, i.e., new successors go at end
Because you must be able to generate the path upon finding the goal state, all visited nodes must be stored O (bd+1)
Time?
1 + b + b2 + + bd + b(bd-1) = O(bd+1), i.e., exponential in d
Space?
O(bd+1) (keeps every node in memory)
Optimal?
Only if cost = 1 per step, otherwise not optimal in general
Space is the big problem; it can easily generate nodes at 10 MB/s, so 24 hrs = 860GB!
Depth-first search
Expand deepest unexpanded node Implementation:
A LIFO queue, i.e., a stack
Depth-first search
Complete?
No: fails in infinite-depth spaces, spaces with loops. Can be modified to avoid repeated states along path complete in finite spaces O(bm): terrible if m is much larger than d, but if solutions are dense, may be much faster than breadth-first O(bm), i.e., linear space! No
Time?
Space?
Optimal?
Depth-limited search
It is depth-first search with an imposed limit on the depth of exploration, to guarantee that the algorithm ends.
41
42
43
Summary
All uninformed searching techniques are more alike than different. Breadth-first has space issues, and possibly optimality issues. Depth-first has time and optimality issues, and possibly completeness issues. Depth-limited search has optimality and completeness issues. Iterative deepening is the best uninformed search we have explored.