0% found this document useful (0 votes)
48 views20 pages

10-Breadth First Search Part2

1) Breadth-first search (BFS) can determine if a path exists between two vertices in a graph but does not record the actual path. 2) To record the path, an additional pred[] array is used where pred[w] = v means that vertex w was visited from vertex v. 3) As BFS visits each vertex, it marks the vertex in the visited table and adds neighbors to the queue, recording in pred[] the vertex from which each was reached.

Uploaded by

Jayne Aruna-Noah
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)
48 views20 pages

10-Breadth First Search Part2

1) Breadth-first search (BFS) can determine if a path exists between two vertices in a graph but does not record the actual path. 2) To record the path, an additional pred[] array is used where pred[w] = v means that vertex w was visited from vertex v. 3) As BFS visits each vertex, it marks the vertex in the visited table and adds neighbors to the queue, recording in pred[] the vertex from which each was reached.

Uploaded by

Jayne Aruna-Noah
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/ 20

COMP171

Fall 2006

Breadth First Search (BFS)


Part 2

Lecture 23
Graph / Slide 2

Shortest Path Recording


 BFS we saw only tells us whether a path
exists from source s, to other vertices v.
 It doesn’t tell us the path!
 We need to modify the algorithm to record the path

 How can we do that?


 Note: we do not know which vertices lie on this
path until we reach v!
 Efficient solution:
Use an additional array pred[0..n-1]
Pred[w] = v means that vertex w was visited from v
Graph / Slide 3

BFS + Path Finding

initialize
all pred[v] to -1

Record where
you came from
Graph / Slide 4

Example Adjacency List


Visited Table
(T/F)
0 F -
1 F -
0
2 F -
8 3 F -

source 4 F -
2 9 5 F -
6
1 F -
7 F -
3 7 8 F -
6 9 F -
4
5
Pred
Initialize visited
table (all False)

Q ={ } Initialize Pred to -1
Initialize Q to be empty
Graph / Slide 5

Adjacency List Visited Table (T/F)


0 F -
1 F -
0
2 T -
8 3 F -
4 F -
source 2 9 5 F -
6
1 F -
7 F -
3 7 8 F -
6 9 F -
4
5 Pred
Flag that 2 has
been visited.

Q= { 2 }

Place source 2 on the queue.


Graph / Slide 6

Adjacency List Visited Table (T/F)


0 F -
1 T 2
0
2 T -
Neighbors
8 3 F -
4 T 2
source 2 9 5 F -

1 6 F -
7 F -
3 7 8 T 2
6 9 F -
4
5 Pred

Mark neighbors
as visited.
Q = {2} → { 8, 1, 4 }
Record in Pred
Dequeue 2. that we came from
Place all unvisited neighbors of 2 on the queue 2.
Graph / Slide 7

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 F -
4 T 2
source 2 9 5 F -
6
1 F -
7 F -
3 7 Neighbors 8 T 2
6 9 T 8
4
5 Pred
Mark new visited
Q = { 8, 1, 4 } → { 1, 4, 0, 9 } Neighbors.

Record in Pred
Dequeue 8. that we came
-- Place all unvisited neighbors of 8 on the queue. from 8.
-- Notice that 2 is not placed on the queue again, it has been visited!
Graph / Slide 8

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0 Neighbors
2 T -
8 3 T 1
4 T 2
source 2 9 5 F -

1 6 F -
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred
Mark new visited
Neighbors.

Q = { 1, 4, 0, 9 } → { 4, 0, 9, 3, 7 } Record in Pred
that we came
Dequeue 1.
from 1.
-- Place all unvisited neighbors of 1 on the queue.
-- Only nodes 3 and 7 haven’t been visited yet.
Graph / Slide 9

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
Neighbors
source 2 9 5 F -
6
1 F -
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred

Q = { 4, 0, 9, 3, 7 } → { 0, 9, 3, 7 }

Dequeue 4.
-- 4 has no unvisited neighbors!
Graph / Slide 10

Adjacency List Visited Table (T/F)


0 T 8
Neighbors
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 5 F -
6
1 F -
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred

Q = { 0, 9, 3, 7 } → { 9, 3, 7 }

Dequeue 0.
-- 0 has no unvisited neighbors!
Graph / Slide 11

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 5 F -
6
1 F -
7 T 1
3 7 8 T 2
6 Neighbors 9 T 8
4
5 Pred

Q = { 9, 3, 7 } → { 3, 7 }

Dequeue 9.
-- 9 has no unvisited neighbors!
Graph / Slide 12

Adjacency List Visited Table (T/F)


0 T 8
1 T
0 2
2 T -
8 3 T
Neighbors 1
4 T 2
source 2 9 5 T 3
6
1 F -
7 T 1
3 7 8 T 2
6 9 T
4 8
5
Pred
Mark new visited
Vertex 5.
Q = { 3, 7 } → { 7, 5 }
Record in Pred
Dequeue 3. that we came
-- place neighbor 5 on the queue. from 3.
Graph / Slide 13

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 5 T 3
6
1 T 7
Neighbors 7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred
Mark new visited
Vertex 6.
Q = { 7, 5 } → { 5, 6 }
Record in Pred
Dequeue 7. that we came
-- place neighbor 6 on the queue. from 7.
Graph / Slide 14

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 Neighbors 5 T 3
6
1 T 7
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred

Q = { 5, 6} → { 6 }

Dequeue 5.
-- no unvisited neighbors of 5.
Graph / Slide 15

Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 5 T 3
6
1 Neighbors T 7
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred

Q= {6}→{ }

Dequeue 6.
-- no unvisited neighbors of 6.
Graph / Slide 16

BFS Finished Adjacency List Visited Table (T/F)


0 T 8
1 T 2
0
2 T -
8 3 T 1
4 T 2
source 2 9 5 T 3
6
1 T 7
7 T 1
3 7 8 T 2
6 9 T 8
4
5 Pred

Pred now can be traced backward


Q= { } STOP!!! Q is empty!!! to report the path!
Graph / Slide 17

Path Reporting
nodes visited from
0 8
1 2
2 -
3 1
4 2
5 3
6 7
7 1
8 2
9 8

Recursive algorithm
Try some examples, report path from s to v:
Path(0) ->
Path(6) ->
Path(1) ->
The path returned is the shortest from s to v
(minimum number of edges).
Graph / Slide 18

BFS Tree
 The paths found by BFS is often drawn as a rooted
tree (called BFS tree), with the starting vertex as the
root of the tree. BFS tree for vertex s=2.

Question: What would a “level” order traversal tell you?


Graph / Slide 19

Record the Shortest Distance

d(v) = ;

d(s) = 0;

d(w)=d(v)+1;
Graph / Slide 20

Application of BFS
 One application concerns how to find
connected components in a graph

 If a graph has more than one connected


components, BFS builds a BFS-forest
(not just BFS-tree)!
 Each tree in the forest is a connected
component.

You might also like