Search in State-Spaces 16/9 2014

Similar documents
INF 4130 Exercise set 4, 15th Sept 2015 w/ solutions

UNINFORMED SEARCH. Announcements Reading Section 3.4, especially 3.4.1, 3.4.2, 3.4.3, 3.4.5

ARTIFICIAL INTELLIGENCE

Search: Advanced Topics and Conclusion

Search: Advanced Topics and Conclusion

CS510 \ Lecture Ariel Stolerman

Route planning / Search Movement Group behavior Decision making

Uninformed Search Methods

/633 Introduction to Algorithms Lecturer: Michael Dinitz Topic: Priority Queues / Heaps Date: 9/27/17

Some Extra Information on Graph Search

CS 310 Advanced Data Structures and Algorithms

Basic Search Algorithms

Binary Trees

CSE 373: Data Structures and Algorithms

CS4800: Algorithms & Data Jonathan Ullman

implementing the breadth-first search algorithm implementing the depth-first search algorithm

Uninformed Search Strategies

CMPSCI 250: Introduction to Computation. Lecture #24: General Search, DFS, and BFS David Mix Barrington 24 March 2014

Lecture 2: Fun with Search. Rachel Greenstadt CS 510, October 5, 2017

Hi everyone. I hope everyone had a good Fourth of July. Today we're going to be covering graph search. Now, whenever we bring up graph algorithms, we

Topics. Trees Vojislav Kecman. Which graphs are trees? Terminology. Terminology Trees as Models Some Tree Theorems Applications of Trees CMSC 302

Search. (Textbook Chpt ) Computer Science cpsc322, Lecture 2. May, 10, CPSC 322, Lecture 2 Slide 1

CS 231: Algorithmic Problem Solving

State Space Search. Many problems can be represented as a set of states and a set of rules of how one state is transformed to another.

CAP 4630 Artificial Intelligence

Branch & Bound (B&B) and Constraint Satisfaction Problems (CSPs)

Notes. Video Game AI: Lecture 5 Planning for Pathfinding. Lecture Overview. Knowledge vs Search. Jonathan Schaeffer this Friday

Topic 1 Uninformed Search

csci 210: Data Structures Graph Traversals

Search Algorithms. IE 496 Lecture 17

mywbut.com Informed Search Strategies-I

Trees. Arash Rafiey. 20 October, 2015

Uninformed search strategies (Section 3.4) Source: Fotolia

Informed (Heuristic) Search. Idea: be smart about what paths to try.

An Appropriate Search Algorithm for Finding Grid Resources

HW#1 due today. HW#2 due Monday, 9/09/13, in class Continue reading Chapter 3

search, DFS & BrFS; cycle checking & MPC arc costs; heuristics; LCFS, BeFS, A* misc: iterative deepening, etc.

Solutions to relevant spring 2000 exam problems

Heuristic Search and Advanced Methods

Graph Search. Chris Amato Northeastern University. Some images and slides are used from: Rob Platt, CS188 UC Berkeley, AIMA

Chapter 3: Solving Problems by Searching

Algorithms and Data Structures

(Refer Slide Time: 05:25)

Lecture 4: Search 3. Victor R. Lesser. CMPSCI 683 Fall 2010

Artificial Intelligence

CMU-Q Lecture 2: Search problems Uninformed search. Teacher: Gianni A. Di Caro

csci 210: Data Structures Graph Traversals

CS 161 Lecture 11 BFS, Dijkstra s algorithm Jessica Su (some parts copied from CLRS) 1 Review

Algorithms Dr. Haim Levkowitz

Geometric data structures:

Solving Problems by Searching

Shortest Path Routing Communications networks as graphs Graph terminology Breadth-first search in a graph Properties of breadth-first search

Class Overview. Introduction to Artificial Intelligence COMP 3501 / COMP Lecture 2: Search. Problem Solving Agents

Uninformed Search. (Textbook Chpt 3.5) Computer Science cpsc322, Lecture 5. May 18, CPSC 322, Lecture 5 Slide 1

3 SOLVING PROBLEMS BY SEARCHING

W4231: Analysis of Algorithms

managing an evolving set of connected components implementing a Union-Find data structure implementing Kruskal s algorithm

1 i n (p i + r n i ) (Note that by allowing i to be n, we handle the case where the rod is not cut at all.)

Trees. 3. (Minimally Connected) G is connected and deleting any of its edges gives rise to a disconnected graph.

looking ahead to see the optimum

ARTIFICIAL INTELLIGENCE SOLVING PROBLEMS BY SEARCHING. Chapter 3

Chapter 14. Graphs Pearson Addison-Wesley. All rights reserved 14 A-1

CSE 100: GRAPH ALGORITHMS

UNIT 4 Branch and Bound

Graphs and trees come up everywhere. We can view the internet as a graph (in many ways) Web search views web pages as a graph

CS521 \ Notes for the Final Exam

Heuristic (Informed) Search

CS 331: Artificial Intelligence Informed Search. Informed Search

Undirected Graphs. V = { 1, 2, 3, 4, 5, 6, 7, 8 } E = { 1-2, 1-3, 2-3, 2-4, 2-5, 3-5, 3-7, 3-8, 4-5, 5-6 } n = 8 m = 11

Lecture 6 Analysis of A*, B&B Search Refinements

The wolf sheep cabbage problem. Search. Terminology. Solution. Finite state acceptor / state space

Search : Lecture 2. September 9, 2003

Algorithms (V) Path in Graphs. Guoqiang Li. School of Software, Shanghai Jiao Tong University

CPS 170: Artificial Intelligence Search

CS 4700: Foundations of Artificial Intelligence. Bart Selman. Search Techniques R&N: Chapter 3

Problem Solving & Heuristic Search

CSE 100: GRAPH ALGORITHMS

Algorithm Design, Anal. & Imp., Homework 4 Solution

CS 331: Artificial Intelligence Informed Search. Informed Search

Coping with the Limitations of Algorithm Power Exact Solution Strategies Backtracking Backtracking : A Scenario

Section 08: Solutions

Outline. Graphs. Divide and Conquer.

CPSC 320 Sample Solution, Playing with Graphs!

CS 512: Comments on Graph Search 16:198:512 Instructor: Wes Cowan

Copyright 2000, Kevin Wayne 1

INTRODUCTION TO HEURISTIC SEARCH

Scribes: Romil Verma, Juliana Cook (2015), Virginia Williams, Date: May 1, 2017 and Seth Hildick-Smith (2016), G. Valiant (2017), M.

Uninformed Search Strategies AIMA

Uninformed Search (Ch )

CSC 373 Lecture # 3 Instructor: Milad Eftekhar

CSE 473. Chapter 4 Informed Search. CSE AI Faculty. Last Time. Blind Search BFS UC-BFS DFS DLS Iterative Deepening Bidirectional Search

MITOCW watch?v=zm5mw5nkzjg

D.K.M.COLLEGE FOR WOMEN (AUTONOMOUS), VELLORE-1.

Downloaded from ioenotes.edu.np

CMPUT 396 Sliding Tile Puzzle

Reference Sheet for CO142.2 Discrete Mathematics II

Search Algorithms. Uninformed Blind search. Informed Heuristic search. Important concepts:

Chapter 4. Uninformed Search Strategies

UNIVERSITY of OSLO. Faculty of Mathematics and Natural Sciences. INF 4130/9135: Algoritmer: Design og effektivitet Date of exam: 14th December 2012

Graphs vs trees up front; use grid too; discuss for BFS, DFS, IDS, UCS Cut back on A* optimality detail; a bit more on importance of heuristics,

Transcription:

Search in State-Spaces 16/9 2014 NB: Oblig 1 (mandatory assignment 1) has been availible for some time at the INF4130 home page Deadline is Friday, September 25 The topics of the day: Backtracking (Ch. 10) Branch-and-bound (Ch. 10) Iterative deepening (only on these slides, but still part of the cirriculum!) A*-search (Ch. 23) 1

Search in State-Spaces Ch. 10 is mainly old stuff from traditional courses on Algorithms and Data Structures (e.g. INF2220 at UiO) Ch. 23 is probably new stuff for most of you Backtracking (Ch. 10) Depth-First-Search in a state-space: DFS Do not need much memory Branch-and-bound (Ch. 10) Breadth-First-Search: BFS It needs a lot of space: Must store all nodes that have been seen but not explored further. We can also indicate for each node how «promising» it is (heuristric), and always proceed from the currently most promising one. Natural to use a priority queue to choose next node. Iterative deepening DFS down to level 1, then to level 2, etc. Combines: The memory efficiency of DFS, and the search order of BFS Dijkstra s shortest path algorithm (repetition from INF2220 etc.) A*-search (Ch. 23) Is similar to branch-and-bound, with heuristics and priority queues Can also be seen as an improved version of Dijkstra s algorithm. 2

State-Spaces and Decision Sequences The state-space of a system is the set of states in which the system can exist. Figure below: Each constellation of an 8-puzzel is a state. Some states are called goal states. That s where we want to end up. No goal state is shown below. Each search algorithm will have a way of traversing the states, and these are usually indicated by directed edges, as is seen on the figure below. Such an algorithm will usually have a number of decision poins: Where to seach next?. The full tree with all choices is the state space tree for that algorithm. Thus, different algorithms will have different state space trees. See the following slides Main problem: The state space is usually very large 3

Models for decision sequences There are usually more than one decision sequence for a given problem, and they may lead to different state space trees. Example: Find, if possible, a Hamiltonian Cycle (see figures below) Hamiltonian Cycle This graph obviously has no Hamiltonian Cycle There are (at least) two natural decision sequences: Start at any node, and try to grow paths from this node in all possible ways. Start with one edge, and add edges as long as they don t make a cycle with already chosen edges. These lead to different state space trees (see next slides). 4

Models for decision sequences A tree structure formed by the first decision sequence: Choose a node and try pathes from this in all ways Possible choices in each step: Choose among all unused nodes connected to the current node by an edge. b c a d e b a c c d e a d d c e d d e a e e c e d e a 5

Models for decision sequences A tree structure formed by the second model: Start with one edge, and add edges as long as they don t make a cycle with already chosen edges. B F A C G E D B C G D A E F G - B C D E F G E Different decision sequences can give better or worse possibilities for pruning Examples from the book: Figure 10.3 and 10.4 (Subset sum) Page 719 (8-puzzle, a small version of the 15-puzzle) 6

State spaces and decision sequences 7

Some times the path leading to the goal node is an important part of the solution Eight-puzzle: Here the path leading to the goal node is the sequence of moves we should perform to solve the puzzle But here it is not: B C D A E F G - B C D E F G B F A C G E D G E Hamiltonian cycle adding edges: Here the order in which we added the edges is usually of no significance for the Hamiltonian circuit we end up with. 8

Backtracking and Depth-First-Search A template for implementing depth-first-search may look like this: procdure DFS(v) { If <v is a goal node> then return.. v.visited = TRUE; for <each neighbour w of v> do if not w.visited then DFS(w) od } It can not only be used for trees, but also for graphs, because of this 9

Backtracking and Depth-first-search (DFS) Searches the state space tree depth first with backtracking, until it reaches a goal state (or has visited all states) The easiest implementation is usually to use a recursive procedure Needs little memory (only «O(the depth of the tree)» ) If the edges have lengths and we e.g. want a shortest possible Hamiltonian cycle, we can use heuristics to choose the most promising direction first (e.g. choose the shortest legal edge from where you are now) One has to use pruning (or bounding ) as often as possible. This is important, as a search usually is time-exponential, and we must use all tricks we can find to limit the execution time. Main pruning principle: Don t enter subtrees that cannot contain a goal node. But the difficulty is to find where this is true. 10

Branch-and-bound / Breadth-First-Search Uses some form of breadth-first-search. We have three sets of nodes: 1. The finished nodes (dark blue). Often do not need to be stored 2. the live nodes (green) seen but not explored further. Large set, that must be stored. 3. The unseen nodes (light blue). We often don t have to look at all of them. The Live nodes (green) will always be a cut through the state-space tree (or likewise if it is a graph) The main step: Choose a node N from the set of Live Nodes. If N is a goal node, then we are finished, else: Take N out of the Live-Node set and insert it into the finished nodes. Insert all children of N into the Live-Node set. BUT: if we are searching a graph, only insert unseen ones a b c d e a d d e c e d c d e e d c a e 11 e a

Branch-and-bound / Breadth-First-Search Three strategies: The Live-Node set is a FIFOqueue We get traditional breadth first The Live-Node set is a LIFO-queue The order will be similar to depth-first, but not exactly The LiveNode queue is a priority queue, We can call this priority search If the priority stems from a certain kind of heuristics, then this will be A*-search (comes later today). b a c c d e a d d c e d d e a e c e d e 12 e a

Iterative deepening Not in the textbook, but included in curriculum! A drawback with DFS is that you can end up going very deep in one branch without finding anything, even if there is a shallow goal node close by. Level 1 Level 2 We can avoid this by first doing DFS to level one, then to level two, etc. With a reasonable branching facor, this will not give too much extra work, and we never have to use much space. We only «test for goal nodes» at the levels we have not been on before Level 3 13

Iterative deepening Assignment next week: Adjust the DFS program to do iterative deepening: procedure DFS(v) { If <v is a goal node> then return.. v.visited=true for <hver nabo w av v> do if not w.visited then DFS(w) fi od } We assume that the test for deciding whether a given node is a goal node is expensive, and we shall therefore only test this for the new levels (only once for each node). Discuss how iterative deepening will work for a directed graph. 14

We move to Ch. 23, and first look at good old: Dijkstra s algorithm for directed graphs a s 1 u 1 4 3 1 y x 4 1 2 c b Next: Pick the smallest node in Q 0 2 v 2 3 2 z 2 5 d «Tree nodes» (The finished nodes) Q: The priority Queue (The «live nodes») d Unseen nodes 15

Dijkstra s algorithm (are only using local knowledge!) procedure Dijkstra(graph G, node source) for each each node v in G do od v.dist := v.previous := NIL source.dist := 0 Q := { source } while Q is not empty do fi od od end u := extract_min(q) for each neighbor v of u do x = length(u, v) + u.dist if x < v.dist then v.dist := x v.previous := u // Initialisation // Marks as unseen nodes // Pointer to remeber the path back to source // Distance from source to itself // The initial priority queue only contains source // Node in Q closest to source. Is removed from Q // Key in prio-queue is distance from source // Nodes in the tree will never pass this test // Shortest path back towards the source Could already here discard nodes not in the tree 16

A*-search (Hart, Nilsson, Raphael 1968) Backtracking / depth-first, LIFO / FIFO, branch-and-bound, breadthfirst and Dijkstra use only local information when choosing the next step. A*-search is simular to Dijkstra, but it uses some global heuristics ( qualified guesses ) to make better choices from Q at each step. Much used in AI and knowlegde based systems. A*-search (as Dijkstra) is useful for problems where we have An explicit or implicit graph of «states> There is a start state and a number of goal states The (directed) edges represent legal state transitions, and they all have a cost And (like for Dijkstra) the aim is to find the cheapest (shortest) path from the start node to a goal node A*-search: If we for each node in Q can guess how far it is to a goal node, then we can often speed up the algorithm considerably! 17

A-search heuristic The strategy is a sort of breadth-first search, like in Dikstra However, we now use an estimate h(v) for the shortest path from the node v to some goal node (h for heuristic). The value we use for choosing the best next node is now: f(v) = g(v) + h(v) (while Dijkstra uses only g(v)) Thus, we get a priority-first search with this value as priority. Dijkstra chooses the next node based on g(v) g(v) s v m 18 Dijkstra

A-search heuristic The strategy is a sort of breadth-first search, like in Dikstra However, we now use an estimate h(v) for the shortest path from the node v to some goal node (h for heuristic). The value we use for choosing the best next node is now: f(v) = g(v) + h(v) (while Dijkstra uses only g(v)) Thus we get a priority-first search with this value as priority. A search chooses the next node based on g(v) + h(v) g(v) h(v) s v m 19 A-søk

A*-search and heuristics If we know that h(v) is never larger than the really shortest path to the closest goal node and we use the extended Dijkstra algorithm indicated on previous slides, we will finally get the correct result (this is not proven here) We shall call this algorithm «weak» A*-search Here, we will often have to go back to nodes that we «thought we were finished with» (nodes in the tree will have to go back to the priority queue, as we can later find an even shorter path to them) And this usually gives a lot of extra work Dijkstra never does that and still get the correct answer. We will put requirements on h(v) so that this will also be true for the extended algorithm above. Using such a heuristics, we ll talk about «strong» A*-search «weak» and «strong» are not used in this way in the textbook 20

Exercise next week (about weak A*-search) Study the example in figure 23.5 (the textbook, page 723). It demonstrates some of what is said on the previous slide: If you do not move nodes back to Q from the «tree» (when a shorter path is found), you may not find the shortest path The drawings below is from that example: b r 20 6 11 a 8 2 7 c r 11 7 a c r a 6 2 7 c d v r a b c d h(v) - 23 20 15 29 d 21

A*-search and monotone heuristics The function h(v) should be an estaimate of the distance from v to the closest goal node. If h(v) is never larger than the shortest distance to a goal, we know that the search will terminate, but maybe slowly. However, we can restrict h(v) further, and get more efficient algorithms. This gives the strong A*-algorithm. the function h(v) must then have the follwing properties: (As before) The function h(v) is never larger that the real distance to the closest goal-node. h(g) = 0 for all goal nodes g And a sort of triangule inequality must hold: If there is a transition from node u to node v with cost c(u,v), then the following should hold: h(u) c(u,v) + h(v) In this case, h(v) is said to be monotone u h(u) c(u,v) g h(v) v 22

A*-search and monotone heuristics (From previous slide) The criteria for monotonicity on h If there is an edge from v to w with weight c(v,w), then we should always have: h(v) c(v,w) + h(w) Every goal node m should have h(m) = 0.. A nice thing here is that if these requirements are fulfilled: then the first requirement (that h(v) is never larger than the real shortest distance to a goal) is automatically fulfilled. Sketch of a proof: We assume that u v w m is a shortest path from u to a goal state m. We set up the inequalities we know: h(u) c(u,v) + h(v) u h(v) c(v,w) + h(w) v h(w) c(w,m) + h(m) = c(w,m) w If we combine the above, we get: h(u) c(u,v) + c(v,w) + c(w,m) m 23

Relation to Dijkstra s algorithm If we use h(v) = 0 for all nodes, this will be Dijkstra s algorithm By using a better heuristic we hope to work less with paths that can not give solutions (here: find a shortest path), so that the algorithm will run faster. However, we will then remove the nodes from Q in a differnt order than in Dijkstra Thus, we can no longer know that when v is moved from Q to the tree, it has the correct shortest path length v(g) BUT luckily, we can prove this (proposition 23.3.2 in the book): If h is monotone, then values of g(v) and parent(v) will always be correct when v is removed from Q to become a tree node. Therefore, we never need to go back to tree nodes, move them back into Q, and update their variables once more. See later slides. Note: There is a misprint at page 724, in formula 23.3.7: Where: h(v) + h(v) appears, it should insted be: h(v) g(v) + h(v) 24

A*-search the data for the algorithm Will be studied as an exercise next week We have a directed graph G with edge weights c(u,v), a start node s, a number of goal-nodes, and finally a monotone heuristic function h(u), (often set in all nodes during initialisation, and never changed). In addition, each node v has the following variables: g: This variable will normally change many times during the execution of the algorithm, but its final value (after being moved to the tree) will be the length of the shortest path from the start node to v. parent: This variable will end up pointing to the parent in a tree of shortest paths back to the start node f: This variable will all the time have the value g(v) + h(v), that is, an estimate of the path length from the start node to a goal node, through the node v We keep a priority queue Q of nodes, where the value of f is used as priority This queue is initialized to contain only the start node s, with g(s) = 0 (This initialization is missing in the description of the algorithm at page 725) The value of f will change during the algorithm, and the node must then be «moved» in the priority queue The nodes that is not in Q at the moment are partitioned intto two types: Tree nodes: In these the parent pointer is part of a tree with the start node as root. These nodes have all been in Q earlier. Unseen nodes (those that we have not touched up until now). 25

A*-search the algorithm Will be studied as an exercise next week Q is initialized with the start node s, with g(s) = 0. (all other nodes are unseen) The main step, that are repeted until Q is empty: Find the node v in Q with the smallest f-value. We then have two alternatives: 1. If v is a goal node the algorithm should terminate, and g(u) and parent(u) indicates the shortest path (backwards) from the start node to v. 2 Otherwise, remove v from Q, and let it become a tree node (it now has its parent pointer and g(v) set to correct values) Look at all the unseen neighbours w of v, and for each do the following: Set g(w) = c(v,w) + g(v). Set f(w) = g(w) + h(w). Set parent(w) = v. Put w into PQ. Look at all neighbours w of v that are in Q, and for each of them do: If g( w ) > g(v) + c(v, w ) then - set g(w) = c(v,w) + g(v) - set parent(w)= v Note that we (as in «Dijkstra») do not look at neighbours of v that are tree nodes. That this will work needs a proof, see next slides 26

Proof that strong A*-search works You will not be asked about details in this proof at the exam, but you should know how the induction goes Proof of proposition 23.3.2: We must use induction (not done in the book) Induction hypothesis: Proposition 23.3.2 is true for all nodes w that are moved from Q into the tree before v. That is, g(w) and parent(w) is correct for all such w. Induction step: We have to show that after v is moved to the tree, this is also true for the node v (and none of the old tree nodes are cahanged) Def: Let generally g*(u) be the length of the shortest path from the start node to a node u. We want to show that g(v) = g*(v) after v is moved from Q to the tree. We look at the situation exactly when v is moved from Q to the tree, and look at the node sequence P from the start node s to v, following the parent pointers from v s = v 0, v 1, v 2,, v j = v We now assume that v 0, v 1,, v k,, but not v k+1, where k+1 < j, has become tree nodes when v is removed from Q, so that v k+1 is in Q when v is removed from Q. 27 We shall show that this cannot be the case.

Illustrating the proof for A*-search The value we use for choosing the best next node is now: f(v) = g(v) + h(v) NB: We assume that the heuristic function h is monotone The important point is to show that there cannot be a shorter path to v that pass through another node outside the tree, e.g. trought u. Induction hypthesis: The red edges gives the global shortest paths g g(v) s f a b c The queue Q u v y x h(u) h(v) z A* chooses the next node based on f(v) = g(v) + h(v) G e d h(w) The Tree T w 28

More on strong A*-search From the monotonicity we know that (for i = 0, 1,, j-1) g*(v i ) + h(v i ) g*(v i ) + c(v i, v i+1 ) + h(v i+1 ) Since the edge (v i, v i+1 ) is part of the shortest path to v i+1, we have: g*(v i+1 ) = c(v i, v i+1 ) + g*(v i ) From these two together, we get: g*(v i ) + h(v i ) g*(v i+1 ) + h(v i+1 ) By letting i be k+1, k+2,, j-1 respectively, we get g*(v k+1 ) + h(v k+1 ) g*(v j ) + h(v j ) = g*(v) + h(v) From the induction hypotheses we know that g(v k ) = g*(v k ), (by looking at the actions done when v k was taken out of Q) g(v k+1 ) = g*(v k+1 ), even if it occurs in Q. We thus know: f(v k+1 ) = g(v k+1 ) + h(v k+1 ) = g*(v k+1 ) + h(v k+1 ) g*(v) + h(v) g(v) + h(v) = f(v) Here, all must be equalities, otherwise f(v k+1 ) < f(v), and then v would not have been taken out of Q before v k+1. Therefore g*(v)+h(v) = g(v)+h(v) and thus g*(v) = g(v). 29 End of proof

(Strong) A*-search American highways. Shortest path Cincinatti - Houston is marked. 30

(Strong) A*-search The tree generated by Dijkstra s algorithm (stops in Houston) 31

(Strong) A*-search The tree generated by the strong A*-algorithm with the monotone h(v): h(v) = the «geographical» distance from v to the goal-node 32