G5 AIAI Introduction to AI

53
G5AIAI Introduction to AI Graham Kendall Blind Searching

description

G5 AIAI Introduction to AI. Blind Searching. Graham Kendall. Problem Definition - 1. Initial State The initial state of the problem, defined in some suitable manner Operator A set of actions that moves the problem from one state to another. Problem Definition - 1. - PowerPoint PPT Presentation

Transcript of G5 AIAI Introduction to AI

Page 1: G5 AIAI Introduction to AI

G5AIAIIntroduction to AI

Graham KendallBlind Searching

Page 2: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - 1

• Initial State– The initial state of the problem,

defined in some suitable manner

• Operator– A set of actions that moves the

problem from one state to another

Page 3: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - 1

• Neighbourhood (Successor Function)– The set of all possible states

reachable from a given state

• State Space– The set of all states reachable from

the initial state

Page 4: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - 2

• Goal Test– A test applied to a state which

returns if we have reached a state that solves the problem

• Path Cost– How much it costs to take a

particular path

Page 5: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - Example

5 4

6 1 8

7 3 2

1 2 3

8 4

7 6 5

1 2 3

4 5 6

7 8

1 4 7

2 5 8

3 6

Initial State Goal State

Page 6: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - Example

• States– A description of each of the eight

tiles in each location that it can occupy. It is also useful to include the blank

• Operators– The blank moves left, right, up or

down

Page 7: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - Example

• Goal Test– The current state matches a

certain state (e.g. one of the ones shown on previous slide)

• Path Cost– Each move of the blank costs 1

Page 8: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Problem Definition - Datatype

• Datatype PROBLEM– Components

• INITIAL-STATE,

• OPERATORS,

• GOAL-TEST,

• PATH-COST-FUNCTION

Page 9: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

How Good is a Solution?

• Does our search method actually find a solution?

• Is it a good solution?– Path Cost

– Search Cost (Time and Memory)

• Does it find the optimal solution?– But what is optimal?

Page 10: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Evaluating a Search

• Completeness– Is the strategy guaranteed to find a

solution?

• Time Complexity– How long does it take to find a

solution?

Page 11: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Evaluating a Search

• Space Complexity– How much memory does it take to

perform the search?

• Optimality– Does the strategy find the optimal

solution where there are several solutions?

Page 12: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Search Trees

xx x x

x xx x x

o

x

o

xx

o

x………..

Page 13: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Search Trees

• ISSUES– Search trees grow very quickly

– The size of the search tree is governed by the branching factor

– Even this simple game has a complete search tree of 984,410 potential nodes

– The search tree for chess has a branching factor of about 35

Page 14: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching SearchingImplementing a Search - What we need to store

• State– This represents the state in the state

space to which this node corresponds

• Parent-Node– This points to the node that generated

this node. In a data structure representing a tree it is usual to call this the parent node

Page 15: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching SearchingImplementing a Search - What we need to store

• Operator– The operator that was applied to generate

this node

• Depth– The number of nodes from the root (i.e.

the depth)

• Path-Cost– The path cost from the initial state to this

node

Page 16: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Implementing a Search - Datatype

• Datatype node– Components:

• STATE,

• PARENT-NODE,

• OPERATOR,

• DEPTH,

• PATH-COST

Page 17: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Using a Tree – The Obvious Solution?

• Advantages– It’s intuitive

– Parent’s are automatically catered for

Page 18: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Using a Tree – The Obvious Solution?

• But– It can be wasteful on space

– It can be difficult the implement, particularly if there are varying number of children (as in tic-tac-toe)

– It is not always obvious which node to expand next. We may have to search the tree looking for the best leaf node (sometimes called the fringe or frontier nodes). This can obviously be computationally expensive

Page 19: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Using a Tree – Maybe not so obvious

• Therefore– It would be nice to have a

“simpler” data structure to represent our tree

– And it would be nice if the next node to be expanded was an O(1) operation

Page 20: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search

• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 21: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 22: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 23: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 24: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 25: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 26: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

General Search• Function GENERAL-SEARCH(problem, QUEUING-FN) returns a solution or failure

– nodes = MAKE-QUEUE(MAKE-NODE(INITIAL-STATE[problem]))

– Loop do

• If nodes is empty then return failure

• node = REMOVE-FRONT(nodes)

• If GOAL-TEST[problem] applied to STATE(node) succeeds then return node

• nodes = QUEUING-FN(nodes,EXPAND(node,OPERATORS[problem]))

– End

• End Function

Page 27: G5 AIAI Introduction to AI

Blind Searches

Page 28: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Blind Searches - Characteristics

• Simply searches the State Space

• Can only distinguish between a goal state and a non-goal state

• Sometimes called an uninformed search as it has no knowledge about its domain

Page 29: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Blind Searches - Characteristics

• Blind Searches have no preference as to which state (node) that is expanded next

• The different types of blind searches are characterised by the order in which they expand the nodes.

• This can have a dramatic effect on how well the search performs when measured against the four criteria we defined in an earlier lecture

Page 30: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Breadth First Search - Method

• Expand Root Node First

• Expand all nodes at level 1 before expanding level 2

• OR

• Expand all nodes at level d before expanding nodes at level d+1

Page 31: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Breadth First Search - Implementation

• Use a queueing function that adds nodes to the end of the queue

Function BREADTH-FIRST-SEARCH(problem) returns a solution or failure

Return GENERAL-SEARCH(problem,ENQUEUE-AT-END)

Page 32: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Breadth First Search - Implementation

AB CC D ED E F G

A

B C

D E D E F G

Page 33: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Evaluating Breadth First Search

• Observations– Very systematic

– If there is a solution breadth first search is guaranteed to find it

– If there are several solutions then breadth first search will always find the shallowest goal state first and if the cost of a solution is a non-decreasing function of the depth then it will always find the cheapest solution

Page 34: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Evaluating Breadth First Search

• Evaluating against four criteria– Complete? : Yes– Optimal? : Yes– Space Complexity : 1 + b + b2 + b3 + ... + bd i.e

O(bd)– Time Complexity : 1 + b + b2 + b3 + ... + bd i.e.

O(bd)

– Where b is the branching factor and d is the depth of the search tree

– Note : The space/time complexity could be less as the solution could be found anywhere on the dth level.

Page 35: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Exponential Growth

• Exponential growth quickly makes complete state space searches unrealistic

• If the branch factor was 10, by level 5 we would need to search 100,000 nodes (i.e. 105)

Page 36: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Exponential GrowthDepth Nodes Time Memory

0 1 1 millisecond 100 kbytes2 111 0.1 second 11 kilobytes4 11,111 11 seconds 1 megabyte6 106 18 minutes 111 megabytes8 108 31 hours 11 gigabytes

10 1010 128 days 1 terabyte12 1012 35 years 111 terabytes14 1014 3500 years 11,111 terabytes

Time and memory requirements for breadth-first search, assuming a branching factor of 10, 100 bytes per node and

searching 1000 nodes/second

Page 37: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Exponential Growth - Observations• Space is more of a factor to breadth first search

than time

• Time is still an issue. Who has 35 years to wait for an answer to a level 12 problem (or even 128 days to a level 10 problem)

• It could be argued that as technology gets faster then exponential growth will not be a problem. But even if technology is 100 times faster we would still have to wait 35 years for a level 14 problem and what if we hit a level 15 problem!

Page 38: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Uniform Cost Search (vs BFS)

• BFS will find the optimal (shallowest) solution so long as the cost is a function of the depth

• Uniform Cost Search can be used when this is not the case and uniform cost search will find the cheapest solution provided that the cost of the path never decreases as we proceed along the path

• Uniform Cost Search works by expanding the lowest cost node on the fringe.

Page 39: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Uniform Cost Search - Example

1 10

5 5

15 5

SB

G

C

A

• BFS will find the path SAG, with a cost of 11, but SBG is cheaper with a cost of 10

• Uniform Cost Search will find the cheaper solution (SBG). It will find SAG but will not see it as it is not at the head of the queue

Page 40: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth First Search - Method

• Expand Root Node First

• Explore one branch of the tree before exploring another branch

Page 41: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth First Search - Implementation

• Use a queueing function that adds nodes to the front of the queue

Function DEPTH-FIRST-SEARCH(problem) returns a solution or failure

Return GENERAL-SEARCH(problem,ENQUEUE-AT-FRONT)

Page 42: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth First Search - Observations

• Only needs to store the path from the root to the leaf node as well as the unexpanded nodes. For a state space with a branching factor of b and a maximum depth of m, DFS requires storage of bm nodes

• Time complexity for DFS is bm in the worst case

Page 43: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth First Search - Observations

• If DFS goes down a infinite branch it will not terminate if it does not find a goal state.

• If it does find a solution there may be a better solution at a lower level in the tree. Therefore, depth first search is neither complete nor optimal.

Page 44: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth Limited Search (vs DFS)

• DFS may never terminate as it could follow a path that has no solution on it

• DLS solves this by imposing a depth limit, at which point the search terminates that particular branch

Page 45: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth Limited Search - Observations

• Can be implemented by the general search algorithm using operators which keep track of the depth

• Choice of depth parameter is important– Too deep is wasteful of time and space

– Too shallow and we may never reach a goal state

Page 46: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Depth Limited Search - Observations

• If the depth parameter, l, is set deep enough then we are guaranteed to find a solution if one exists– Therefore it is complete if l>=d (d=depth of

solution)

• Space requirements are O(bl)

• Time requirements are O(bl)

• DLS is not optimal

Page 47: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Map of Romania

Bucharest

Zerind

Arad

Timisoara

Lugoj

Mehadia

DobretaCraiova

Rimnicu Vilcea

Sibiu

Pitesti

Giurgui

UrziceniHirsova

Eforie

Vaslui

Iasi

NeamtOdarea

Fararas

On the Romania map there are 20 towns so any town is reachable in 19 steps

In fact, any town is reachable in 9 steps

Page 48: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Iterative Deepening Search (vs DLS)

• The problem with DLS is choosing a depth parameter

• Setting a depth parameter to 19 is obviously wasteful if using DLS

• IDS overcomes this problem by trying depth limits of 0, 1, 2, …, n. In effect it is combining BFS and DFS

Page 49: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Iterative Deepening Search - Observations• IDS may seem wasteful as it is expanding the same

nodes many times. In fact, when b=10 only about 11% more nodes are expanded than for a BFS or a DLS down to level d

• Time Complexity = O(bd)

• Space Complexity = O(bd)

• For large search spaces, where the depth of the solution is not known, IDS is normally the preferred search method

Page 50: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Repeated States - Three Methods

• Do not generate a node that is the same as the parent nodeOrDo not return to the state you have just come from

• Do not create paths with cycles in them. To do this we can check each ancestor node and refuse to create a state that is the same as this set of nodes

Page 51: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Repeated States - Three Methods

• Do not generate any state that is the same as any state generated before. This requires that every state is kept in memory (meaning a potential space complexity of O(bd))

• The three methods are shown in increasing order of computational overhead in order to implement them

Page 52: G5 AIAI Introduction to AI

G5G5AIAIAIAI Searching Searching

Blind Searches – SummaryEvaluation Breadth

FirstUniform

CostDepthFirst

DepthLimited

IterativeDeepening

Time BD BD BM BL BD

Space BD BD BM BL BDOptimal? Yes Yes No No YesComplete? Yes Yes No Yes, if L >= D Yes

B = Branching factorD = Depth of solutionM = Maximum depth of the search treeL = Depth Limit

Page 53: G5 AIAI Introduction to AI

G5AIAIIntroduction to AI

Graham KendallEnd of Blind Searches