Przykªad przebiegu
algorytmu BFS
Autor projektu: dr Andrzej Mróz (UMK)
Projekt pn. Wzmocnienie potencjaªu dydaktycznego UMK w Toruniu w dziedzinach matematyczno-przyrodniczych realizowany w ramach Poddziaªania 4.1.1 Programu Operacyjnego
Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 ∞ 3 ∞ 4 ∞ 5 ∞ 6 ∞
@
@
@
@
v
f
1v
f
2v
f
3v
f
4 5v
f
v
f
6 Q:Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 ∞ 3 ∞ 4 ∞ 5 ∞ 6 ∞
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q:Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 ∞ 3 ∞ 4 ∞
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 ∞ 4 ∞ 5 ∞ 6 ∞
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q: 1 2Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 ∞ 4 ∞
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 ∞ 4 1 5 1 6 ∞
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q: 1 2 5 4Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 ∞ 4 1
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 ∞ 4 1 5 1 6 ∞
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q: 5 4Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1 5 1 6 5
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q: 5 4 3 6Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1 5 1 6 5
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q: 3 6Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1
@
@
v
f
1v
f
2v
f
3Przeszukiwanie grafu wszerz (od u = 1)
BFS-Visit(G, s) 1 begin 2 kolor(s) := szary; 3 Q := {s}; 4 whileQ <> ∅ do begin 5 u := Head(Q); 6 forka»dy v ∈ Adj[u]do7 ifkolor(v) = biaªythen begin
8 kolor(v) := szary; 9 π[v] := u; 10 Enqueue(Q, v) 11 end; 12 Dequeue(Q); 13 kolor(u) := czarny 14 end 15 end w π[w] 1 ∞ 2 1 3 5 4 1 5 1 6 5
@
@
@
v
f
1v
f
2v
f
3v
f
5v
f
v
f
Q:Odczytanie dróg
Po wykonaniu BFS-Visit(G, s) w wektorze π zakodowane s¡
najkrótsze drogi z wierzchoªka ¹ródªowego s do wszystkich
wierzchoªków w osi¡galnych z s. W naszym przykªadzie s = 1:
w π[w] 1 ∞ 2 1 3 5 4 1 5 1 6 5