Lecture 24 - Graph Traversals
Lecture 24 - Graph Traversals
24-Graph Traversal 1
Graph Traversal
24-Graph Traversal 2
Breadth-First Search
1:create a queue Q
2:mark v as visited and put v into Q
3:while Q is non-empty
4: remove the head u of Q (Dequeue)
5: mark and enqueue all (unvisited) neighbors of u
24-Graph Traversal 3
Breadth-First Search – Example
2 4 8
s 5 7
3 6 9
Queue (Q):
Undiscovered
Discovered
Top of queue
1: Create a Queue Q
Finished
24-Graph Traversal 4
Breadth-First Search – Example
2 4 8
0 S 5 7
3 6 9
Queue (Q):
Undiscovered
S
Discovered
Top of queue
2: Mark S as visited and put S into Q
Finished
24-Graph Traversal 5
Breadth-First Search – Example
2 4 8
0 S 55 7
33 6 9
Queue (Q):
Undiscovered
S
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., S)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 6
Breadth-First Search – Example
2 4 8
0 S 55 7
33 6 9
Queue (Q):
Undiscovered
235
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 2)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 7
Breadth-First Search – Example
2 44 8
0 S 5 already discovered:
55 7
don't enqueue
33 6 9
Queue (Q):
Undiscovered
235
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 2)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 8
Breadth-First Search – Example
2 44 8
0 S 5 already discovered:
55 7
don't enqueue
33 6 9
Queue (Q):
Undiscovered
235
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 2)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 9
Breadth-First Search – Example
2 44 8
0 S 55 7
33 6 9
Queue (Q):
Undiscovered
354
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 3)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 10
Breadth-First Search – Example
2 44 8
0 S 5 already discovered:
55 7
don't enqueue
33 66 9
Queue (Q):
Undiscovered
354
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 3)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 11
Breadth-First Search – Example
2 44 8
0 S 5 already discovered:
55 7
don't enqueue
33 66 9
Queue (Q):
Undiscovered
354
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 3)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 12
Breadth-First Search – Example
2 44 8
0 S 55 7
33 66 9
Queue (Q):
Undiscovered
546
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 5)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 13
Breadth-First Search – Example
2 44 8
0 S 55 7
6 already discovered:
33 66 9
don't enqueue
Queue (Q):
Undiscovered
546
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 5)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 14
Breadth-First Search – Example
2 44 8
0 S 55 7
33 66 9
Queue (Q):
Undiscovered
46
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 4)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 15
Breadth-First Search – Example
2 44 88
0 S 5 already discovered:
55 7
don't enqueue
33 66 9
Queue (Q):
Undiscovered
46
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 4)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 16
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 9
Queue (Q):
Undiscovered
68
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 6)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 17
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Queue (Q):
Undiscovered
68
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 6)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 18
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Queue (Q):
Undiscovered
879
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 8)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 19
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Queue (Q):
Undiscovered
79
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 7)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 20
Breadth-First Search – Example
2 44 88
4, 5, 8 already
0 S 55 7
discovered.
33 66 99
Queue (Q):
Undiscovered
79
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 7)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 21
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Queue (Q):
Undiscovered
9
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 9)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 22
Breadth-First Search – Example
2 44 88
0 S 55 7
7 & 8 already
33 66 99
discovered.
Queue (Q):
Undiscovered
9
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., 9)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 23
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Queue (Q):
Undiscovered
Discovered
Top of queue 3: While Q not empty
4: v = dequeue Q (i.e., NULL)
Finished 5: mark & enqueue all (unvisited) neighbors of v
24-Graph Traversal 24
Breadth-First Search – Example
2 44 88
0 S 55 7
33 66 99
Breadth-First Search (BFS) tree rooted at S containing all nodes of the graph
24-Graph Traversal 25
Breadth-First Search – Properties
• Given a graph G=(V,E) and source vertex S, the following holds
for the BFS algorithm
24-Graph Traversal 26
Depth-First Search – Trees
24-Graph Traversal 27
Depth-First Search
D E
Undiscovered
Marked
Active
Finished 24-Graph Traversal 29
Depth-First Search – Example Adjacency List
A: FCBG
AA B: A
C: A
D: FE
E: GFD
F: AED
B C G
G: EA
D E
Undiscovered
Marked
Active
Finished 24-Graph Traversal 30
Depth-First Search – Example Adjacency List
A: FCBG
AA B: A
C: A
D: FE
E: GFD
F: AED
B C G
G: EA
D E
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 31
Depth-First Search – Example Adjacency List
A: FCBG
AA B: A
C: A
D: FE
E: GFD
F: AED
B C G
G: EA
D E
F newly
discovered
F
F
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 32
Depth-First Search – Example Adjacency List
A: FCBG
AA B: A
C: A
D: FE
A already E: GFD
marked F: AED
B C G
G: EA
D E
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 33
Depth-First Search – Example Adjacency List
A: FCBG
AA B: A
C: A
D: FE
E: GFD
F: AED
B C G
G: EA
D E E newly
discovered
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 34
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C G G: EA
visit(E)
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 35
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
G newly D: FE
discovered E: GFD
F: AED
B C GG G: EA
visit(E)
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 36
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
visit(G) G: EA
B C GG
(G, E) (G, A)
visit(E)
D E
E (E, G) (E, F) (E, D)
E already visit(F)
FF marked (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 37
Adjacency List
Depth-First Search – Example A: FCBG
B: A
A already C: A
AA
marked D: FE
E: GFD
F: AED
visit(G) G: EA
B C GG
(G, E) (G, A)
visit(E)
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 38
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA Finished G C: A
Pop G D: FE
E: GFD
F: AED
visit(G) G: EA
B C GG
(G, E) (G, A)
visit(E)
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 39
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C GG G: EA
visit(E)
D E
E (E, G) (E, F) (E, D)
visit(F)
FF F already
(F, A) (F, E) (F, D)
marked
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 40
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C GG G: EA
visit(E)
D newly
discovered
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 41
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
visit(D) F: AED
(D, F) (D, E) G: EA
B C GG
visit(E)
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 42
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
visit(D) F: AED
(D, F) (D, E) G: EA
B C GG
visit(E)
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF F already
(F, A) (F, E) (F, D)
marked
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 43
Adjacency List
Depth-First Search – Example A: FCBG
B: A
Finished D
AA C: A
Pop D
D: FE
E: GFD
visit(D) F: AED
(D, F) (D, E) G: EA
B C GG
visit(E)
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF E already
(F, A) (F, E) (F, D)
marked
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 44
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C GG G: EA
visit(E)
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 45
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
Finished E E: GFD
Pop E F: AED
B C GG G: EA
visit(E)
D
D E
E (E, G) (E, F) (E, D)
visit(F)
FF (F, A) (F, E) (F, D)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 46
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C GG G: EA
Finished F
Pop F
D
D E
E
visit(F)
FF D already
(F, A) (F, E) (F, D)
marked
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 47
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
C newly G: EA
discovered B C GG
D
D E
E
FF
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 48
Adjacency List
Depth-First Search – Example A: FCBG
B: A
A already
AA C: A
marked
D: FE
E: GFD
F: AED
B C
C GG G: EA
D
D E
E
visit(C)
FF (C, A)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 49
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C
C GG G: EA
Finished C
Pop C
D
D E
E
visit(C)
FF (C, A)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 50
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B C
C GG G: EA
D
D E
E
FF
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 51
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
B newly G: EA
discovered BB C
C GG
D
D E
E
FF
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 52
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
A already F: AED
marked
BB C
C GG G: EA
Finished B
Pop B
D
D E
E
visit(B)
FF
(B, A)
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 53
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
BB C
C GG G: EA
D
D E
E
FF
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 54
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
G already D: FE
marked E: GFD
F: AED
BB C
C GG G: EA
D
D E
E
Finished A
Pop A
FF
Undiscovered visit(A)
Marked (A, F) (A, C) (A, B) (A, G)
Active Stack
Finished 24-Graph Traversal 55
Adjacency List
Depth-First Search – Example A: FCBG
B: A
AA C: A
D: FE
E: GFD
F: AED
BB C
C GG G: EA
D
D E
E
FF
Undiscovered
Marked
Active
Finished 24-Graph Traversal 56
BFS vs. DFS
24-Graph Traversal 57
Applications of Graph Traversal
24-Graph Traversal 58
Any Question So Far?
24-Graph Traversal 59