0% found this document useful (0 votes)
32 views

BFS DFS

The document discusses search tree terminology and graph search strategies. It defines key terms like search tree, fringe, and search strategy. It also explains uninformed and informed search strategies, and how strategies are evaluated based on completeness, time complexity, space complexity, and optimality.

Uploaded by

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

BFS DFS

The document discusses search tree terminology and graph search strategies. It defines key terms like search tree, fringe, and search strategy. It also explains uninformed and informed search strategies, and how strategies are evaluated based on completeness, time complexity, space complexity, and optimality.

Uploaded by

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

Search Terminology

Search Tree
– Generated as the search space is traversed
• The search space itself is not necessarily a tree, frequently it is a
graph
• The tree specifies possible paths through the search space
– Expansion of nodes
• As states are explored, the corresponding nodes are expanded by
applying the successor function
– this generates a new set of (child) nodes
• The fringe (frontier/queue) is the set of nodes not yet visited
– newly generated nodes are added to the fringe
– Search strategy
• Determines the selection of the next node to be expanded
• Can be achieved by ordering the nodes in the fringe
– e.g. queue (FIFO), stack (LIFO), “best” node w.r.t. some measure (cost)

18
Search Tree Vs Graph Tree
BASIS FOR
TREE GRAPH
COMPARISON
Path Only one between two More than one path is
vertices. allowed.
Root node It has exactly one root Graph doesn't have a
node. root node.
Loops No loops are permitted. Graph can have loops.

Complexity Less complex More complex


comparatively
Traversal techniques Pre-order, In-order and Breadth-first search and
Post-order. depth-first search.

Number of edges n-1 (where n is the Not defined


number of nodes)
Model type Hierarchical Network 19
Example: Graph Search

1
1
A4 D3 3
1 1
5 2
S3 C2 G0
3 3
1 4
B2 E1

• The graph describes the search (state) space


– Each node in the graph represents one state in the search space
• e.g. a city to be visited in a routing or touring problem

• This graph has additional information


– Names and properties for the states (e.g. S3)
– Links between nodes, specified by the successor function
• properties for links (distance, cost, name, ...)
18
Traversing a Graph as Tree  A tree is
generated by
traversing the
graph.
1
1
A4 D3 3  The same node
1 1 in the graph
may appear
5 2 repeatedly in the
S3 C2 G0
3 3 tree.
1 4  The arrangement
B2 2
E1 of the tree
depends on the
traversal strategy
S3 (search method)
1 1
5  The initial state
A4 C2 B2
becomes the root
node of the tree
1 2 3 3 2
1 1  In the fully
D3 C2 D3 G0 E1 C2 4 E1
expanded tree,
the goal states
3 1 2 3 3 4 1 2 3 4 are the leaf
nodes.
G0 D3 G0 E1 G0 G0 D3 G0 E1 G0  Cycles in graphs
3 4 3 4 may result in
19
infinite branches
G0 G0 G0
Kruskal’s Algorithm

Kruskal’s Algorithm includes 4 Steps:

Step 1: List all the edges of the graph in order of


increasing weights.

Step 2: Select the smallest edge of the graph.

Step 3: Select the next smallest edge that do


not makes any circuit.

Step 4: Continue this process until all the


Vertices are explored and (Vn-1) edges have
been selected
Minimum Spanning Tree (MST) Kruskal’s Algorithm
Find MST using Kruskal’s Algorithm
Prim’s Algorithm
Prim’s Algorithm includes 4 Steps:

Step 1: Draw an n by n (n x n) vertices’ matrix and


label them as V1, V2…..Vn along with the given weights
of the edges.

Step 2: Starting from vertex V1 and connect it to its


nearest neighbor by searching in row 1.

Step 3: Consider V1 and Vi as one subgraph and


connect as step 2 while do not forming any circuit.

Step 4: Continue this process until we get the MST


having n vertices and (Vi-1) edges.
Prim’s Algorithm
Find MST using Prim’s Algorithm
Searching Strategies

Uninformed Search
– breadth-first Informed Search
– uniform-cost search – best-first search
– depth-first – search with heuristics
– depth-limited search – memory-bounded search
– iterative deepening – iterative improvement search
– bi-directional search

Most of the effort is often spent on the selection of an


appropriate search strategy for a given problem:
– Uninformed Search (blind search)
• number of steps, path cost unknown
• agent knows when it reaches a goal
– Informed Search (heuristic search)
• agent has background information about the problem
20
– map, costs of actions
Evaluation of Search Strategies
A search strategy is defined by picking the order
of node expansion

Strategies are evaluated along the following


dimensions:
• Completeness: if there is a solution, will it be found
• Time complexity: How long does it takes to find the
solution
• Space complexity: memory required for the search
• Optimality: will the best solution be found

Time and space complexity are measured in


terms of
– b: maximum branching factor of the search tree
– d: depth of the least-cost solution
– m: maximum depth of the state space (may be ∞) 29
1. Breadth-First Search (BFS) Algorithm

30
Breadth-First Search

• It is the most common search strategy for


traversing a tree or graph.

• This algorithm searches breadthwise in a tree


or graph, so it is called breadth-first search.

• BFS algorithm starts searching from the root


node of the tree and expands all the
successor nodes at the current level before
moving to node of next level.

• BFS is implemented using FIFO Queue data


structure.
31
Breadth-First Search

All the nodes reachable from the current node are


explored first (shallow nodes are expanded before deep
nodes).

Algorithm (Informal)
1. Enqueue the root/initial node (Queue Structure).
2. Dequeue a node and examine it.
1. If the element sought is found in this node, quit the search and
return a result.
2. Otherwise enqueue any successors (the direct child nodes) that
have not yet been discovered.
3. If the queue is empty, every node on the graph has been
examined – quit the search and return "not found".
4. Repeat from Step 2.
32
Breadth-First Search

A breadth-first search (BFS)


A explores nodes nearest the root
before exploring nodes further
away on each level
B C
For example, after searching A,
D E F G then B, then C, the search
proceeds with D, E, F, G
H I J K
Node are explored in the Level
order A B C D E F G H I J K L
L M N O P Q MNOPQ

J will be found before N


33
Breadth-First Snapshot 1

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal

Fringe: [] + [2,3]
24
Breadth-First Snapshot 2

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5

Fringe: [3] + [4,5]


25
Breadth-First Snapshot 3

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

Fringe: [4,5] + [6,7]


26
Breadth-First Snapshot 4

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9

Fringe: [5,6,7] + [8,9]


27
Breadth-First Snapshot 5

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11

Fringe: [6,7,8,9] + [10,11]


28
Breadth-First Snapshot 6

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13

Fringe: [7,8,9,10,11] + [12,13]


29
Breadth-First Snapshot 7

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

Fringe: [8,9,10,11,12,13] + [14,15]


30
Breadth-First Snapshot 8

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17

Fringe: [9,10,11,12,13,14,15] + [16,17]


31
Breadth-First Snapshot 9

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19

Fringe: [10,11,12,13,14,15,16,17] + [18,19]


32
Breadth-First Snapshot 10

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21

Fringe: [11,12,13,14,15,16,17,18,19] + [20,21]


33
Breadth-First Snapshot 11

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23

Fringe: [12, 13, 14, 15, 16, 17, 18, 19, 20, 21] + [22,23]
34
Breadth-First Snapshot 12

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

Note:
The goal node is
8 9 10 11 12 13 14 15 “visible” here, but
we can not
perform the goal
test yet.

16 17 18 19 20 21 22 23 24 25

Fringe: [13,14,15,16,17,18,19,20,21] + [22,23]


35
Breadth-First Snapshot 13

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27

Fringe: [14,15,16,17,18,19,20,21,22,23,24,25] + [26,27]


36
Breadth-First Snapshot 14

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29

Fringe: [15,16,17,18,19,20,21,22,23,24,25,26,27] + [28,29]


37
Breadth-First Snapshot 15

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [15,16,17,18,19,20,21,22,23,24,25,26,27,28,29] + [30,31]


38
Breadth-First Snapshot 16

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
39
Breadth-First Snapshot 17

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [18,19,20,21,22,23,24,25,26,27,28,29,30,31]
40
Breadth-First Snapshot 18

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [19,20,21,22,23,24,25,26,27,28,29,30,31]
41
Breadth-First Snapshot 19

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [20,21,22,23,24,25,26,27,28,29,30,31]
42
Breadth-First Snapshot 20

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [21,22,23,24,25,26,27,28,29,30,31]
43
Breadth-First Snapshot 21

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [22,23,24,25,26,27,28,29,30,31]
44
Breadth-First Snapshot 22

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [23,24,25,26,27,28,29,30,31]
45
Breadth-First Snapshot 23

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

8 9 10 11 12 13 14 15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Fringe: [24,25,26,27,28,29,30,31]
46
Breadth-First Snapshot 24

1
Initial
Visited
Fringe
2 3 Current
Visible
Goal
4 5 6 7

Note:
The goal test
8 9 10 11 12 13 14 15
is positive for
this node, and
a solution is
found in 24
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
steps.

Fringe: [25,26,27,28,29,30,31]
47
Example BFS

B S

G C

F D

H E
Solve using BFS
ABDGEFCH
B F
C

A
E H

D
G
Properties of Breadth-First Search (BFS)

Completeness: Yes (if b is finite), a solution


will be found if exists.

Time Complexity: (nodes until the solution)

Optimality: Yes
b Branching Factor
d The depth of the goal

Suppose the branching factor b=10, and the goal is at depth


d=12:
– Then we need O1012 time to finish. If O is 0.001 second, then we
need 1 billion seconds (31 year). And if each O costs 10 bytes to
store, then we also need 1 terabytes.

Not suitable for searching large graphs


60
3- Depth-First Search

75
Depth-First Search
Based on [4]

A depth-first search (DFS)


A explores a path all the way to a
leaf before backtracking and
exploring another path.
B C
For example, after searching A,
D E F G then B, then D, the search
backtracks and tries another path
from B.
H I J K
Node are explored in the order A
L M N O P Q BDEHLMNIOPCFGJ
KQ

76
Depth-First Search

1. Start
2. Push Root Node to Stack
• Mark Root Node as
Visited
• Print Root Node as Output
3. Check Top of the Stack If
Stack is Empty, Go to Step 6
4. Else, Check Adjacent Top of
the Stack
• If Adjacent is not Visited
• Push Node to Stack
• Mark Node as Visited
• Print Node as Output
• Else Adjacent Visited
5. Go to Step 3
6. Stop
77
Example DFS

B S

G C

F D

H E
Example DFS ABEGFCHD

B F
C

A
E H

D
G
Example DFS
AGEDFCHB

B F
C

A
E H

D
G
Properties of Depth-First Search

Complete: No: fails in infinite-depth spaces, spaces with loops


– Yes, 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)

Optimal: No

b: maximum branching factor of the search tree


d: depth of the least-cost solution
m: maximum depth of the state space (may be ∞)
81
Depth-First vs. Breadth-First

Depth-first goes off into one branch until it reaches a leaf node
– Not good if the goal is on another branch
– Neither complete nor optimal
– Uses much less space than breadth-first
• Much fewer visited nodes to keep track, smaller fringe
Breadth-first is more careful by checking all alternatives
– Complete and optimal (Under most circumstances)
– Very memory-intensive
For a large tree, breadth-first search memory requirements maybe
excessive
For a large tree, a depth-first search may take an excessively long time to
find even a very nearby goal node.
 How can we combine the advantages (and avoid the disadvantages) of
these two search techniques?

82

You might also like