Gráfok. Programozás II. előadás. Szénási Sándor.

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Gráfok. Programozás II. előadás. Szénási Sándor."

Átírás

1 Gráfok előadás Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar

2 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok

3 3 Alapfogalmak Irányított gráf: csúcsok véges halmaza, illetve egy ezen értelmezett bináris reláció (élek halmaza) Formálisan: G = (V, E) G gráf V csúcsok halmaza, pl. { 1, 2, 3, 4, 5, 6, 7 } E élek halmaza, pl. { (1, 4), (2, 1), (2, 3), } V csúcsok száma E élek száma Súlyozott gráfok esetén az egyes élekhez egy kiegészítő súly értéket is rendelünk

4 4 Alapvető műveletek A gráfok eltárolására számos klasszikus módszer létezik. Az általunk tárgyalt algoritmusok megvalósítása szempontjából a fizikai eltárolási mód nem lényeges, csak annyit várunk el, hogy az alkalmas legyen az alábbi műveletek végrehajtására Gráfokon értelmezhető alapvető műveletek G.Csúcsok visszaadja a gráf csúcsait G.Élek visszaadja a gráf éleit Gráf csúcsain értelmezhető műveletek x.vezetél(y) megadja, hogy vezet-e él a paraméterként átadott y csúcsba? x.szomszédok visszaadja a csúcs szomszédjait (azokat a csúcsokat, amelyekbe vezet él a megadott csúcsból) Súlyozott gráf esetén értelmezhető x.súly(y) súlyozott gráfok esetén visszaadja az x-ből y-ba vezető él súlyát Gráf csúcsok tartalmazhatnak további adatokat is, pl. Tart a csúcshoz kapcsolt tartalom

5 5 Szomszédsági lista Alapelv: a szomszédsági listás tárolás esetén egy L tömböt használunk, melynek mérete megegyezik a csúcsok számával, az i. eleme egy láncolt lista, amely tárolja az i. csúcs szomszédjait (azokat a csúcsokat, amelyekbe vezet él az i. csúcsból) Műveletek megvalósítása (VezetÉl, stb.) L

6 6 Szomszédsági lista kiegészítések Amennyiben egy csúcsból nem indulnak ki élek, akkor az üres láncolt listákhoz hasonlóan ez a mező közvetlenül értéket tartalmaz A listában szereplő csúcsok sorrendje tetszőleges, esetenként valamilyen (csúcsazonosító vagy gyakoriság) szerinti rendezést érdemes lehet használni A lista tartalma lehet a csúcs neve/azonosítója, de akár referencia magára a csúcsra Súlyozott gráfok esetében a listát célszerű kiegészíteni egy további mezővel, ami a megadott csúcsból a megadott csúcsba vezető él súlyát tárolja Irányítatlan gráfok esetében az éleket mindkét csúcs listájában szerepeltetni kell (vagy a VanÉl metódust módosítani) Irányított gráfok esetében az adatszerkezet helyfoglalása V *mutató_méret + E *(csúcs_azonosító_méret + mutató_méret)

7 7 Szomszédsági mátrix/csúcsmátrix Alapelv: a szomszédsági mátrix alapú tárolás esetén egy CS kétdimenziós tömböt használunk, amely sorainak és oszlopainak száma megegyezik a csúcsok számával az i. sor j. oszlopában lévő érték azt mutatja, hogy vezet-e él az i. csúcsból a j. csúcsba (pl. 1 igen, 0 nem) Műveletek megvalósítása (VezetÉl, stb.) CS

8 8 Szomszédsági mátrix kiegészítések Irányítatlan gráfok esetében CS[i,j] értéke minden esetben megegyezik CS[j,i] értékével. Emiatt a mátrix szimmetrikus a főátlójára. Súlyozott mátrixok esetében a módszer kiegészíthető azzal, hogy nem csak 1-et vagy 0-t tárolunk, hanem magát a súly értékét (amennyiben elképzelhetők 0 súlyú élek, akkor módosítanunk kell a nincs él jelzés értékét) Látható, hogy a mátrix mérete csak a csúcsok számától függ, ennek megfelelően a várható helyfoglalás max( V * V ) (irányítatlan gráf esetén elégséges a főátló, illetve az efeletti elemek tárolása, így a tárhely igény is csaknem a felére csökken)

9 Döntési szempontok Tárhely szempontjából Amennyiben az élek száma a csúcsok számához képest meglehetősen kevés (ritka gráfok) szomszédsági listás tárolás Amennyiben az élek száma a csúcsok számához képest meglehetősen sok (a konkrét érték függ a mutatók méretétől is) csúcsmátrixos tárolás Műveletek szempontjából Gyakran van szükség a Szomszédok műveletre szomszédsági listánál azonnal választ kapunk csúcsmátrixnál V darab lépésre van szükség szomszédsági listás tárolás Gyakran van szükség a VanÉl műveletre szomszédsági listánál egy láncolt lista keresést kell futtatni csúcsmátrixnál azonnali választ kapunk csúcsmátrixos tárolás A megfelelő tárolási mód tehát csak a feladat, illetve a pontos implementáció ismeretében határozható meg (megj.: nagyobb mátrixok esetében a csúcsmátrix a tárhely igénye miatt gyakran nem jelent valós opciót) szenasi.sandor@nik.uni-obuda.hu 9

10 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok

11 11 Gráf bejárások Gráfok esetében a bejárás hasonlóan értelmezhető mind az eddig megismert adatszerkezetek esetén (a gráf minden csúcsának egyszeri feldolgozása) Az algoritmusok azonban bonyolultabbak az eddig megismerteknél, ugyanis gondolni kell az alábbiakra gráfokban előfordulhatnak körök/ciklusok, és ügyelni kell arra, hogy a bejárásunk ne kerüljön végtelen ciklusba az eddigi adatszerkezeteinkkel ellentétben a gráfok nem feltétlenül összefüggőek, ilyenkor tisztázni kell, hogy mi a pontos cél (egy komponens bejárása, vagy az összes csúcs elérése) Egy irányítatlan gráfot összefüggőnek nevezünk, ha bármely két csúcsa összeköthető úttal Irányított gráfokat akkor nevezzük erősen összefüggőnek, ha tetszőleges két csúcs esetén mindegyik elérhető a másikból A fentieknek megfelelően beszélhetünk összefüggő, illetve erősen összefüggő komponensekről

12 Szélességi bejárás Szélességi bejárás (szélességi keresés): egy adott kezdőpontból kiindulva feldolgozza a gráf összes innen elérhető csúcsát Minden lépésben a legkorábban eljárás SzélességiBejárás(start) elért, de még teljesen át nem S start F {start} vizsgált csúcs szomszédjai felé ciklus amíg (S ) haladunk tovább k S Használt adatszerkezetek Feldolgoz(k.tart) ciklus x k.szomszédok S egy sor, ami a már elért, ha x F akkor de még a feldolgozásra váró S x csúcsokat tárolja F F {x} F egy halmaz, ami a már elért elágazás vége csúcsokat tárolja Az algoritmus addig fut, amíg eljárás vége elfogynak a feldolgozható csúcsok Fontos kiemelni, hogy ez nem mindig fogja feldolgozni a gráf minden csúcsát szenasi.sandor@nik.uni-obuda.hu 12

13 13 Csúcsok állapota a bejárás során Már elért, de még fel nem dolgozott csúcsok Azok a csúcsok, amelyeket már elért az algoritmus, de még nem lettek feldolgozva (tehát nem vizsgáltuk meg a belőlök elérhető szomszédokat) Ezek azok a csúcsok, amelyek benne vannak az S sorban Már elért és feldolgozott csúcsok Azok a csúcsok tartoznak ide, amelyeket már elért az algoritmus, és az összes belőlük kivezető él is fel lett már dolgozva (vagy éppen a feldolgozásuk történik) Ezek azok a csúcsok, amelyek már benne vannak az F halmazban, de már nincsenek benne az S-ben Még el nem ért csúcsok Az algoritmus futása során még nem találkoztunk velük Nincsenek benne egyik adatszerkezetben sem

14 14 Legrövidebb utak hosszát megadó kiegészítés Egy d tömb/hasító táblázat segítségével minden csúcshoz hozzárendelünk egy szám értéket. Ez a kiinduló csúcstól való legrövidebb út hosszát mutatja (ez alatt itt a legkevesebb élből álló utat értjük) A kiinduló pont esetében ez a távolság értelemszerűen 0 Minden további újonnan felfedezett csúcs esetén annak távolsága egyel több, mint annak a csúcsnak a távolsága, ahonnan először értük el A bejárás során el nem ért csúcsok esetén a d nem kap értéket eljárás SzélességiBejárás(start) S start F {start} d[start] 0 ciklus amíg (S ) k S ciklus x k.szomszédok ha x F akkor S x F F {x} d[x] d[k] + 1 elágazás vége eljárás vége

15 Egy feszítőfát megadó kiegészítés Egy π tömb/hasító táblázat segítségével minden csúcshoz hozzárendelünk egy másik csúcsot (vagy értéket). Ez azt mutatja, hogy adott csúcsot melyik csúcsból értük el A kiinduló pont esetében a π [start] =, hiszen nincs megelőző csúcs Minden további új csúcs esetén annak első elérésekor elhelyezzük a π adott csúcshoz tartozó elemébe azt a csúcsot, ahonnan ide jutottunk A π értékek alapján megadható az adott csúcsokba a start-ból vezető legrövidebb út (ha van) A π értékei alapján felépíthető egy feszítőfa (szélességi fa) szenasi.sandor@nik.uni-obuda.hu eljárás SzélességiBejárás(start) S start F {start} π[start] ciklus amíg (S ) k S ciklus x k.szomszédok ha x F akkor S x F F {x} π[x] k elágazás vége eljárás vége 15

16 16 Szélességi keresés gyakorlati alkalmazása Komponensek keresése A szélességi keresés lefutása után az F halmaz tartalmazza a kiinduló (start) csúcsból elérhető összes csúcs halmazát Gyenge összefüggőség vizsgálata: az előbb megismert algoritmussal Erős összefüggőség vizsgálata: irányított gráf esetén a fordított gráfon (ennek csúcsai ugyanazok, élei viszont pont ellenkező irányúak) elvégezzük ugyanezt a bejárást, és ha ez is megtalál minden csúcsot, akkor a komponens erősen összefüggő Útkeresés Amennyiben a gráf egyes csúcsai a lehetséges útelágazásokat reprezentálják, az élek pedig az egyes csomópontok között meglévő utakat Akkor a szélességi keresés megadja az összes elérhető csomópontot Egy kiegészítő leállási feltétellel megadható, hogy egy megadott cél csúcs elérése után álljon le a program futása A feltétel lehet valamilyen F feltételnek megfelelő csúcs formájú is A π értékei alapján egyszerűen megadható, hogy a cél csúcsba melyik úton lehet a legrövidebben eljutni

17 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok

18 18 Mélységi bejárás Mélységi bejárás (mélységi keresés): egy adott kezdőpontból kiindulva feldolgozza a gráf összes innen elérhető csúcsát A szélességi kereséssel ellentétben itt mindig az utoljára elért, új kivezető élekkel rendelkező csúcsokat derítjük fel. Ha nincs ilyen, akkor pedig visszalépünk egy már előzőleg vizsgáltra Használt adatszerkezetek F egy halmaz, ami a már elért csúcsokat tárolja A feldolgozás egy vermen eljárás MélységiBejárásRek(k, címsz. F) F F {k} Feldolgoz(k.tart) ciklus x k.szomszédok ha x F akkor MélységiBejárásRek(x, F) elágazás vége eljárás vége eljárás MélységiBejárás(start) F MélységiBejárásRek(start, F) eljárás vége alapul, ezt a rekurzió miatt közvetve használjuk Fontos kiemelni, hogy ez nem mindig fogja feldolgozni a gráf minden csúcsát

19 19 Megelőző elemet is tároló változat Gyakran szükség van arra, hogy az egyes csúcsokat melyik másik csúcsból értük el eljárás MélységiBejárásRek(k, címsz. F, címsz. π) Az itt látható kiegészítés ezt F F {k} az adatot gyűjti a π tárolóba Feldolgoz(k.tart) A kiinduló pont esetében a ciklus x k.szomszédok ha x F akkor π [start] =, hiszen nincs π[x] k megelőző csúcs MélységiBejárásRek(x, F) elágazás vége Ez alapján megadható egy út a kiinduló start csúcsból eljárás vége a gráf összes többi csúcsába eljárás MélységiBejárás(start) A szélességi bejáráshoz F hasonlóan a π-ben található π[start] adatok alapján egy MélységiBejárásRek(start, F, π) eljárás vége feszítőfát állíthatunk elő

20 20 Belépési és elhagyási időt is tároló változat A gyakorlatban hasznos lehet, ha folyamatában vizsgáljuk a mélységi keresés lépéseit. Ehhez célszerű lehet eltárolni az egyes csúcsokba való be- és kilépési időket Ennek megfelelően t idő (lépésszám) be belépési időket tárolja ki kilépési időket tárolja A t változó értéke kezdetben 0, utána pedig az egyes hívások során folyamatosan eljárás MélységiBejárás(start) növekszik F ; MélységiBejárásRek(start,F,0,be,ki) Az eljárás elején és végén eljárás vége látható a be és ki nevű szerkezetek tárolják az egyes csúcsok elérési és elhagyási idejét eljárás MélységiBejárásRek(k, címsz. F, címsz. t, címsz. be, címsz. ki) be[k] t++ F F {k} Feldolgoz(k.tart) ciklus x k.szomszédok ha x F akkor MélységiBejárásRek(x, F) elágazás vége ki[k] t++ eljárás vége

21 21 Topológiai rendezés Egy irányított gráf topológiai rendezése a csúcsoknak egy olyan sorba rendezése, amelyre igaz, hogy ha létezik (u,v) él a gráfban, akkor u megelőzi a sorban v-t Ha a gráf tartalmaz irányított kört, akkor nincs ilyen sorbarendezés Példa: öltözködéskor melyik ruhadarabot kell felvenni egy másik előtt: alsónadrág nadrág öv ing zokni Néhány lehetséges topológiai rendezés: alsónadrág, nadrág, ing, öv, zokni, cipő, nyakkendő, zakó ing, nyakkendő, zakó, zokni, alsónadrág, nadrág, cipő, öv cipő nyakkendő zakó

22 22 Topológiai rendezés előállítása Jól tudjuk használni a mélységi keresés azon változatát, amely tárolta az egyes csúcsok elérési és elhagyási idejét Egy topológiai rendezés előállítható úgy, hogy az egyes csúcsokat az elhagyás fordított sorrendjében soroljuk fel Technikailag ez egyszerűbben is megoldható, pl. minden elhagyáskor a csúcsot szúrjuk egy láncolt lista elejére Mivel a gráf nem biztos, hogy erősen összefüggő, így minden csúcsból el kell indítani a rekurzív bejárást eljárás MélységiBejárásRek(k, címsz. F, címsz. fej) F F {k} ciklus x k.szomszédok ha x F akkor MélységiBejárásRek(x, F) elágazás vége ListaElejéreBeszúrás(fej, k) eljárás vége függvény TopológiaiRendezés(G) F ListaInicializálás(fej) ciklus st G.Csúcsok ha st F akkor MélységiBejárásRek(st, F, fej) elágazás vége vissza fej függvény vége

23 23 Mélységi keresés gyakorlati alkalmazása Visszalépéses keresés A visszalépéses keresés tulajdonképpen a mélységi keresés alapelvét használja működése során A lehetséges megoldások által kifeszített fában lépeget előre amíg tud, amíg vagy talál meg megoldást, vagy ha egy helyen elakad, akkor visszalép és új irányba próbálkozik Fa bejárások A pre-, in-, post-order bejárások tulajdonképpen mind egy-egy mélységi keresést mutatnak be Útkeresések Hasonlóan a szélességi kereséshez, bár nagy/nem korlátos gráfok esetén problémásabb a használata Topológiai rendezés Gyártási folyamat optimalizálása Erősen összefüggő komponensek keresése Gráf bejárása minden pontból kilépési idők megjegyzése Gráf transzponált bejárása (előző kilépési idők szerinti fordított sorrendben)

24 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok

25 25 Adott csúcsból induló legrövidebb utak A szélességi keresés megadta a súlyozatlan gráfokban a legrövidebb utakat (itt az út hossza alatt az azt alkotó élek számát értettük) Ennek megfelelően a gráf legyen súlyozott A gráf legyen összefüggő Súlyozott gráfok esetében az egyes élekhez súlyokat rendelünk, és azt az utat keressük, ahol az azt alkotó élek súlyainak az összege minimális Megfontolandó Negatív súlyú éleket is tartalmazó gráfok esete Negatív összsúlyú köröket is tartalmazó gráfok esete Gyakorlati alkalmazások

26 Fokozatos közelítés elve A fokozatos közelítés technikája során Folyamatosan tároljuk az egyes csúcsokhoz a kiindulópontból eddig talált legrövidebb út hosszát (d), ami egy felső becslés a végeredményre Minden csúcsnál eltároljuk azt, hogy ezen az úton melyik csúcsból értük el az adott csúcsot (π) A közelítés elve Kiinduló állapot A kezdőcsúcs esetében d[start] = 1 és π[start] = A többi csúcshoz még nem találtunk utat, ezért ezeknél a távolság értékeket végtelenre állítjuk, a megelőző csúcsokat pedig -ra Közelítés Ha találunk olyan (u, v) élt, amelyre igaz, hogy d[u] + u.súly(v) < d[v] Akkor ez azt jelenti, hogy a v csúcshoz találtunk egy eddig találtnál rövidebb utat, ennek megfelelően módosítjuk a d és π értékeket: d[v] d[u] + u.súly(v) (az új legrövidebbnek gondolt út hossza) π[v] u (ezen az úton a megelőző csúcs) Megfelelő sorrendben hajtva végre a közelítést bizonyítható, hogy meg fogjuk találni a legrövidebb utat minden csúcshoz szenasi.sandor@nik.uni-obuda.hu 26

27 Dijkstra algoritmusa függvény Dijkstra(G, start) ciklus x G.Csúcsok d[x] ; π[x] S x d[start] 0 ciklus amíg S u S.MinKivesz(d) ciklus x u.szomszédok ha d[u] + u.súly(x) < d[x] akkor d[x] d[u] + u.súly(x) π[x] u elágazás vége vissza (π, d) függvény vége Ahol S egy prioritásos sor. Az S.MinKivesz(d) művelet pedig azt az x S sorbeli elemet adja vissza, ahol a d[x] érték a legkisebb Előfeltétel: a gráf irányított és nem tartalmazhat negatív súlyú éleket! szenasi.sandor@nik.uni-obuda.hu 27

28 28 Az algoritmus eredménye Az algoritmus eredménye d[x] mutatja minden x csúcs esetén az oda vezető legrövidebb út hosszát (vagy végtelen, ha nincs ilyen) π[x] mutatja a fenti úton a megelőző csúcsot (kivéve a kiinduló és az el nem ért csúcsokat) Tényleges utak előállítása A cél csúcsból elindulva a π-ben található adatok alapján visszafelé lépkedve előállíthatjuk az egyes csúcsokba vezető utakat Addig megyünk, amíg a kezdőcsúcshoz nem érünk (ahol π értéke ) Pl. egy láncolt lista elejébe szúrva a fenti egyszerűen megoldható Legrövidebb utakat tartalmazó fa előállítása Az algoritmus a kezdőcsúcsból minden elérhető csúcsba előállítja a legrövidebb utat A π értékek alapján előállítható egy olyan fa, amely ezeket az utakat tartalmazza Hasonló a szélességi keresésnél is már megismert szélességi fához

29 További megoldható feladatok Egy csúcsból az összes többi csúcsba vezető legrövidebb utak megkeresése Nincsenek negatív élek: Dijkstra algoritmus Lehetnek negatív élek: Bellman-Ford algoritmus (nem tárgyaljuk) Egy csúcsba vezető legrövidebb utak problémája Az összes csúcsból a cél csúcsba vezető legrövidebb utakat keressük Élek irányításának megfordításával könnyen megoldható Két adott csúcs közötti legrövidebb út problémája A Dijkstra algoritmus a végén erre is választ ad Ennél sokkal jobb megoldásunk nincs Összes csúcspár közötti legrövidebb utak keresése A gráf minden u és v csúcsa között megkeressük a legrövidebb utat Lefuttathatjuk a Dijkstra algoritmust minden csúcsból kiindulva Léteznek erre specializált megoldások (pl. Floyd-Warshall algoritmus) Irányítatlan gráfok esete Ha nincs negatív él, akkor a Dijkstra használható kis módosítással Negatív él egyben negatív kört is jelent szenasi.sandor@nik.uni-obuda.hu 29

30 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok

31 31 Minimális feszítőfa előállítása Olyan feszítőfát keresünk, ahol az élek összsúlya minimális Ennek megfelelően a gráf legyen súlyozott A gráf legyen irányítatlan Legyen összefüggő Egy gráfnak több minimális feszítőfája is lehet, ezek közül elég az egyiket megtalálnunk Gyakorlati alkalmazások 1 Áramkörök tervezése 3 1 Ellátórendszerek tervezése

32 32 Feszítőfa növelésének elve Feszítőfa növelése során Egy alapállapotból kiindulva, egyesével adjuk hozzá az éleket a leendő feszítőfához Tehát az algoritmus minden állapotában a feszítőfa egy részét tartja nyilván (nevezzük ezt A-nak) A feszítőfa lépésenkénti növelésének elve Kiinduló állapot Az A kezdőértéke legyen egy olyan állapot, ami biztosan a leendő feszítőfa része lesz majd (pl. egy darab csúcs, vagy egy jól megválasztott él) Növelés Ezt követően olyan éleket keresünk, amelyeket hozzáadva az eddigi A állapothoz, továbbra is fennáll a fenti állítás (továbbra az A továbbra is a leendő feszítőfa egy része) Ezeket biztonságos éleknek nevezzük Egy ilyen élet hozzáadunk az A-hoz Addig ismételjük, amíg A nem feszítőfa Biztonságos él megállapítása

33 Biztonságos él keresése Vágásnak nevezzük a gráf csúcsainak a kettéosztását két csoportba pl. ábrán a zöld vonal bal és jobb oldalán lévő elemekre Azt mondjuk, hogy egy él keresztezi a vágást, ha a két végpontja a két különböző csoportba került pl. az ábrán a piros élek Egy él könnyű egy vágásban, ha a vágást keresztező élek közül neki van a legkisebb a súlya pl. az ábrán a vastagabb piros él Egy vágás kikerül egy A halmazt, ha az A egyik éle sem keresztezi a vágást Bizonyítható, hogy ha van egy A halmazunk, amely egy G gráf éleinek részhalmaza, továbbá G egy minimális feszítőfájának is része, akkor az G gráf A-t kikerülő vágásainak könnyű élei biztonságosak szenasi.sandor@nik.uni-obuda.hu

34 Prim algoritmusa függvény Prim(G, start) ciklus x G.Csúcsok k[x] ; π[x] S x k[start] 0 ciklus amíg S u S.MinKivesz(k) ciklus x u.szomszédok ha x S u.súly(x) < k[x] akkor k[x] u.súly(x) π[x] u elágazás vége vissza π függvény vége Ahol S egy prioritásos sor. Az S.MinKivesz(k) művelet pedig azt az x S sorbeli elemet adja vissza, ahol a k[x] érték a legkisebb Visszatérési értéke a szülőket tartalmazó adatszerkezet szenasi.sandor@nik.uni-obuda.hu 34

35 Kruskal algoritmusa függvény Kruskal(G) ciklus x G.Csúcsok Halmaz-létrehozás(x) ciklus (u,v) G.Élek S (u,v) ciklus amíg S (u,v) S.MinKivesz(súly) ha Tartalmazó-halmaz(u) Tartalmazó-halmaz(v) akkor A A {(u,v)} Halmaz-összevonás(Tartalmazó-halmaz(u), Tartalmazó-halmaz(v)) vissza A függvény vége Ahol S egy prioritásos sor, ami most az éleket tartalmazza. Az S.MinKivesz(súly) művelet pedig azt az e S sorbeli elemet adja vissza, ahol az él súlya a legkisebb Az eljárás visszatérési értéke a minimális feszítőfa éleinek halmaza szenasi.sandor@nik.uni-obuda.hu 35

36 36 Kruskal segédműveletek Halmaz-létrehozás(x) Létrehoz egy új halmazt Ebben elhelyezi az x elemet (ami egy csúcs) Tartalmazó-halmaz(x) Az előzőleg létrehozott halmazok közül megkeresi azt, amelyikben az x szerepel Csak egy ilyen halmaz lehet, a visszatérési értéke ez a halmaz Halmaz-összevonás(A, B) Az előzőleg létrehozott halmazok közül összevon kettőt Tehát pl. az A legyen a két halmaz uniója, a B-t pedig megszünteti Megvalósítás Tényleges halmaz adatszerkezetekkel Objektumorientáltan (halmaz objektumok, illetve halmazok halmazai) A halmazok maximális száma és maximális elemszáma ismert (mind a kettő értéke V ), így tömbök egyszerűen használhatók Láncolt lista az összevonásnál praktikus Másik megoldás, ha halmazok helyett csak a csúcsokhoz rendelünk egy azonosítót, hogy melyik halmazban van (összevonás csak ennek a másolása)

37 37 Irodalomjegyzék Javasolt/felhasznált irodalom Aho, Hopcroft, Ulmann: Számítógép-algoritmusok tervezése és analízise, Műszaki Könyvkiadó, 1982 Cormen, Leiserson, Rivest: Algoritmusok, Műszaki Könyvkiadó, 1997 Szénási: Algoritmusok, adatszerkezetek II., Óbudai Egyetem, 2014

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2

Részletesebben

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 1. Tárolási módok, bejárások előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Gráfok 1. Tárolási módok Szélességi

Részletesebben

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. 5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Gráfalgoritmusok ismétlés ősz

Gráfalgoritmusok ismétlés ősz Gráfalgoritmusok ismétlés 2017. ősz Gráfok ábrázolása Egy G = (V, E) gráf ábrázolására alapvetően két módszert szoktak használni: szomszédsági listákat, illetve szomszédsági mátrixot. A G = (V, E) gráf

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA 26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma

Részletesebben

Adatszerkezetek II. 2. előadás

Adatszerkezetek II. 2. előadás Adatszerkezetek II. 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17

Gráfok bejárása. Szlávi Péter, Zsakó László: Gráfok II :17 Gráfok 2. előadás Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra bejárása nem

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

A számítástudomány alapjai

A számítástudomány alapjai A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Legszélesebb utak Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y. Algoritmuselmélet Legrövidebb utak, Bellmann-Ford, Dijkstra Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 3. előadás Katona Gyula Y. (BME

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa: Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)

Részletesebben

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK 30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3 Síkgráfok Kuratowski-tétel: egy gráf akkor és csak akkor síkba rajzolható gráf, ha nincs olyan részgráfja, ami a K 5 -el, vagy a K 3,3 -altopologikusan izomorf (homeomorf). Euler síkgráfokra vonatkozó

Részletesebben

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y. Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

III. Gráfok. 1. Irányítatlan gráfok:

III. Gráfok. 1. Irányítatlan gráfok: III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:

Részletesebben

Gráf-algoritmusok Legrövidebb utak

Gráf-algoritmusok Legrövidebb utak https://www.cs.princeton.edu/~rs/algsds07/15shortestpaths.pdf Gráf-algoritmusok Legrövidebb utak Sapientia-EMTE 2017-18 Typesetting in TeX Két pont között, akkor van él, ha közéjük 1 2 3 4 eső szó szekvencia

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Mélységi keresés Ez az algoritmus a gráf pontjait járja be, eredményképpen egy mélységi feszítőerdőt ad vissza az Apa függvény által. A pontok bejártságát színekkel kezeljük, fehér= érintetlen, szürke=meg-

Részletesebben

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007 Hálózatok II 2007 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Szerda 17:00 18:30 Gyakorlat: nincs Vizsga írásbeli Honlap: http://people.inf.elte.hu/lukovszki/courses/g/07nwii

Részletesebben

Programozás II. előadás

Programozás II. előadás Nem összehasonlító rendezések Nem összehasonlító rendezések Programozás II. előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Programozás II. 2 Rendezés

Részletesebben

Adatszerkezetek II. 1. előadás

Adatszerkezetek II. 1. előadás Adatszerkezetek II. 1. előadás Gráfok A gráf fogalma: Gráf(P,E): P pontok (csúcsok) és E P P élek halmaza Fogalmak: Irányított gráf : (p 1,p 2 ) E-ből nem következik, hogy (p 2,p 1 ) E Irányítatlan gráf

Részletesebben

A gráffogalom fejlődése

A gráffogalom fejlődése A gráffogalom fejlődése ELTE Informatikai Kar, Doktori Iskola, Budapest Batthyány Lajos Gimnázium, Nagykanizsa erdosne@blg.hu a prezentáció kézirata elérhető: http://people.inf.elte.hu/szlavi/infodidact16/manuscripts/ena.pdf

Részletesebben

Számítógép hálózatok, osztott rendszerek 2009

Számítógép hálózatok, osztott rendszerek 2009 Számítógép hálózatok, osztott rendszerek 2009 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Hétfő 10:00 12:00 óra Gyakorlat: Hétfő 14:00-16:00 óra Honlap: http://people.inf.elte.hu/lukovszki/courses/0910nwmsc

Részletesebben

Algoritmuselmélet 7. előadás

Algoritmuselmélet 7. előadás Algoritmuselmélet 7. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 11. ALGORITMUSELMÉLET 7. ELŐADÁS 1 Múltkori

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2016. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Gráfelméleti feladatok. c f

Gráfelméleti feladatok. c f Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

24. MINIMÁLIS KÖLTSÉGŰ UTAK I. 24. MINIMÁLIS KÖLTSÉGŰ UTAK I. Az útvonaltervezés az egyik leggyakrabban végrehajtott eljárása a gráfok alkalmazásai körében. A feladat például a közlekedésben jelentkezik. A gráfot itt az a térkép jelenti,

Részletesebben

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él. Legrövidebb utak súlyozott gráfokban A feladat egy súlyozott gráfban egy adott pontból kiinduló legrövidebb utak megkeresése. Az input a súlyozott gráf és a kiindulási s pont. Outputként egy legrövidebb

Részletesebben

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott . Minimális súlyú feszítő fa keresése Képzeljük el, hogy egy útépítő vállalat azt a megbízást kapja, hogy építsen ki egy úthálózatot néhány település között (a települések között jelenleg nincs út). feltétel

Részletesebben

Optimalizációs stratégiák 1.

Optimalizációs stratégiák 1. Optimalizációs stratégiák 1. Nyers erő, Oszd meg és uralkodj, Feljegyzéses, Dinamikus, Mohó előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János

Részletesebben

Gráfelméleti alapfogalmak

Gráfelméleti alapfogalmak 1 Gráfelméleti alapfogalmak Gráf (angol graph= rajz): pontokból és vonalakból álló alakzat. pontok a gráf csúcsai, a vonalak a gráf élei. GRÁ Irányítatlan gráf Vegyes gráf Irányított gráf G H Izolált pont

Részletesebben

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit

Részletesebben

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Fák 2009.04.06. Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Fák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa Témakörök 2 Fa (Tree): csomópontok

Részletesebben

Visszalépéses keresés

Visszalépéses keresés Visszalépéses keresés Backtracking előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Alapvető működése Továbbfejlesztési

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

Részletesebben

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Rekurzió. Működése, programtranszformációk. Programozás II. előadás.   Szénási Sándor. Rekurzió Működése, programtranszformációk előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Rekurzió Rekurzió alapjai Rekurzív

Részletesebben

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Láncolt

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 4. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Példa Adott egy n n-es sakktábla. Az (1,1) mezőn áll egy huszár. Határozzuk meg eljuthat -e az (u,v) mezőre, ha igen adjunk meg egy legkevesebb lépésből álló utat! Adjunk algoritmust, ami megoldja a feladatot.

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

Adatszerkezetek II. 3. előadás

Adatszerkezetek II. 3. előadás Adatszerkezetek II. 3. előadás Körmentes-e egy irányítatlan gráf? Alapötlet: Ha a bejárás során minden szürke pontból csak fehér pontba vezet él, akkor a gráf körmentes. 2013.02.27. 2 Körmentes?(p): Szín(p):=szürke;

Részletesebben

Struktúra nélküli adatszerkezetek

Struktúra nélküli adatszerkezetek Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A

Részletesebben

29. Visszalépéses keresés 1.

29. Visszalépéses keresés 1. 29. Visszalépéses keresés 1. A visszalépéses keresés algoritmusa Az eddig megismert algoritmusok bizonyos értelemben nyílegyenesen haladtak elôre. Tudtuk, hogy merre kell mennünk, és minden egyes lépéssel

Részletesebben

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.

Részletesebben

Haladó rendezések. PPT 2007/2008 tavasz.

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:

Részletesebben

Algoritmuselmélet 11. előadás

Algoritmuselmélet 11. előadás Algoritmuselmélet 11. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 26. ALGORITMUSELMÉLET 11. ELŐADÁS 1 Kruskal

Részletesebben

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra: C(T ) = (u,v) T c(u,v) Az F = (V,T) gráf minimális feszitőfája G-nek,

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Fekete István jegyzetéből (részlet) 9. gyakorlat Forrás: http://people.inf.elte.hu/fekete/ Algoritmusok 2 / gráfalgoritmusok 1. Mélységi bejárás és alkalmazásai 1.1 Mélységi

Részletesebben

Bináris keresőfa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor

Bináris keresőfa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor Bináris keresőfa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Bináris keresőfa Rekurzív

Részletesebben

2. Visszalépéses keresés

2. Visszalépéses keresés 2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. 2018. szeptember 21. 1. Diszkrét matematika 2. 2. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. szeptember 21. Gráfelmélet

Részletesebben

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)} Példa Adott egy sziget ahol 42 kaméleon lakik. A kaméleonok három színt vehetnek fel piros, kék és zöld. Ha két különböző színű kaméleon találkozik, akkor megijednek és mindkettő átváltoztatja a színét

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Összefoglaló Gráfok / EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Adott a G = (V, E) gráf ahol a V a csomópontok, E az élek halmaza E = {(x, y) x, y V, x y (nincs hurokél) és (x, y) = (y, x)) Jelölések:

Részletesebben

Tuesday, March 6, 12. Hasító táblázatok

Tuesday, March 6, 12. Hasító táblázatok Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

23. SZÉLESSÉGI BEJÁRÁS

23. SZÉLESSÉGI BEJÁRÁS 23. SZÉLESSÉGI BEJÁRÁS A bejárási algoritmusok feladata általában a gráf csúcsainak végiglátogatása valamilyen stratégia szerint. A bejárás gyakran azért hajtjuk végre, mert adott tulajdonságú csúcsot

Részletesebben

Dijkstra algoritmusa

Dijkstra algoritmusa Budapesti Fazekas és ELTE Operációkutatási Tanszék 201. július 1. Legrövidebb utak súlyozatlan esetben v 4 v 3 Feladat Hány élből áll a legrövidebb út ezen a gráfon az s és t csúcsok között? v v 6 v 7

Részletesebben

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése Készítette: Bognár Gergő Témavezető: Veszprémi Anna Eötvös Loránd Tudományegyetem Informatikai Kar Algoritmusok és Alkalmazásaik Tanszék Budapest,

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

Totális Unimodularitás és LP dualitás. Tapolcai János

Totális Unimodularitás és LP dualitás. Tapolcai János Totális Unimodularitás és LP dualitás Tapolcai János tapolcai@tmit.bme.hu 1 Optimalizálási feladat kezelése NP-nehéz Hatékony megoldás vélhetően nem létezik Jó esetben hatékony algoritmussal közelíteni

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. Mérai László előadása alapján Készítette: Nagy Krisztián 1. előadás Gráfok halmaza, gráf, ahol a csúcsok halmaza, az élek illesztkedés reláció: illesztkedik az élre, ha ( -él illesztkedik

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Web-programozó Web-programozó

Web-programozó Web-programozó Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y. Algoritmuselmélet Bonyolultságelmélet Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 12. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Optimalizációs stratégiák 2.

Optimalizációs stratégiák 2. Optimalizációs stratégiák 2. Visszalépéses keresés, szétválasztás és korlátozás előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

ELTE IK Esti képzés tavaszi félév. Tartalom

ELTE IK Esti képzés tavaszi félév. Tartalom Diszkrét Matematika 2 vizsgaanyag ELTE IK Esti képzés 2017. tavaszi félév Tartalom 1. Számfogalom bővítése, homomorfizmusok... 2 2. Csoportok... 9 3. Részcsoport... 11 4. Generátum... 14 5. Mellékosztály,

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus

GRÁFELMÉLET. 7. előadás. Javító utak, javító utak keresése, Edmonds-algoritmus GRÁFELMÉLET 7. előadás Javító utak, javító utak keresése, Edmonds-algoritmus Definíció: egy P utat javító útnak nevezünk egy M párosításra nézve, ha az út páratlan hosszú, kezdő- és végpontjai nem párosítottak,

Részletesebben

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

Láncolt listák Témakörök. Lista alapfogalmak

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A

Részletesebben

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus Csíkszereda IRT-. kurzus 3. Előadás: A mohó algoritmus 1 Csíkszereda IRT. kurzus Bevezetés Az eddig tanult algoritmus tipúsok nem alkalmazhatók: A valós problémák nem tiszta klasszikus problémák A problémák

Részletesebben

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: ( HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör Teljes gráf: Páros gráf, teljes páros gráf és Hamilton kör/út Hamilton kör: Minden csúcson áthaladó kör Hamilton kör Forrás: (http://www.math.klte.hur/~tujanyi/komb_j/k_win_doc/g0603.doc

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16. Bevezetés a Számításelméletbe II. 6. előadás Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem Számítástudományi és Információelméleti Tsz. I. B. 7/b sali@cs.bme.hu 004 március 6. A kritikus út

Részletesebben

38. A gráfalgoritmusok alkalmazása

38. A gráfalgoritmusok alkalmazása 38. A gráfalgoritmusok alkalmazása Állapotok és átmenetek A gráf adattípus nagyon sokféle feladat megoldásánál alkalmazható. Rejtvények, játékok, közlekedési és szállítási problémák, stratégiai feladatok

Részletesebben

SzA II. gyakorlat, szeptember 18.

SzA II. gyakorlat, szeptember 18. SzA II. gyakorlat, 015. szeptember 18. Barátkozás a gráfokkal Drótos Márton drotos@cs.bme.hu 1. Az előre megszámozott (címkézett) n darab pont közé hányféleképp húzhatunk be éleket úgy, hogy egyszerű gráfhoz

Részletesebben

Javító és majdnem javító utak

Javító és majdnem javító utak Javító és majdnem javító utak deficites Hall-tétel alapján elméletileg meghatározhatjuk, hogy egy G = (, ; E) páros gráfban mekkora a legnagyobb párosítás mérete. Ehhez azonban első ránézésre az összes

Részletesebben

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime? Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben