gráfok 4. előadás
TRANSCRIPT
Gráfok
4. előadás
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Körmentes-e egy irányított gráf?
Alapötlet: Ha a bejárás során nincs visszamutató él, akkor a gráf körmentes.
Körmentes?(p):
km:=igaz; Honnan(p):=p
Mélységi bejárás(p,km)
Körmentes?:=km
Eljárás vége.
Feltétel: erősen összefüggő vagy összefüggő (a példában) az 1. pontból. Az előremutató
és a kereszt-élek nem okoznak kört(fekete pontba vezetnek).
Szlávi Péter, Zsakó László: Gráfok IV. 2/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Mélységi bejárás(p,km):
Szín(p):=szürke
Ciklus iKi(p)
Ha Szín(i)=fehér
akkor Ha km akkor Mélységi bejárás(i,km)
különben Ha szín(i)=szürke akkor km:=hamis
Ciklus vége
Szín(p):=fekete
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 3/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Körmentes-e egy irányítatlan összefüggő gráf?
Alapötlet: Ha a bejárás során nincs visszamutató él, akkor a gráf körmentes.
Körmentes?(p):
km:=igaz; Honnan(1):=1
Mélységi bejárás(1,km)
Körmentes?:=km
Eljárás vége.
Itt előremutató él és kereszt-él nincs.
Szlávi Péter, Zsakó László: Gráfok IV. 4/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
A szülőbe vezető él nem visszamutató!
Kell a Honnan vektor!
Mélységi bejárás(p,km):
Szín(p):=szürke
Ciklus iKi(p)
Ha Szín(i)=fehér
akkor Ha km akkor Honnan(i):=p
Mélységi bejárás(i,km)
különben Ha szín(i)=szürke és Honnan(p)≠i
akkor km:=hamis
Ciklus vége
Szín(p):=fekete
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 5/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Topologikus rendezés
Alapötlet: Egy irányított gráf mélységi bejárásakor az elhagyási idők szerinti sorrend pontosan a topologikus sorrend ellentettje – elhagyáskor tegyük a pontokat egy verembe!
Topologikus rendezés(p):
Mélységi bejárás_v(p)
Veremkiírás
Függvény vége.1
27
36
45
Szlávi Péter, Zsakó László: Gráfok IV. 6/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Pontok osztályozása:
u őse v-nek a mélységi feszítőfában Elér(u)<Elér(v)<Elhagy(v)<Elhagy(u).
u és v különböző ágon van a mélységi feszítőfában Elér(u)>Elhagy(v) vagy Elér(v)>Elhagy(u).
Szlávi Péter, Zsakó László: Gráfok IV. 7/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Mélységi bejárás_v(p):
Szín(p):=szürke
Ciklus iKi(p)
Ha Szín(i)=fehér akkor Mélységi bejárás_v(i)
Ciklus vége
Szín(p):=fekete; Verembe(p)
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 8/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Erősen összefüggő komponensek
Erősen összefüggő komponens: bármely pontjából bármely másik pontjába vezet út.
Két erősen összefüggő komponens között csak egyirányú kapcsolat lehet.
Ha minden él irányát megfordítjuk, az az erősen összefüggő komponenseken nem változtat.
Szlávi Péter, Zsakó László: Gráfok IV. 9/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Erősen összefüggő komponensek
Járjuk be a gráfot mélységi bejárással, elhagyási időket számolva!
Állítsuk elő a gráf fordítottját!
Járjuk be a fordított gráfot, a kezdőpontokat mindig az eredeti elhagyási idő szerint fordított sorrendben véve!
Minden ilyen bejárás egy erősen összefüggő komponenst ad meg – ami kimaradt, azokra újabb bejárások.
Szlávi Péter, Zsakó László: Gráfok IV. 10/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Erősen összefüggő komponensek
Körben levő pontok az élek megfordítása után is körben maradnak.
Fában levő pontokból elhagyási idő szerinti fordított sorrendben nem
vezet ki új él.
Szlávi Péter, Zsakó László: Gráfok IV. 11/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 9:31
Erősen összefüggő komponensek(Db,K):
Szín():=(fehér,…,fehér); Db:=0
Ciklus i=1-től Pontszám-ig
Ha Szín(i)=fehér akkor Mélységi bejárás_v(i)
Ciklus vége
Élfordítás; Szín(1..Pontszám):=fehér
Ciklus i=1-től Pontszám-ig
Veremből(p)
Ha Szín(p)=fehér akkor Db:=Db+1; K(Db):=p
Mélységi bejárás(p,Db)
Ciklus vége
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 12/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Mélységi bejárás_v(p,Db):
Szín(p):=szürke; Komponens(p):=Db
Ciklus iKi(p)
Ha Szín(i)=fehér akkor Mélységi bejárás_v(i)
Ciklus vége
Szín(p):=fekete; Verembe(p)
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 13/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Elvágó élek irányítatlan gráfban
Alapötlet: Egy (u,v) él akkor és csak akkor elvágó él, ha a mélységi feszítőfában a v pontból, valamint a v ponttól lefelé levő pontok közül legmagasabbra legfeljebb a v-ig van visszamutató él.
Jelölje l(v) a v gyökerű részfa legmagasabbra vezető éle elérési idejét, D(v) a v pont elérési idejét!
Megjegyzés: l(v)≤D(v).
nekvgyerekeyhaylmin
éltóvisszamutax,vhaxDmin
vD
minvl
Szlávi Péter, Zsakó László: Gráfok IV. 14/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Elvágó élek irányítatlan gráfban
Az ábrán a pontoktól balra a D(), jobbra az l() értékek.
nekvgyerekeyhaylmin
éltóvisszamutax,vhaxDmin
vD
minvl
Szlávi Péter, Zsakó László: Gráfok IV.
1
3 4
2
7
56
8
0
1 11
2
3 4
65 3
3
33
0
0 0
15/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
A (p,i) akkor elvágó él, ha az i gyökerű
részfából nem vezet vissza i fölé él.
Mélységi bejárás(p):
Szín(p):=szürke; idő:=idő+1; D(p):=idő; l(p):=D(p)
Ciklus iKi(p)
Ha Szín(i)=fehér
akkor Táv(i):=Táv(p)+1; Mélységi bejárás(i)
Ha l(i)<l(p) akkor l(p):=l(i)
különben ha Szin(i)=szürke és Táv(i)<Táv(p)-1
akkor Ha l(p)>D(i) akkor l(p):=D(i)
Ha l(i)=D(i) akkor Sorba(p,i)
Ciklus vége
Szín(p):=fekete
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 16/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Elvágó pontok
Alapötlet:
A gyökér elvágó pont, ha a mélységi feszítőfában legalább 2 gyereke van. Egy u pont akkor elvágó pont, ha legalább egy gyerekéből nem vezet élu fölé (azaz (u,v) él, amire: l(v)≥D(u))
Ha lenne (8,10) él, a 2 akkor is elvágó
pont lenne.
Szlávi Péter, Zsakó László: Gráfok IV.
1
3 4
7
56
8
0
1 11
2
3 4
65 5
3
33
0
0 0
9
2
1
101313
1
17/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Mélységi bejárás(p):Szín(p):=szürke; idő:=idő+1; D(p):=idől(p):=D(p); van:=hamis; db:=0Ciklus iKi(p)
Ha Szín(i)=fehérakkor Szín(i):=szürke
Mélységi bejárás(i); db:=db+1Ha l(i)<l(p) akkor l(p):=l(i)
különben ha Szin(i)=szürke és D(i)<D(p)-1akkor Ha D(i)<l(p) akkor l(p):=D(i)
Ha l(i)≥D(p) akkor van:=igazCiklus végeSzín(p):=feketeHa van vagy D(p)=1 és db>1 akkor Sorba(p)
Eljárás vége.
Legalább 1 ág leszakad, vagy a gyökér-
nek legalább 2 részfája van.Szlávi Péter, Zsakó László: Gráfok IV. 18/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Euler séta
Olyan út, amely az A pontból a B pontba vezet és a gráf minden élén pontosan egyszer halad át.
Csak olyan gráfra van Euler séta, amelyben A és B foka páratlan, a többi ponté pedig páros. Ha a gráf ilyen, akkor biztosan van Euler séta!
Megjegyzés: Euler körről beszélünk A=B, ekkor A foka is páros.
Szlávi Péter, Zsakó László: Gráfok IV. 19/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Keressünk egy utat A-ból B-be!
A kimaradó élek biztos olyan utakon vannak, amelyek az (A,B) út adott pontjából indulnak és oda is érkeznek.
A mélységi bejáráskor engedjük meg korábbi pontok újabb elérését – nem kellenek a színek!
A mélységi bejárás során ugyanazt az élt kétszer nem használhatjuk – előre haladáskor töröljük az éleket!
Szlávi Péter, Zsakó László: Gráfok IV. 20/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Mélységi bejárás(p):
Ciklus iKi(p)
Éltörlés(p,i); Mélységi bejárás(i)
Ciklus vége
Verembe(p)
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 21/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Pontszám/2 él esetén is van megoldás, de
lényegesen bonyolultabb.
Hamilton kör, út
A minden ponton pontosan egyszer átmenő út (kör) NP teljes feladat, azaz hatékonyan nem oldható meg.
Ha mindenhonnan van pontszám*2/3 él, akkor viszont van rá egyszerű megoldás:
A pontok számának kétharmadáig biztosan van olyan él, ami újabb pontba vezet.
Ezután vagy van él további pontba, vagy minden él a már bejárt pontokba vezet. De ekkor létezni kell két szomszédos pontnak, amelyik mindegyikébe vezet él, azaz az új pont beszúrható közéjük!
Szlávi Péter, Zsakó László: Gráfok IV. 22/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Dominátor halmaz
Minimális számú pontot tartalmazó halmaz, amelyből a gráf összes pontja elérhető.
Rendezzük a pontokat elhagyási idő szerint csökkenő sorrendbe!
Ekkor, ha van él i-ből j-be, de nincs j-ből i-be, akkor az i előbb lesz, mint a j (azaz j nem lehet dominátor halmazbeli)!
Ha mindkét irányú él van, akkor havalamelyik dominátor halmazbeli, akkor bármelyik lehet.
Szlávi Péter, Zsakó László: Gráfok IV.
2
3 4
1
7
5
6
9,10
1,8
11,14
2,7
5,6
3,4
12,13
8 9
10
15,20
17,18
16,19
23/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Dominátor:
Szín(1..Pontszám):=fehér
Ciklus i=1-től Pontszám-ig
Ha Szín(i)=fehér akkor Bejárás_v(i)
Ciklus vége
db:=0
Ciklus i=1-től Pontszám-ig
Veremből(j)
ha Szín(j)=fekete akkor db:=db+1; D(db):=j
Bejárás_p(j)
Ciklus vége
Függvény vége.
Szlávi Péter, Zsakó László: Gráfok IV. 24/26
Mélységi bejárás alkalmazásai
2020. 09. 29. 8:03
Bejárás_v(p):
Szín(p):=szürke
Ciklus iKi(p)Ha Szín(i)=fehér akkor Bejárás_v(i)
Ciklus vége
Szín(p):=fekete; Verembe(p)
Eljárás vége.
Bejárás_p(p):
Szín(p):=piros
Ciklus iKi(p)Ha Szín(i)=fekete akkor Bejárás_p(i)
Ciklus vége
Eljárás vége.
Szlávi Péter, Zsakó László: Gráfok IV. 25/26
Gráfok
4. előadás vége