Upload
heidi
View
32
Download
0
Embed Size (px)
DESCRIPTION
SzB (G,p). Gráf szélességi bejárása. Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak:. A gráfnak megfelelő fa:. Az algoritmus kiinduló állapota. Kezdetben minden csúcs fehér, kivéve a p csúcsot, amelyik szürke A Q sorban is kezdetben csak a p csúcs van. - PowerPoint PPT Presentation
Citation preview
Gráf szélességi bejárása SzB(G,p)
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
szülőjét Nil-re állítja.távolságát -1 -re,Az algoritmus minden p-től különböző u csúcs színét fehérre,
A kiinduló p csúcs színét szürkére változtatjuk, mert ezt elértnek tekintjük az eljárás kezdetekor.
for
∀ u ϵ V[G]-{p}
Szín[p] = Szürke
szin[u] = Fehér
d[u] = -1
P[u] = Nil
Kiválaszjuk Q sorból az első szürke csúcsot u-t és el is távolítjuk a sorból.Főciklus. A ciklus akkor fejeződik be ha elfogynak a szürke sorok.
Q sort inicializáljuk úgy, hogy abbancsak p legyen
A kezdő sor elődjét Nil-nek választjuk.d[p] értékét nullázzuk.
Ha a a szomszédsági listában szereplő összes csúcsot megvizsgáltuk, akkor u csúcsot feketére színezzük.
Skip
Szín[u] = Fekete
Szín[v] = Fehér
végül a Q sor végéhez fűzi a csúcsot.aztán feljegyzi, hogy u a csúcs szülőjea d[v] távolságot állítja d[u]+1-reElőször átszínezi a csúcsot szürkére, majd
Ez a for ciklus megvizsgálja az u szomszédsági listában található összes v csúcsot.Ha v fehér, azaz még nem értük el akkor az algoritmus eléri az igaz ágban.
for v ϵ Adj[u]
P[p] = nil
d[p] = 0
ÜresSor(Q)Sorba(Q,p)
!Üres(Q)
Sorból(Q)
Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak:
A gráfnak megfelelő fa:
Az algoritmus kiinduló állapota• Kezdetben minden csúcs fehér, kivéve a p
csúcsot, amelyik szürke• A Q sorban is kezdetben csak a p csúcs
van.• A kezdőcsúcstól való távolság (d[p] értéke)
mindenhol -1 kivéve a kezdőcsúcsot.
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
P[p] = nil
d[p] = 0
ÜresSor(Q)Sorba(Q,p)
!Üres(Q)
Sorból(Q)
Skip
Szín[u] = Fekete
Szín[v] = Fehérfor v ϵ Adj[u]
for
∀ u ϵ V[G]-{p}
Szín[p] = Szürke
szin[u] = Fehér
d[u] = -1
P[u] = Nil
Q: p
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
for v ϵ Adj[u]Szín[v] = Fehér
Skip
Ciklusfeltétel teljesül, Q sor nem üres; belépés a főciklusba.
Q: p
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
for v ϵ Adj[u]Szín[v] = Fehér
Skip
Szín[u] = Fekete
Első elem (p) kivétele a sorból.
Q:
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[v] = Fehér
Skip
Szín[u] = Fekete
A belső for ciklus megvizsgálja a p-hez tartozó szomszédsági lista (Adj[p]) első elemét q-t.Ciklusfeltétel teljesül, belépés a ciklusba
Adj[p]: q r
Q:
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[q] = Fehér
Skip
Szín[u] = Fekete
Mivel q csúcs még fehér, ezért az igaz ág hajtódik végre.
Adj[p]: q r
Q:
Az algoritmus működés közben:
Szín[q] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[q] = Fehér
Skip
q csúcs legyen szürkeAdj[p]: q r
Q:
Az algoritmus működés közben:
Szín[q] = Szürke
d[q] = 0 + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[q] = Fehér
Skip
Szín[u] = Fekete
d[q] távolság átállítása d[p]+1 = 1-re
Adj[p]: q r
Q:
Az algoritmus működés közben:
Szín[q] = Szürke
d[q] = 0 + 1
P[q] = p
Sorba(Q,v)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[q] = Fehér
Skip
Annak följegyzése, hogy q csúcs szülőpointere: p
Adj[p]: q r
Q:
Az algoritmus működés közben:
Szín[q] = Szürke
d[q] = 0 + 1
P[q] = u
Sorba(Q,q)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
q ϵ Adj[p]
Szín[q] = Fehér
Skip
Az aktuális q csúcsot hozzáfűzi a sorhoz.
Adj[p]: q r
Q: q
Az algoritmus működés közben:
Szín[q] = Szürke
d[q] = 0 + 1
P[q] = u
Sorba(Q,q)
!Üres(Q)
Sorból(Q)
r ϵ Adj[p]
Szín[q] = Fehér
Skip
Szín[u] = Fekete
A belső for ciklus megvizsgálja a p-hez tartozó szomszédsági lista (Adj[p]) második elemét r-t.Ciklusfeltétel teljesül, belépés a ciklusba.
Adj[p]: q r
Q: q
Az algoritmus működés közben:
Szín[q] = Szürke
d[q] = 0 + 1
P[q] = u
Sorba(Q,q)
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Szín[u] = Fekete
Mivel r csúcs még fehér, ezért az igaz ág hajtódik végre.
Adj[p]: q r
Q: q
Szín[r] = Szürke
d[q] = 0 + 1
P[q] = u
Sorba(Q,q)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Az algoritmus működés közben:r csúcs legyen szürkeAdj[p]: q r
Q: q
Az algoritmus működés közben:
Szín[r] = Szürke
d[r] = 0 + 1
P[q] = u
Sorba(Q,q)
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Szín[u] = Fekete
Az algoritmus működés közben:d[r] távolság átállítása d[p]+1 = 1-re
Adj[p]: q r
Q: q
Az algoritmus működés közben:Az algoritmus működés közben:
Szín[r] = Szürke
d[r] = 0 + 1
P[r] = u
Sorba(Q,q)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Annak följegyzése, hogy r csúcs szülőpointere: p
Adj[p]: q r
Q: q
Az algoritmus működés közben:
Szín[r] = Szürke
d[r] = 0 + 1
P[r] = u
Sorba(Q,r)
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Szín[u] = Fekete
Adj[p]: q r Az aktuális r csúcsot hozzáfűzi a sorhoz.
Q: q r
Az algoritmus működés közben:
Szín[r] = Szürke
d[r] = 0 + 1
P[r] = u
Sorba(Q,r)
!Üres(Q)
Sorból(Q)
r ϵ Adj[u]
Szín[r] = Fehér
Skip
Szín[p] = Fekete
Adj[p]: q r A belső for ciklus végigment a p-hez tartozó szomszédsági listán, p csúcsot feketére állítja.
Q: q r
Az algoritmus működés közben:Ciklusfeltétel teljesül, Q sor nem üres; belépés a főciklusba.
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
for v ϵ Adj[u]Szín[v] = Fehér
Skip
Q: q r
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
for v ϵ Adj[u]Szín[v] = Fehér
Skip
Szín[u] = Fekete
Első elem (q) kivétele a sorból.
Q: r
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)Szín[u] = Fekete
!Üres(Q)
Sorból(Q)
s ϵ Adj[q]
Szín[v] = Fehér
Skip
A belső for ciklus megvizsgálja a q-hoz tartozó szomszédsági lista (Adj[q]) első elemét s-t.Ciklusfeltétel teljesül, belépés a ciklusba
Adj[q]: s t u x
Q: r
Az algoritmus működés közben:Adj[q]: s t u x A belső ciklus lefutása utáni
állapot.A szomszédsági lista összes eleme bekerült Q-ba és színük szürkére lett állítva
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)
!Üres(Q)
Sorból(Q)
s ϵ Adj[q]
Szín[v] = Fehér
Skip
Szín[u] = Fekete
Q: r s t u x
Az algoritmus működés közben:
Szín[v] = Szürke
d[v] = d[u] + 1
P[v] = u
Sorba(Q,v)Szín[q] = Fekete
!Üres(Q)
Sorból(Q)
s ϵ Adj[q]
Szín[v] = Fehér
Skip
Q: r s t u x
Q csúcs átszínezése feketéreAdj[q]: s t u x
Az algoritmus működés közben:Q: s t u x y
Adj[r]: x y
Az algoritmus működés közben:Q: t u x y
Adj[s]:
Az algoritmus működés közben:Q: u x y v
Adj[t]: v
Az algoritmus működés közben:Q: x y v
Adj[u]: v
Az algoritmus működés közben:Q: y v
Adj[x]:
Az algoritmus működés közben:Q: v
Adj[y]:
Az algoritmus működés közben:Q: w
Adj[v]: w
Az algoritmus működés közben:Q:
Adj[w]: