You are on page 1of 24

Breadth First Search: an example

Adjacancy Lists:

AS = {A, C, G}
B D
AA = {B, S}
A E
AB = {A}
C
AC = {D, E, F, S}
S F AD = {C}
AE = {C, H}
G H AF = {C, G}
AG = {F, H, S}
Take S to be the source vertex.
AH = {E, G}
Breadth First Search: the algorithm

Given G(V, E) represented in terms of adjacency lists Av and a distinguished


source vertex s ∈ V , find d(v) ≡ d(s, v) for all v ∈ V .
1 Set things up:
d(v) ← ∞ for all v 6= s ∈ V
d(s) ← 0 and Q ← {s}

2 Main loop: continues until the queue is empty


While ( Q 6= ∅ ) {
Pop a vertex v off the left end of Q.

Examine each of v’s neighbours


For each w ∈ Av {
If( d(w) = ∞ ) then {
Set d(w) and get ready to process w’s neighbours
d(w) ← d(v) + 1
Push w on to the right end of Q.
}
}
}
Breadth First Search: in action

v w Action Queue
– – Start {S}

B D

A C E

0
S F

G H

Yellow vertex is the source


vertex, S.
Breadth First Search: in action

v w Action Queue
– – Start {S}
S A set d(A) = 1 {A}
B D
1
A C E

0
S F

G H

Yellow vertex is v, red is w.

Av = AS = {A, C, G}
Breadth First Search: in action

v w Action Queue
– – Start {S}
S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
1 1
A C E

0
S F

G H

Yellow vertex is v, red is w.

Av = AS = {A, C, G}
Breadth First Search: in action

v w Action Queue
– – Start {S}
S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1
A C E

0
S F
1
G H

Yellow vertex is v, red is w.

Av = AS = {A, C, G}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1
A B set d(B) = 2 {C, G, B}
A C E

0
S F
1
G H

Yellow vertex is v, red is w.

Av = AA = {B, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0
S F
1
G H

Yellow vertex is v, red is w.

Av = AA = {B, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 C D set d(D) = 2 {G, B, D}
S F
1
G H

Yellow vertex is v, red is w.

Av = AC = {D, E, F, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
1
G H

Yellow vertex is v, red is w.

Av = AC = {D, E, F, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1
G H

Yellow vertex is v, red is w.

Av = AC = {D, E, F, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 C S none {G, B, D, E, F }
G H

Yellow vertex is v, red is w.

Av = AC = {D, E, F, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }

Yellow vertex is v, red is w.

Av = AG = {F, H, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}

Yellow vertex is v, red is w.

Av = AG = {F, H, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
Yellow vertex is v, red is w.

Av = AG = {F, H, S}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
Yellow vertex is v, red is w. B A none {D, E, F, H}

Av = AB = {A}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
Yellow vertex is v, red is w. B A none {D, E, F, H}
D C none {E, F, H}
Av = AD = {C}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
Yellow vertex is v, red is w. B A none {D, E, F, H}
D C none {E, F, H}
Av = AE = {C, H} E C none {F, H}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
Yellow vertex is v, red is w. B A none {D, E, F, H}
D C none {E, F, H}
Av = AE = {C, H} E C none {F, H}
E H none {F, H}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
Yellow vertex is v, red is w. G S none {B, D, E, F, H}
B A none {D, E, F, H}
Av = AF = {C, G} D C none {E, F, H}
E C none {F, H}
E H none {F, H}
F C none {H}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
Yellow vertex is v, red is w. G S none {B, D, E, F, H}
B A none {D, E, F, H}
Av = AF = {C, G} D C none {E, F, H}
E C none {F, H}
E H none {F, H}
F C none {H}
F G none {H}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
Yellow vertex is v, red is w. G S none {B, D, E, F, H}
B A none {D, E, F, H}
Av = AH = {E, G} D C none {E, F, H}
E C none {F, H}
E H none {F, H}
F C none {H}
F G none {H}
H E none {}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
Yellow vertex is v, red is w. G S none {B, D, E, F, H}
B A none {D, E, F, H}
Av = AH = {E, G} D C none {E, F, H}
E C none {F, H}
E H none {F, H}
F C none {H}
F G none {H}
H E none {}
H G none {}
Breadth First Search: in action

v w Action Queue
– – Start {S}
2 2 S A set d(A) = 1 {A}
B D S C set d(C) = 1 {A, C}
S G set d(G) = 1 {A, C, G}
1 1 2
A B set d(B) = 2 {C, G, B}
A C E
A S none, as d(S) = 0 {C, G, B}
0 2 C D set d(D) = 2 {G, B, D}
S C E set d(E) = 2 {G, B, D, E}
F
C F set d(F ) = 2 {G, B, D, E, F }
1 2 C S none {G, B, D, E, F }
G H G F none {B, D, E, F }
G H set d(H) = 2 {B, D, E, F, H}
G S none {B, D, E, F, H}
B A none {D, E, F, H}
D C none {E, F, H}
E C none {F, H}
E H none {F, H}
F C none {H}
F G none {H}
H E none {}
H G none {}

You might also like