1 / 13

Gráfalgoritmusok

Gráfalgoritmusok. G=(V,E) gráf ábrázolása a. Szomszédsági lista ( E << V ): minden u V csúcshoz az Adj[u] tartalmazza az összes olyan v csúcsot, melyre létezik az (u,v) E él.

sylvia
Télécharger la présentation

Gráfalgoritmusok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Gráfalgoritmusok G=(V,E) gráf ábrázolása a. Szomszédsági lista (E << V): minden u V csúcshoz az Adj[u] tartalmazza az összes olyan v csúcsot, melyre létezik az (u,v) E él. Listák hosszának összege: digráfban: E  irányítatlan gráfban 2 E  b. Csúcsmátrix (szomszédsági, adjacencia mátrix): A=(aij) mérete V  V, aij értéke 1, ha (i,j) E és 0 egyébként. Szimmetrikus esetben elég a főátló és a fölötte lévő elemeket tárolni. c. Incidencia mátrix: B=(bij) mérete V  E , és (bij) értéke –1, ha a j él i-ből kivezet, 1 ha a j él i-be bevezet és 0 egyébként. ADAT-09

  2. Gráfalgoritmusok Definíció: Hálózat (súlyozott gráf) az a gráf, amelynek minden éléhez egy számot (súlyt) rendelünk hozzá. Súlyfüggvény: w: E  R, egy (u,v) él súlya w(u,v) Tárolása: a. az éllel együtt b. NIL, 0, vagy , ha az él nem létezik, egyébként a súly. ADAT-09

  3. A szélességi keresés • Adott a G=(V,E) gráf és benne egy kitüntetett s kezdőcsúcs • A szélességi keresés • G éleit vizsgálja és rátalál minden s-ből elérhető csúcsra • Kiszámítja az elérhető csúcsok legrövidebb (legkevesebb élből álló) távolságát s-től • Létrehoz egy s gyökerű „szélességi fát”, amelyben az s-ből elérhető csúcsok vannak. • A csúcsoknak szint tulajdonít (fehér, szürke, fekete)Kezdetben minden csúcs fehér, kivéve s-et, amely szürke. Szürke lesz egy csúcs, ha elértük és fekete, ha megvizsgáltuk az összes belőle kiinduló élt. • A szélességi fa kezdetben az s csúcsból áll. Ez a gyökér. • Ha egy fehér v csúcshoz értünk az u csúcsból, akkor azt felvesszük a fába (u,v) éllel,és u lesz a v szülője. • Attributumok • Szin[u] - az u csúcs színe • [u] - az u csúcs elődje • d[u] - az u távolsága s-től • Q - a szürke csúcsok sora ADAT-09

  4. A szélességi keresés ADAT-09

  5. A szélességi keresés Definíció:(s,v) jelölje a legrövidebb úthosszat s-ből v-be, ha létezik út s-ből v-be Egyébként (s,v) legyen . Lemma: Legyen G=(V,E) digráf vagy gráf és s  V tetszőleges csúcs. Ekkor bármely (u,v) E él esetén (s,v)  (s,u)+1. Lemma: Legyen G=(V,E) gráf és tegyük fel, hogy a szélességi keresés algoritmust alkalmaztuk egy s  V kezdőcsúccsal. Ekkor a szélességi keresés által kiszámított d értékek minden v  V csúcsra kielégítik a d[v]  (s,v) egyenlőtlenséget. Lemma: Tegyük fel, hogy a szélességi keresést alkalmaztuk a G=(V,E) gráfra és a futás során a Q sor a v1,…,vr csúcsokat tartalmazza. (v1 az első, vr az utolsó) Ekkor d[vr] d[v1]+1 és d[vi] d[vi+1] bármely i=1,…,r-1 értékre. Tétel: Legyen G=(V,E) gráf és tegyük fel, hogy a szélességi keresés algoritmust alkalmaztuk egy s  V kezdőcsúccsal. Ekkor a szélességi keresés minden s-ből elérhető csúcsot elér és befejezéskor d[v]= (s,v), s  V. Továbbá bármely s-ből elérhető v  s csúcsra az s-ből v-be vezető legrövidebb utak egyikét megkapjuk, ha az s-ből [v]-be vezető legrövidebb utat kiegészítjük a ([v],v) éllel. ADAT-09

  6. A szélességi keresés Definíció: G=(V,E) előd részfa, ha V={v V: [v]  NIL} {s} és E={([v],v) E: v  V \{s}} Definíció: A G előd részfa szélességi fa, ha V elemei az s-ből elérhető csúcsok és bármely v V csúcsra egyetlen egyszerű út vezet s-ből v-be G-ben Lemma: A szélességi keresés olyan  értékeket határoz meg, amelyekre a G=(V,E) előd részfa egy szélességi fa. Eljárás az s-ből v-be vezető legrövidebb út csúcsai kiírására: UTAT_NYOMTAT(G,s,v) IF v = s THEN print (s) ELSE IF [v] = NIL THEN print(„nincs út s és v között”) ELSE UTAT_NYOMTAT(G,s, [v]) print(v) ADAT-09

  7. A mélységi keresés • A mélységi keresés • G éleit vizsgálja, mindig az utoljára elért,új kivezető élekkel rendelkező v csúcsból kivezető, még nem vizsgált éleket deríti föl. Az összes ilyen él megvizsgálása után visszalép és azon csúcs éleit vizsgálja, amelyből v-t elértük. • Az összes csúcsot megvizsgálja • Kiszámítja az elérhető csúcsok legrövidebb (legkevesebb élből álló) távolságát s-től • Létrehoz egy „mélységi erdőt”, amely az előd részgráf fáiból áll. • A csúcsoknak szint tulajdonít (fehér, szürke, fekete)Kezdetben minden csúcs fehér, szürke lesz, mikor elértük, és fekete, mikor elhagytuk. • Minden csúcshoz két időpontot rendel, az elérési d[v] és az elhagyási időpontot f[v]. • Definíció: G=(V,E) előd részgráf, ha E={([v],v) E: v  V és [v] NIL} ADAT-09

  8. A mélységi keresés ADAT-09

  9. A mélységi keresés tulajdonságai Tétel: (Zárójelezés tétele) Mélységi keresést alkalmazva egy G=(V,E) (irányított, vagy iráyítatlan) gráfra a következő 3 feltétel közül pontosan 1 teljesül bármely u és v csúcsra - a [ d[u], f[u] ] és a [ d[v], f[v] ] intervallumok diszjunktak - a [ d[v], f[v] ] intervallum tartalmazza a [ d[u], f[u] ] intervallumot , és az u csúcs a v csúcs leszármazottja a mélységi fában - a [ d[u], f[u] ] intervallum tartalmazza a [ d[v], f[v] ] intervallumot , és a v csúcs az u csúcs leszármazottja a mélységi fában Következmény: (Leszármazottak intervallumainak beágyazása) A v csúcs akkor és csak akkor leszármazottja az u csúcsnak az irányított, vagy irányítatlan G gráf mélységi erdejében, ha d[u]<d[v]<f[v]<f[u]. Tétel: (Fehér út tétele) Egy G=(V,E) gráfhoz tartozó mélységi erdőben a v csúcs akkor és csak akkor leszármazottja az u csúcsnak, ha u elérésekor a d[u] időpontban a v csúcs elérhető u-ból olyan úton, amely csak fehér csúcsokat tartalmaz. ADAT-09

  10. Az élek osztályozása • A mélységi keresés révén a mélységi kereséstől függően a bemeneti gráf éleit • osztályozhatjuk. • Éltípusok: egy (u,v) él • Fa él, ha a G mélységi erdő éle. • Visszamutató él, ha v megelőzője u-nak egy mélységi fában. • Előre mutató él, ha v leszármazottja u-nak egy mélységi fában • Kereszt él, ha a fenti három osztályba nem sorolható be • Irányított gráf akkor és csak akkor körmentes, ha a mélységi keresés során nem találtunk • visszamutató éleket. • Tétel: Egy irányítatlan G gráf mélységi keresésekor bármely él vagy fa él, • vagy visszamutató él. ADAT-09

  11. Topologikus rendezés Egy irányított G=(V,E) gráf topologikus rendezése a csúcsainak sorba rendezése úgy, hogy ha G-ben szerepel az (u,v) él, akkor u előzze meg v-t a sorban Tétel: A TOPOLOGIKUS_RENDEZÉS(G) egy írányított, körmentes gráf topologikus rendezését állítja elő. ADAT-09

  12. Erősen összefüggő komponensek Definíció: A G=(V,E) gráf transzponáltja a GT=(V,ET) gráf, ha ET={(u,v):(v,u) E} Lemma: Ha két csúcs ugyanabba az erősen összefüggő komponensbe tartozik, akkor a közöttük vezető utak egyike sem hagyhatja el az erősen összefüggő komponenst ADAT-09

  13. Erősen összefüggő komponensek Tétel: Bármely mélységi keresés esetén egy erősen összefüggő komponensbe tartozó összes csúcs ugyanabba a mélységi fába kerül. Definíció: Egy u csúcs ősapja a w=(u) csúcs, ha w elérhető u-ból és a mélységi keresésben f[w] maximális Tétel: A G=(V,E) irányított gráfban bármely u V csúcs (u) ősapja megelőzője lesz u-nak G bármely mélységi keresésekor. Következmény: A G=(V,E) irányított gráf bármely mélységi keresése során minden u V csúcsra az u és (u) csúcsok ugyanahhoz az erősen összefüggő komponenshez tartoznak. Tétel: A G=(V,E) irányított gráfban az u,v V csúcsok akkor és csak akkor tartoznak ugyanahhoz az erősen összefüggő komponenshez, ha G mélységi keresésekor ugyanaz a csúcs az ősapjuk. ADAT-09

More Related