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

Breadth First Search: an example - School of Mathematicsmrm/Teaching/DiscreteMaths/Slides/B… · Breadth First Search: in action S 0 A G H C E F B D Yellow vertex is the source vertex,

Embed Size (px)

Citation preview

Breadth First Search: an example

S

A

G H

EC

F

DB

Take S to be the source vertex.

Adjacancy Lists:

AS = {A,C,G}AA = {B,S}AB = {A}AC = {D,E, F, S}AD = {C}AE = {C,H}AF = {C,G}AG = {F,H, S}AH = {E,G}

Breadth First Search: the algorithm

Given G(V,E) represented in terms of adjacency lists Av and a distinguishedsource vertex s ∈ V , find d(v) ≡ d(s, v) for all v ∈ V .

1 Set things up:d(v)←∞ for all v 6= s ∈ Vd(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 neighboursFor each w ∈ Av {

If( d(w) =∞ ) then {Set d(w) and get ready to process w’s neighboursd(w)← d(v) + 1Push w on to the right end of Q.

}}

}

Breadth First Search: in action

S

0

A

G H

EC

F

DB

Yellow vertex is the sourcevertex, S.

v w Action Queue– – Start {S}

S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AS = {A,C,G}

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

S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AS = {A,C,G}

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

S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

1

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AS = {A,C,G}

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

A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AA = {B,S}

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

A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AA = {B,S}

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

C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AC = {D,E, F, S}

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

C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AC = {D,E, F, S}

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

C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AC = {D,E, F, S}

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

C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AC = {D,E, F, S}

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

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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AG = {F,H, S}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AG = {F,H, S}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AG = {F,H, S}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AB = {A}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AD = {C}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AE = {C,H}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AE = {C,H}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AF = {C,G}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AF = {C,G}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AH = {E,G}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

Yellow vertex is v, red is w.

Av = AH = {E,G}

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}

Breadth First Search: in action

S

0

1 1

2

2

2

2

1

2

A

G H

EC

F

DB

v w Action Queue– – Start {S}S A set d(A) = 1 {A}S C set d(C) = 1 {A,C}S G set d(G) = 1 {A,C,G}A B set d(B) = 2 {C,G,B}A S none, as d(S) = 0 {C,G,B}C D set d(D) = 2 {G,B,D}C E set d(E) = 2 {G,B,D,E}C F set d(F ) = 2 {G,B,D,E, F}C S none {G,B,D,E, F}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 {}