Gráfok. Programozás II. előadás. Szénási Sándor.
|
|
- Sarolta Gálné
- 5 évvel ezelőtt
- Látták:
Á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 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észletesebbenGrá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észletesebben5/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észletesebbenB-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észletesebbenGrá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észletesebbenAlgoritmusok 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észletesebben26. 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észletesebbenAdatszerkezetek 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észletesebben22. 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észletesebbenGrá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észletesebbenPé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észletesebbenA 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észletesebbenAlgoritmuselmé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észletesebbenAlgoritmuselmé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észletesebbenDiszkré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észletesebbenGrá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észletesebben30. 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észletesebbenAdatszerkezetek 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észletesebbenEuler 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észletesebbenAlgoritmuselmé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észletesebbenDiszkré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észletesebbenIII. 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észletesebbenGrá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észletesebbenMelykeres(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észletesebben1: 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észletesebbenProgramozá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észletesebbenAdatszerkezetek 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észletesebbenA 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észletesebbenSzá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észletesebbenAlgoritmuselmé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észletesebbenDiszkré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észletesebbenDiszkré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észletesebbenDiszkré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észletesebbenGrá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észletesebbenDiszkré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észletesebben24. 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észletesebbenPé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észletesebbenbá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észletesebbenOptimalizá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észletesebbenGrá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észletesebbenGrá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észletesebbenFá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észletesebbenVisszalé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észletesebbenMinimá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észletesebbenRekurzió. 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észletesebbenLá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észletesebbenEsemé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észletesebbenDiszkré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észletesebbenDiszkré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észletesebbenMelykeres(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észletesebbenDiszkré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észletesebbenAdatszerkezetek 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észletesebbenStruktú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észletesebben29. 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észletesebbenElő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észletesebbenEgyszerű 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észletesebbenHaladó 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észletesebbenAlgoritmusok é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észletesebbenAlgoritmuselmé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észletesebbenMinimá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észletesebbenAlgoritmusok é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észletesebbenBiná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észletesebben2. 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észletesebbenDiszkré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észletesebbenMelykeres(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észletesebbenDiszkré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észletesebbenEGYSZERŰ, 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észletesebbenTuesday, 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észletesebbenAdatszerkezetek. 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észletesebben23. 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észletesebbenDijkstra 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észletesebbenGrá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észletesebbenAdatszerkezetek 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észletesebbenTotá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észletesebbenDiszkré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észletesebbenAmortizá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észletesebbenElemi 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észletesebbenWeb-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észletesebbenAlgoritmuselmé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észletesebbenAlgoritmuselmé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észletesebbenOptimalizá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észletesebbenProgramozá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észletesebbenA 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észletesebbenELTE 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észletesebbenSpeciá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észletesebbenGRÁ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észletesebben5. 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észletesebbenLá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észletesebbenAdatszerkezetek 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észletesebbenSapientia - 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észletesebbenHAMILTON 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észletesebbenEgyirá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észletesebbenSali 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észletesebben38. 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észletesebbenSzA 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észletesebbenJaví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észletesebbenUgró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észletesebbenAdatszerkezetek 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észletesebbenAdatszerkezetek 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észletesebbenA 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