INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

A Floyd-Warshall algoritmus
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
KÉSZÍTETTE: Takács Sándor
GRÁFELMÉLET Alapfogalmak 2..
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Illeszkedési mátrix Villamosságtani szempontból legfontosabb mátrixreprezentáció. Legyen G egy irányított gráf, n ponton e éllel. Az n x e –es B(G) mátrixot.
Illés Tibor – Hálózati folyamok
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
INFOÉRA Dinamikus programozás (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések.
Minimális költségű feszítőfák
Erősen összefüggő komponensek meghatározása
DAG topologikus rendezése
Gráfok szélességi bejárása
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
AVL fák.
Fák, bináris fák INFOÉRA Ez így 60 perc.
1. Univerzális nyelő Csúcsmátrixos ábrázolás esetén a legtöbb gráfalgoritmus futási ideje O(n2) azonban van kivétel. Egy irányított gráf egy csúcsa univerzális.
DAG topologikus rendezés
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Készítette: Kosztyán Zsolt Tibor
Gráfok Készítette: Dr. Ábrahám István.
Gráf szélességi bejárása
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
A Dijkstra algoritmus.
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR. MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Nevezetes algoritmusok: Fa megvalósítása Készítette: Várkonyi Tibor Zoltán.
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Kruskal-algoritmus.
INFOÉRA Gráfok, gráfalgoritmusok I. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Feladat  Szélességi bejárás módszerrel menjünk végig egy tetszőleges gráfon.  Kikötés: A gráf egyszerű, azaz hurok- és többszörös.
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Útkeresések.
Projektmenedzsment gráf általában súlyozott irányított
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Algoritmusok és adatszerkezetek
Készítette : Giligor Dávid Neptun : HSYGGS
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Gráf Szélességi bejárás Készítette: Giligor Dávid Neptun : HSYGGS.
Algoritmus DAG = irányított körmentes gráf. Először ezt a tulajdonságot ellenőrizzük (mélységi bejárással), aztán rendezzük: Q: Sor adatszerkezet, kezdetben.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozás II. Gráfok Dijkstra algoritmus Kruskal algoritmus.
Kvantitatív módszerek
Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest június 30.
A Dijkstra algoritmus.
Gráfok szélességi bejárása Dijkstra algoritmus
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) IDE KELL: prioritási sor kupaccal. Juhász.
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Gráfok 4. Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések a ELTE-n

Gráfok bejárása Gráfbejárás: Demonstrálás színekkel: INFOÉRA 2006 2006.11.18 Gráfok bejárása Gráfbejárás: kiindulunk egy tetszőleges pontból, éleken haladva eljutunk az összes ponthoz. Demonstrálás színekkel: Fehér pontok: ahova még nem jutottunk el. Szürkék: ahova már eljutottunk, de még „dolog van vele”. Feketék: ahova már eljutottunk, s minden belőlük kivezető élt is megvizsgáltunk. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2

Gráfok bejárása Demonstrálás színekkel: INFOÉRA 2006 2006.11.18 Gráfok bejárása Demonstrálás színekkel: A gráfbejárás kiinduló állapotában egyetlen pont szürke, az összes többi pedig fehér. A végállapotban minden pont fekete (ha elérhető a kezdőpontból). A színekkel tehát a pontok halmazát három részhalmazra bontottuk. A gráfbejárás pontokat sorol át egyik részhalmazból egy másik részhalmazba. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3

INFOÉRA 2006 2006.11.18 Mélységi bejárás Mélységi bejárás: Adatszerkezet, amiből a legutoljára bekerült lép ki először – verem. Tároljuk a szürke pontokat egy veremben! Van még feldolgozatlan pont = van még szürke pont = nem üres a verem! A bejárás egy feszítőfát hoz létre (mélységi feszítőfa). A verem megtakarítható rekurzióval. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4

Mélységi bejárás Bejárás csúcsmátrix esetén. Futási idő: O(Pontszám2) INFOÉRA 2006 2006.11.18 Mélységi bejárás Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) és Szín(i)=fehér akkor Mélységi bejárás(i) Ciklus vége Szín(p):=fekete Eljárás vége. Mélységi bejárás indítása(p): Szín:=(fehér,…,fehér); Mélységi bejárás(p) Bejárás csúcsmátrix esetén. Futási idő: O(Pontszám2) Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

Mélységi bejárás Bejárás csúcslista esetén. Futási idő: O(Élszám) INFOÉRA 2006 2006.11.18 Mélységi bejárás Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig Ha Szín(Szomszéd(p,i))=fehér akkor Mélységi bejárás(Szomszéd(p,i)) Ciklus vége Szín(p):=fekete Eljárás vége. Mélységi bejárás indítása(p): Szín:=(fehér,…,fehér); Mélységi bejárás(p) Bejárás csúcslista esetén. Futási idő: O(Élszám) Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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(1):=1 Mélységi bejárás(1,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). Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás(p,km): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Ha km akkor Honnan(j):=p Mélységi bejárás(j,km) különben Ha szín(j)=szürke akkor km:=hamis Ciklus vége Szín(p):=fekete Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:362018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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. Gráfok, gráfalgoritmusok 2018.06.18. 11:362018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás(p,km): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Ha km akkor Honnan(j):=p Mélységi bejárás(j,km) különben Ha szín(j)=szürke és Honnan(p)≠j akkor km:=hamis Ciklus vége Szín(p):=fekete Eljárás vége. A szülőbe vezető él nem visszamutató! Gráfok, gráfalgoritmusok 2018.06.18. 11:362018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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(p) Veremkiírás Függvény vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Mélységi bejárás(j) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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. Egyik irányú él a komponensek között Másik irányú él a komponensek között Nincs él a komponensek között Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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ás1(i) Ciklus vége Élfordítás Veremből(p) Ha Szín(p)=fehér akkor Mélységi bejárás(p) Db:=Db+1; K(Db):=p Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás1(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Mélységi bejárás1(j) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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 leg-feljebb a v-ig van visszamutató él. Jelölje l(v) a v gyökerű részfa legmagasabbra vezető éle elérési idejét! Megjegyzés: l(v)≤D(v). Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Elvágó élek irányítatlan gráfban Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke; idő:=idő+1; D(p):=idő; l(p):=D(p) Ciklus iKi(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. A (p,i) akkor elvágó él, ha az i gyökerű részfából nem vezet vissza i fölé él. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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 él u fölé (azaz (u,v) él, amire: l(v)≥D(u)) Elvágó pontokat inkább a rekurzión kívül kellene. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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:=0 Ciklus iKi(p) Ha Szín(i)=fehér akkor Táv(i):=Táv(p)+1; Szín(i):=szürke Mélységi bejárás(i); db:=db+1 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(p) akkor van:=igaz Ciklus vége Szín(p):=fekete Ha van vagy Táv(p)=0 é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. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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. Megjegyzés: Euler körről beszélünk A=B, ekkor A foka is páros. Hamilton út, Hamilton kör, ha mindenhonnan van pontszám*2/3 él Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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! Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) akkor Éltörlés(p,i) Mélységi bejárás(i) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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 i előbb lesz, mint j (azaz j nem lehet dominátor halmazbeli)! Ha mindkét irányú él van, akkor ha valamelyik dominátor halmazbeli, akkor bármelyik lehet. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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ás1(i) Ciklus vége db:=0 Veremből(j) ha Szín(j)=fekete akkor db:=db+1; D(db):=j Bejárás2(j) Függvény vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai Bejárás1(p): Szín(p):=szürke Ciklus iKi(p) Ha Szín(i)=fehér akkor Bejárás1(i) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Bejárás2(p): Szín(p):=piros Ciklus iKi(p) Ha Szín(i)=fekete akkor Bejárás2(i) Ciklus vége Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

Mélységi bejárás alkalmazásai INFOÉRA 2006 2006.11.18 Mélységi bejárás alkalmazásai 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 biztosam 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! Pontszám/2 él esetén is van megoldás, de lényegesen bonyolultabb. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

Minimális költségű feszítőfa INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Feszítőfa: Egy irányítatlan gráf azon részgráfja, amely fa (kör- mentes, összefüggő) és maximális (tartalmazza a gráf összes pontját). Minimális költségű feszítőfa: Súlyozott gráf azon feszítőfája, amely éleinek összköltsége minimális. Megjegyzés: A szélességi és a mélységi bejárás is egy-egy feszí- tőfát határoz meg, de nem feltétlenül – sőt általában nem – minimális költségűt. Ha a gráf nem összefüggő, akkor feszítő erdőről beszélhetünk. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

Minimális költségű feszítőfa Kruskal algoritmus INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Kruskal algoritmus Ötlet: a feszítőfa kezdetben álljon Pontszám darab feszítő erdőből (mindegyikben 1-1 pont lesz); vegyük az éleket hosszuk szerint növekvő sorrendben; ha egy él a feszítő erdő két különböző feszítőfáját köti össze, akkor biztosan eleme a feszítőfának (mert nincs nála rövidebb, ami a két fát összeköti), különben biztosan nem; az ilyen fákat egyesítsük és vegyük fel az élt a feszítőfa élei közé! Legyen Fa(i) az i pontot tartalmazó feszítőfa azonosítója! Műveletigény: O(Élszám*log2(Pontszám)) Rendezés: O(Élszám*log2(Élszám)) Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

Minimális költségű feszítőfa Kruskal algoritmus INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Kruskal algoritmus MinimálisFeszítőfa(F): Üres(F) Ciklus i=1-től PontSzám-ig szülő(i):=i Ciklus vége ÉlekRendezéseHosszSzerint(G) Ciklus e=1-től ÉlSzám-ig i:=Él(e,1); j:=Él(e,2) Ha Fa(i)≠Fa(j) akkor F:=F(i,j); Egyesít(i,j) Eljárás vége. A Fa(i) gyakori művelet, annyiszor hasz-náljuk, ahány éle van a gráfnak, az Egye-sít pedig ritkább, annyiszor használjuk, ahány pontunk van, azaz az előbbinek kell nagyon hatékonynak lenni. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás Építsünk egy erdőt, amelyben azonos fában vannak az azonos részhalmazban levő elemek: Egyesít(1,4) hatása: Egyesít(3,4) hatása lehetne: Mi lehetne Egyesít(3,5)? Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás A megoldás: egyesítéskor mindkét fában menjünk a legfelső elemhez és ott hajtsuk végre az egyesítést! Egyesít(3,5) hatása: Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás Egyesít(u,v): Ciklus amíg u≠szülő(u) u:=szülő(u) Ciklus vége Ciklus amíg v≠szülő(v) v:=szülő(v) Ciklus vége Fa(u): szülő(v):=u Ciklus amíg u≠szülő(u) Eljárás vége. u:=szülő(u) Fa:=u Függvény vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 35

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás Amikor a fában felfelé megyünk, akkor még érdemes a megtett utat tömöríteni, azaz minden bejárt pontot a gyökérhez csatolni: Fa(u): v:=u Ciklus amíg v≠szülő(v) v:=szülő(v) Ciklus vége Ciklus amíg u≠szülő(u) w:=szülő(u); szülő(u):=v; u:=w Fa:=u Függvény vége. Ilyenkor az egyesítés is egyszerűbb lehet, nem kell hozzá ciklus! Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 36

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás Ugyanez az úttömörítés rekurzívan (nem kell kétszer felmenni): Fa(u): Ha u≠szülő(u) akkor F:=Fa(szülő(u)) szülő(u):=F; Fa:=F különben Fa:=u Függvény vége. Egyesítésként legfeljebb 1 távolságra vagyunk a gyökértől: Egyesít(u,v): Ha u≠szülő(u) akkor u:=szülő(u) Ha v≠szülő(v) akkor v:=szülő(v) szülő(v):=u Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 37

Diszjunkt halmazfelbontás INFOÉRA 2006 2006.11.18 Diszjunkt halmazfelbontás Fa(6) hatása A fa magassága így kisebb lehet, ami gyorsíthatja az algoritmust! Megjegyzés: a két művelet miatt hívják ezt a típust Unió-Holvan típusnak is. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 38

Minimális költségű feszítőfa Prim algoritmus INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Prim algoritmus Ötlet: a gráf pontjait 2 halmazba soroljuk, a feszítőfában bent levő és a még azon kívül levő pontok halmazára; a két halmaz közötti legrövidebb él biztosan eleme a feszítőfának (mert a legközelebbi pontba vezet); vegyük fel az első halmazhoz legközelebbi pontot a feszítőfa pontjai közé és számoljuk újra a szomszédjai távolságát! Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 39

Minimális költségű feszítőfa Prim algoritmus INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Prim algoritmus Tegyük a második halmazbeli pontokat egy prioritásai sorba, az első halmaztól való becsült távolságuk sorrendjében! A legközelebbi közülük biztosan a legrövidebb éllel kötődik az első halmazhoz, azaz ő lesz a következő első halmazbeli pont. Ezután a kivezető élei végén levő pontok becsült távolságát az első halmaztól újra számoljuk: ha az oda vezető él hossza kisebb, mint az eddig becsült legkisebb távolság, akkor ezt a távolságot csökkentjük és a prioritási sorban az adott pontot előre mozgatjuk. Műveletigény: O(Élszám*log2(Pontszám)) Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 40

Minimális költségű feszítőfa Prim algoritmus INFOÉRA 2006 2006.11.18 Minimális költségű feszítőfa Prim algoritmus MinimálisFeszítőfa(Honnan): Táv(1..PontSzám):=+; PrSorba az összes pont p:=1; Honnan(p):=p; Ciklus i=1-től PontSzám-1-ig PrSorból(p); Táv(p):=0 Ciklus j=1-től SzomszédPontokSzáma(p)-ig s:=SzomszédPont(p,j) Ha Táv(s)>0 és ÉlHossz(p,s)<Táv(s) akkor Táv(s):=ÉlHossz(p,s) Honnan(s):=p; PrSorbanElőre(s) Ciklus vége Eljárás vége. Gráfok, gráfalgoritmusok 2018.06.18. 11:36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 41

Programozási alapismeretek 2006.11.18 Gráfok, gráfalgoritmusok III. előadás vége 2008/2009.