Legrövidebb útkereső algoritmusok

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

Download "Legrövidebb útkereső algoritmusok"

Átírás

1 EÖTVÖS LÓRÁND TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR Legrövidebb útkereső algoritmusok A diplomamunkát készítette: Podobni Katalin Matematika Bsc Matematikai elemző szakirány Témavezető: Nagy Adrienn PhD hallgató Eötvös Lóránd Tudományegyetem Természettudományi kar Operációkutatási tanszék Budapest, 2009

2 Tartalomjegyzék Tartalomjegyzék 1 Bevezetés Gráfelméleti fogalmak, jelölések Gráfok ábrázolási módjai Legrövidebb út? Mit jelent ez? Az algoritmusok Egy kezdőpontból az összes többi pontba vezető legrövidebb út Szélességi keresés A Dijkstra algoritmus A Bellman-Ford-algoritmus Két adott csúcs közötti legrövidebb út Egy adott csúcsba érkező legrövidebb utak Legrövidebb utak minden csúcspárra Floyd algoritmusa Warshall algoritmusa Johnson algoritmusa A matematikában kevésbé ismert módszerek Informált keresési stratégiák A mohó legjobbat-először keresés Az A* algoritmus Összefoglalás Irodalomjegyzék Köszönetnyilvánítás

3 1. Bevezetés 1 Bevezetés A gráfok rendkívül gyakran használt struktúrák és a gráfokkal foglalkozó algoritmusok alapvető szerepet játszanak a számítástudományban. Számos érdekes probléma fogalmazható meg gráfok segítségével. Ezek közül talán az egyik legjelentősebb a legrövidebb utak problémája. A legkézenfekvőbb példa: hogyan jutunk el a leggyorsabban A városból a B városba? De számos más kérdés is megoldható vele, mint például az ütemezéselmélet témakörébe tartozó J n 2 C probléma, vagy az informatikában a mesterséges intelligencia max területén előforduló nehézségek. A probléma sokszínűsége miatt megoldására számos algoritmus született. A szakdolgozat legfőbb célja, hogy bemutassa ezen eljárások legnépszerűbbjeit, rámutatva előnyeikre, hátrányaikra valamint a közöttük lévő különbségekre, hasonlóságokra. A dolgozat végén bemutatjuk a már fent említett mesterséges intelligencia területén használt két alapvető módszert is, amelyek a matematikai algoritmusokhoz képest már jelentősebb változtatásokat mutatnak. Elsőként alapvető, a szakdolgozat megértéséhez elengedhetetlen gráfelméletbeli fogalmakról esik szó, utána pedig magát a problémát definiáljuk. Ezek után következik az algoritmusok részletes elemzése, melyeket aszerint csoportosítunk, hogy a probléma mely altípusát oldják meg. Természetesen sok példa és ábra is segíti érthetőbbé tenni a témát, illetve hangsúlyozni annak fontosságát. Ezen kívül, a túlzott matematikai ( száraz ) jelleg elkerülése végett a dolgozatban helyet kap a történelmi háttér, valamint az algoritmusok szülőatyjainak főbb életmozzanatai, egyéb szerepük a matematikában. Néhány helyen az algoritmus létrehozóitól vett idézetekkel díszítjük a leírásokat, hogy megismerhessük az ő véleményüket is. 2

4 2. Gráfelméleti fogalmak, jelölések 2 Gráfelméleti fogalmak, jelölések Ebben a fejezetben foglaljuk össze azokat a jelöléseket és fogalmakat, amelyekre elengedhetetlenül szükségünk van a téma kifejtéséhez, és amelyeket a szakdolgozatban használni fogunk. Definíció (gráf): Egy G gráf két halmazból áll: a csúcsok vagy pontok V halmazából, mely egy véges, nem üres halmaz; és az élek E halmazából, melynek elemei bizonyos V-beli párok. Jelölések: - H : egy H halmaz elemszámát jelöli. Az egyszerűség kedvéért legyen most n az adott gráf csúcshalmazának száma. - e vel az élhalmazának elemszámát jelöljük. Tehát G = (V, E) gráf esetében n = V és e = E. Egy gráf nagyon sok probléma szemléltetésére szolgálhat, a legegyszerűbb például az úthálózat, telefonhálózat, de akár terület-felosztási illetve házassági problémát is ábrázolhatunk vele. A gráfokat többféle szempontból is szokás csoportosítani. A legjelentősebb szempont az irányítottság. Definíció (irányított gráf): Az irányított gráfban minden él irányított (másképp fogalmazva a csúcsok rendezettek). Az irányítást nyilak segítségével jelöljük. Az (u, v) irányított él jelölésére használni fogjuk a u v változatot is. 1. ábra: Irányított gráf 3

5 2. Gráfelméleti fogalmak, jelölések Amennyiben nincs irányításunk, vagy ha minden él oda és vissza is irányítva van, akkor irányítatlan gráfról beszélünk. Ekkor nem teszünk különbséget az (u, v) és a (v, u) élpár között. 2. ábra: Irányítatlan gráf Mint ahogy már fentebb utaltunk rá, az objektumok (csúcsok) közötti kapcsolat sokszor jelentheti út létezését vagy kommunikáció lehetőségét. Ilyenkor gyakran költségek vagy súlyok tartoznak az élekhez, amelyek az út esetében időt vagy akár pénzt is jelenthetnek (gondoljunk csak az autópályákra, amelyek használatáért fizetni kell). Ezt a kapcsolatot egy valós értékű függvénnyel fogjuk leírni, melynek értelmezési tartománya a gráf élhalmaza, az érték készlete pedig a valós számok halmaza és k-val, a költség szó kezdőbetűjével jelöljük, tehát k: E R. A súlyokat az élekre szokás írni. 3. ábra: Súlyozott gráf Definíció (út): Egy út akár irányított, akár irányítatlan gráfban csúcsok olyan v 1,, v k sorozata (lehet egyelemű is), melyben minden (v i, v i+1 ) éle (1 i k 1) a gráfnak. Irányított gráfoknál az u-ból v-be menő útra u v jelöléssel is fogunk utalni. Definíció (út hossza): Legyen adott egy G = (V, E) irányított vagy irányítatlan gráf a k(f), f E élsúlyokkal. A G gráf egy u-ból v-be menő útjának hossza az úton szereplő élek súlyának összege. 4

6 2. Gráfelméleti fogalmak, jelölések 2.1 Gráfok ábrázolási módjai Két módszert szokás alkalmazni egy G = (V, E) gráf ábrázolására. Az első az éllistás ábrázolási mód. Definíció (éllista): A gráf minden csúcsához egy lista tartozik. Az iv csúcs listájában tároljuk az i -ből kimenő éleket, és (amennyiben vannak) a súlyukat is. A listák összességét egy tömbben tároljuk. Legyen a tömb neve Szomszéd. Vagyis Szomszéd [ i ] elemei az i csúcs G-beli szomszédjai. Ha G irányított, akkor a szomszédsági listák hosszainak összege E, hiszen egy ( iv, ) élt úgy ábrázolunk, hogy v -t felvesszük a Szomszéd [ i ] listába. Ha G irányítatlan, akkor az összeg 2 E mert ( iv, ) irányítatlan él ábrázolása során i -t beletesszük a Szomszéd [ v ]-be, míg v -t a Szomszéd [ i ]-be. Akár irányított, akár irányítatlan a gráfunk, a szomszédsági listás ábrázoláshoz szükséges tárterület mérete O(max( V, E)) O( V E). Az éllistás ábrázolás legjobban a ritka gráfok esetében alkalmazható. V 2. Definíció (ritka gráf): Egy gráfot ritkának nevezünk, ha E sokkal kisebb, mint (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001) 4. ábra: Súlyozott irányítatlan gráf és a hozzá tartozó éllisták 5

7 2. Gráfelméleti fogalmak, jelölések 5. ábra: Irányított gráf és a hozzátartozó éllisták A második módszer, a szomszédsági (adjacencia)-mátrix. Definíció (szomszédsági mátrix): A G = (V, E) gráf szomszédsági-mátrixa a következő - a V elemivel indexelt nn-es mátrix: A i, j 0 1 ( i, j) E ( i, j) E. Irányítatlan gráfok esetén a szomszédsági mátrix szimmetrikus lesz (azaz A i, j A j, i teljesül minden i, jcsúcspárra). Ha az élekhez még költségeket is nyilván kell tartani, akkor egy olyan K mátrixot szokás használni, amelyben K i, j 0, ha i j, K i, j k( i, j), ha i jés ( i, j) éle G-nek, K i, j egyéb esetben. Tulajdonképpen a jelzi egy él nemlétét. Ezek alapján a fentebb látható 4. ábra adjacencia-mátrixai: A * 3 0 * * * K 10 * * 5 0 * * * 12 * 0 Az éllisták együttesen aszimptotikusan kevesebb tárterületet igényelnek, mint a csúcsmátrix, azonban a használat során a hatékonyságban ugyanennyivel elmaradnak attól, így ha a gráf nem túl nagy, szerencsésebb szomszédsági mátrixszal ábrázolni. Ha a gráf nem súlyozott, akkor az adjacencia mátrixos leírás tovább javítható. Ebben az esetben a mátrix elemei lehetnek bitek, így jelentősen csökkenthető a szükséges tárterület mérete. 6

8 3. Legrövidebb út? Mit jelent ez? 3 Legrövidebb út? Mit jelent ez? Definíció (legrövidebb út): Legrövidebb út alatt a gráfelméletben egy minimális hosszúságú utat értünk egy gráf két különböző u és v csúcsa között. Amennyiben a gráfunk éleihez nem tartoznak súlyok, akkor ez egyet jelent egy olyan úttal u és v csúcs között, amelyben a legkevesebb él szerepel. Ha vannak súlyok a gráf élein, akkor pedig olyan útról beszélünk, amelynek élein szereplő súlyok összege minimális. Vagyis ha adott egy G = (V, E) gráf a k(f), f E élsúlyokkal, akkor ahol P út u és v között. d ( u, v ) min k ( f ) f P Egyes könyvekben ez a definíciója az u és v csúcsok közötti távolságnak, illetve a legrövidebb út súlyának, ha u 0, ha nincs út u és v között, akkor. v, ha u v akkor ez a távolság, illetve súly Az alábbi változatokra osztható a probléma (és a továbbiakban ez alapján csoportosítjuk az algoritmusokat): 1. Legrövidebb út egy kiinduló pont és az összes többi pont között: meg szeretnénk találni az összes vv csúcshoz egy adott sv kezdőcsúcsból odavezető legrövidebb utat. 2. Legrövidebb út két különböző csúcs között: keressük egy adott u csúcsból egy adott v csúcsba vezető egyik legrövidebb utat. 3. Legrövidebb út egy végpont és az összes többi pont között (ez az 1. megfordítása). 4. Legrövidebb út az összes csúcspár között: keressük az összes u és v csúcspárra egy u -ból a v csúcsba vezető legrövidebb utat. Természetesen akadhat olyan legrövidebb út probléma, amelyben előfordulnak negatív élek. Definíció (negatív kör): A G = (V, E) irányított gráf olyan köre, amelyben az élek súlyának összege negatív. Amennyiben nincs a gráfban negatív kör bármelyik vv csúcs esetén a legrövidebb út súlya jóldefiniált marad. Ha vannak u -ból elérhető negatív körök, 7

9 3. Legrövidebb út? Mit jelent ez? akkor viszont a legrövidebb út súlya definiálatlan lesz, ugyanis ilyen esetben mindig van kisebb súlyú rövidebb út, ha a feltételezett legrövidebbhez hozzávesszük a negatív kör egy bejárását. Ilyen esetekben ezt a távolságot -nek definiáljuk. (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001) 8

10 4 Az algoritmusok 4.1 Egy kezdőpontból az összes többi pontba vezető legrövidebb út Szélességi keresés A szélességi keresés az egyik legegyszerűbb gráfbejáró algoritmus, ezen alapul sok fontos gráf algoritmus, többek között Dijkstra algoritmusa is. Ez az eljárás az egységnyi súlyokkal ellátott gráf esetén keresi meg az uv kezdőpontból az összes többi pontba vezető legrövidebb utakat (ebben az esetben a legrövidebb út alatt a legkevesebb élből álló utat értjük) úgy, hogy G éleit szisztematikusan megvizsgálja és kiszámítja az elérhető csúcsok távolságát (legkevesebb él) u -tól. Elnevezése onnan ered, hogy az algoritmus az u -tól k távolságra lévő csúcsokat még azelőtt eléri, mielőtt egy k 1 távolságra levőt elérne, szemléletesen: egy egyre szélesedő körben vizsgálódik. A továbbiakban feltesszük, hogy a G = (V, E) gráfot éllistásan ábrázoljuk. Egyszerű szavakkal megfogalmazva az eljárás a következő: meglátogatjuk az első csúcsot, majd ennek a csúcsnak az összes szomszédját. Azután ezen szomszédok összes olyan szomszédját, ahol még nem jártunk, és így tovább. A legjobb ismert módszer ennek megszervezésére egy sort alkalmaz. Először beletesszük a kezdőcsúcsot, majd meglátogatottsági sorrend szerint annak az összes szomszédját, majd a kezdőcsúcs elsőként meglátogatott szomszédjának összes szomszédját, majd a kezdőcsúcs másodikként meglátogatott szomszédjának összes szomszédját és így tovább. Definíció (sor): A sor adatszerkezet alapja egy elemekből álló kettős láncolt lista. Két alapművelet van: sorba ( vq, ) a v elemet a Q sor végére illeszti; első ( vq, ) pedig visszaadja és kitörli Q -ból annak első elemét. A sort szokás még FIFO-listának (first in, first out) is nevezni. A módszer általános lépéseinek lényege, hogy vesszük a sor elején levő u csúcsot. Ezt töröljük a sorból, meglátogatjuk azokat a v szomszédjait, amelyeket 9

11 eddig még nem láttunk, majd ezeket a v csúcsokat a sor végére tesszük. Jelentse Dv a v csúcsnak az u -tól való távolságát. BEJÁR ( Gu, ) eljárás 1. procedure bejár 2. begin 3. for s 1 to n do 4. bejárvas :=HAMIS 5. for s : 1 to n do 6. if bejárvas =HAMIS then 7. szb () s 8. end 9. procedure szb () s 10. var 11. Q :csúcsokból álló sor 12. uv:csúcsok, 13. begin 14. bejárvas :=IGAZ 15. sorba ( sq, ) 16. while Q nem üres do 17. begin 18. u :=első ( Q ) 19. for minden u v E élre do 20. if bejárvav =hamis then 21. begin 22. bejárvav :=IGAZ 23. sorba ( vq, ) 24. Dv Du end 26. end 27. end A bejárás során felépíthetjük a gráf egy szélességi feszítő erdejét. E fákban osztályozhatjuk az éleket: Definíció (éltípusok): Tekintsük a G irányított gráf egy szélességi bejárásaként kapott T szélességi erdőt, G egy u faél, ha u v éle T -nek, v éle: előreél, ha u v nem faél, v leszármazottja u -nak T -ben, és u v; visszaél, ha u leszármazottja v -nek T -ben, 10

12 keresztél, ha u és v nem leszármazottai egymásnak. Az alábbi 6. ábra szemlélteti az éltípusokat: 6. ábra: e-előreél, f-faél, k-keresztél, v-visszaél A szélességi bejárás költsége O( n e), mert minden csúcsot pontosan egyszer teszünk be a sorba, és minden irányított élet egyszer vizsgálunk meg (amikor a kezdőpontja kikerül a sorból). A szélességi bejárás segítségével a d( u, v ) távolságok lineáris időben meghatározhatók, ugyanis a következők teljesülnek: Tétel: Legyen u x1, x2,..., xn a csúcsoknak a szélességi bejárás szerinti sorrendje. Ekkor 1. Dx Dx Dx 2. Ha u v n 3. Dv d( u, v) éle G-nek, akkor Dv Du 1. teljesül minden v V csúcsra. Bizonyítás: 1. Könnyen látható, hogy a csúcsok az u x1, x2,..., xn sorrendben kerülnek bele a Q sorba, tehát így is kerülnek ki. Tehát ha egy xi u csúcs előbb van mint xi 1, akkor x szülője is megelőzi xi 1 szülőjét a sorban, ebből könnyen látszik, hogy Dx1,..., Dx n számsorozat nem csökkenő. Indukció alapján ez könnyen belátható a gyökérre és a fiaira, később pedig Dx Dszülő x i ( ) 1 és i 11

13 Dszülő x D x ( ) 1, ha az apák különbözők, akkor i1 i1 D szülő ( x ) D szülő ( x ) D x D x. Amennyiben a szülők i i1 i i1 megegyeznek, akkor Dx i D x. i 1 2. Vizsgáljuk meg, mi történik, ha v kikerül a Q sorból, és tekintsük ( uv, ) élet. Ha bejárva u = hamis, akkor u szülője v, tehát Du Dv 1. Ha u -t már korábban láttuk, akkor nyilván u szülője előbb van a sorban, mint v, vagyis az előző alapján: Dszülő ( u) Dv. Ebből pedig világosan látszik a bizonyítani kívánt egyenlőtlenség, csak mindkét oldalhoz egyet kell hozzáadni. 3. Nyilvánvaló, hogy Dv d( u, v) érvényes minden v V csúcsra, elég tehát a fordított egyenlőtlenséget igazolni. Legyen u y0, y1,..., yk v egy minimális hosszúságú G-beli irányított s -ből v -be vezető út. Ennek éleire sorra alkalmazzuk a tétel előzőleg már bebizonyított 2. állítását és láthatjuk, hogy ez az állítás is helyénvaló A Dijkstra algoritmus Dijkstra algoritmusa egy adott kezdőcsúcsból az összes többi csúcsba vezető legrövidebb utak problémáját egy súlyozott, irányított G = (V, E) gráfban, abban az esetben oldja meg, ha a nincsenek negatív súlyok az éleken, vagyis ha minden u v élre k( u, v) 0 teljesül. Az algoritmust Edsger Wybe Dijkstra, holland matematikus és informatikus alkotta meg 1956-ban Edsger Wybe Dijkstra 7. ábra: Edsger Wybe Dijkstra 12

14 Edsger Wybe Dijkstra 1930-ban született a hollandiai Rotterdamban. Szülei elismerten jó végzettségű értelmiségiek voltak, édesapja kémikus, édesanyja matematikus volt ben, 12 éves korában bekerült egy igen magas színvonalú gimnáziumba, az Erasminium Gimnáziumba, ahova kivételes tehetségek jártak. Dijkstra sok különböző tárgyat tanult, mint például: görög, latin, francia, német és angol nyelv, valamint biológia, matematika és kémia ben még jogi pályára készült, hogy utána képviselőként dolgozzon. Azonban abból kifolyólag, hogy kémiából, biológiából és matematikából jó eredményei voltak, úgy döntött, hogy a leideni egyetemen folytatja tanulmányait és elméleti pszichológiát hallgat nyarán a cambridge-i egyetemen ismerkedett meg először a programozással márciusától részmunkaidőben dolgozott egy amsterdami matematikai központnál, ekkor kezdte el igazán érdekelni az informatika. Amilyen gyorsan csak lehetett befejezte a pszichológiai tanulmányait és elkezdett hódolni ennek az új szenvedélyének. Miután 1957-ben megházasodott, folytatta munkáját a matematikai központban, miközben az 1970-es évek elején az egyesült államokbeli Borroughs Corporation kutatási tagja is volt ben megkapta az ACM Turing Díjat, ben az AFIPS Harry Good Memorial Díjat. Az 1980-as évek elején a texasi Austinba költözött, majd 1984-ben állást is kapott az Informatikai Tudományok Egyetemén, ahol 69 éves koráig dolgozott ben lett professor emeritus. Rákban halt meg nueneni otthonában augusztus 6-án. Főbb publikációi: - Go To Statement Considered Harmful Communications of the ACM (1968), - A note on two problems in connexion with graphs. Numerische Mathematik (1959) - Structured Programming, melyet O.-J. Dahl-el és C. A. R. Hoare-val írt ben. Néhány cikke: - The Humble Programmer (1972. augusztus) - How do we tell truths that might hurt? (1982. május) (Wikipedia, 2007) A másodikként említett publikációja alapján, hogyan is gondolkodott ő a gráfok problémáiról: 13

15 Összefüggő gráfok két problémája Tekintsünk n darab pontot, melyek közül néhányat vagy mindegyiket él köt össze, az élek hossza adott. Tegyük fel, hogy legalább egy él létezik valamely két pont között. Nézzük az alábbi két problémát: Első probléma: Készítsük el az n csúcs minimális költségű fáját. (Azt a fát, amelyben minden csúcs között egy és csakis egy út vezet.) Az algoritmus első lépéseként három csoportra osztjuk az éleket. I. Az eljárás során már elfogadott élek. II. A következő lépésben az I. csoportba választandó élek halmaza. III. A kimaradó élek (vagy már elutasítottuk őket, vagy még nem vizsgáltuk meg). A csúcsokat két csoportba sorolhatjuk. A: Azon élek végpontjai, amelyek az I. csoportban vannak. B: A kimaradó csúcsok (egy és csakis egy II. csoportbeli él vezet minden ilyen kimaradó csúcshoz). Kezdjük az eljárást egy tetszőleges A csoportbeli csúccsal, majd válasszuk ki azokat a II. csoportbeli éleket, amelyeknek egyik végpontja az A csúcs. Kezdetben az I. csoport üres. Ezek után ismételjük az alábbi két lépést: 1. lépés: A II. csoport legrövidebb élét tegyük I-be és az eddig a B csoportban lévő végpontját tegyük A- ba. 2. lépés: Tekintsük azokat az éleket, amelyek az éppen előbb az A csoportba helyezett csúcsból indulnak és egy B csoportbeli csúcsba érkeznek. Ha ezen élek közül valamelyik hosszabb, mint a neki megfelelő II. csoportbeli él, akkor elutasítjuk; amennyiben rövidebb annál, akkor kicseréljük őket és ezt az élt tesszük a II. csoportba, és a másikat vetjük el. Ezután visszatérünk az 1. lépéshez és a két lépést addig ismételgetjük, amíg a B és a II. csoport üres nem lesz. Végül az I. csoportban lévő élek megadják a keresett fát. Ez a megoldás használhatóbb, mint a Kruskal-, a H.Loberman- vagy a A.Weinberger-féle módszer. Az ő megoldásukban az összes élek elsősorban a hosszúság szerint vannak osztályozva. Még akkor is, ha az a csúcsok koordinátáiból kiszámolható, az eljárásukban az összes él egyidejű tárolása szükséges. A fenti eljárás során legfeljebb csak n darab él adatát kell tárolni, ugyanis a 2. lépés során csak az I. és a II. csoportbeli éleket vizsgáljuk. ( ) (E.W.Dijkstra, 1959) Dijksta algoritmusa éllistával A Dijkstra algoritmus azoknak a csúcsoknak az S halmazát tartja nyilván, amelyekhez már meghatározta az u kezdőcsúcsból odavezető legrövidebb út 14

16 súlyát. Az algoritmus minden lépésben a legkisebb legrövidebb-út becslésű xv S csúcsot választja ki, beteszi az x -t S -be, és minden x -ből kivezető éllel egy-egy közelítést végez. A V S csúcsok nyilvántartására egy Q sort alkalmazunk, amelyet azok d értékeivel töltünk fel. DIJKSTRA ( Gu, ) eljárás 1. procedure Dijkstra 2. begin 3. for minden v V csúcsra do 4. Dv : 5. szülőv: 6. end 7. Du 0 8. var 9. S : 10. Q : csúcsokból álló sor 11. begin 12. while Q nem üres do 13. begin 14. x : minimális Q 15. S : S x 16. for minden vszomszéd x 17. if Dv Dx k( x, v) 18. begin 19. : A Dijkstra algoritmus mohó stratégiát alkalmaz, hiszen mindig a legközelebbi csúcsot választja ki V S -re do then Dv Dx k( x, v) 20. szülőv x 21. end 22. end 23. end -ből, hogy azután az S halmazba tegye. A mohó stratégiák általában nem adnak optimális eredményt, de az alábbi tétel mutatja, hogy a Dijkstra algoritmus szükségszerűen a legrövidebb utakat állítja elő. Tétel (Dijkstra algoritmus helyessége): Ha Dijkstra algoritmusát egy nemnegatív k súlyfüggvénnyel súlyozott, u kezdőcsúcsú irányított G = (V, E) gráfban futtatjuk, akkor annak befejezésekor minden x V csúcsra teljesül, hogy Dx d u, x. 15

17 Bizonyítás: Indirekten tegyük fel, hogy x az első olyan csúcs, amire az S halmazba történő beillesztésekor igaz, hogy Dx d( x, u). Nyilván x u, tehát S közvetlenül x beillesztése előtt, tehát léteznie kell egy u és x csúcs közötti útnak, különben Dx d( u, x) kezdeti Dx d( x, u) egyenlőség fennállna, és ez ellentmondana a feltevésünknek. Ezek alapján léteznie kell egy p legrövidebb útnak u és x között, ahol u S és xv S. Legyen y az első olyan csúcs a p úton, amely már a V S halmazban van, és legyen y szülője a p úton a z csúcs. Ezek alapján a p -t felbonthatjuk két részre: p1 re és p2 re, ahol p 1 az u és a z csúcs közötti út, amelynek csúcsai S -ben vannak, p 2 pedig az y és az x csúcs közötti út, amelynek minden pontja V S halmazban van. Mivel y egy u és x csúcs közötti legrövidebb úton az x előtt van, a súlyok nemnegatívak valamint és így D y d( u, y) d( u, x) Dx d( u, y) d( u, x). De x és y is a V S halmazban van, ahonnan az algoritmus 8. sora az x -et úgy választja ki, hogy a D y egyenlőtlenség fennáll. Tehát Dx d( u, x) D x kezdeti feltevésünknek, vagyis Dx d( u, x) Leiserson, Ronald L. Rivest, 2001), amely ellentmond a. (Thomas H. Cormen, Charles E Az algoritmus futási ideje 8. ábra: Dijkstra algoritmusának működése Amennyiben a Q sort tömbbel valósítjuk meg: a kezdőértékek beállítása On ( ) elemi lépést vesz igénybe. A 14. sorban a minimumkeresés és a 17. sorban lévő 16

18 vizsgálat szintén On ( )-et, mivel a 14. sorban levő minimumkeresés n 1-szer fut le, így az algoritmus összidőigénye 2 On ( ) művelet. A további elemzéshez szükséges bevezetni néhány új fogalmat: Definíció (kupac): Egy olyan adatszerkezet, amely segítségével egy rendezett halmaz egy S részhalmazát tároljuk. A kupac elemeit bináris fában tároljuk. Definíció (minimumtörlés): A kupacszerkezet egyik alapművelete. Az adott rendezés szerinti legkisebb elem törlése. Definíció (kupac-tulajdonság): Egy tetszőleges csúcs elem nem lehet nagyobb a fiaiban levő elemeknél. Definíció ( d -kupac): Az S elemit egy teljes d -fa csúcsaiban helyezzük el úgy, hogy teljesüljön a kupac-tulajdonság. Ha a gráf ritka, akkor célszerű a Q sort bináris kupaccal implementálni a D értékek szerint. A kezdeti kupacépítés On ( ) költséggel végezhető el. A 14. sorban lévő minimumkeresést egy O(log n ) költségű minimumtörlés művelettel oldjuk meg. A D értékeinek újraszámolását és a kupac-tulajdonság helyreállítását csak a választott csúcs szomszédjaira kell elvégezni. Minden csúcsot pontosan egyszer választunk ki, és a szomszédok számának összege e. Tehát az összidőigény O(( n e)log n). Sűrű gráfok esetén még komolyabb gyorsítás érhető el alkalmas d -kupaccal. Ekkor a futási idő O( n nd log n elog n) lesz Az utak nyomon követése d d Sokszor nemcsak a legrövidebb utak hosszára vagyunk kíváncsiak, hanem magukra az utakra is: az algoritmus 20. sora tartalmazza ezt, hiszen minden csúcs szülőjét feljegyezzük és akár egy újabb tömbben elhelyezhetjük, anélkül, hogy a futási időt megnövelnénk. 17

19 Érdekességek Természetesen a módszer működik irányítatlan gráfok esetén is hiszen, ahogy már említettük minden irányítatlan él felfogható úgy, mintha mindkét irányban irányított lenne. Ezek alapján már nem csodálkozunk azon, hogy mennyi mindenre jó ez az eljárás. Többek között az ütemezéselméletben előforduló J n 2 C problémára, melynek jelentése: két olyan munkának a befejezési idejét szeretnénk minimálisra szorítani, amelyek számos kisebb részmunkából tevődnek össze. A részmunkákat több különböző gép végzi el, a gépek sorrendje tetszőleges. Legyen adott a két munka megmunkálási ideje, jelöljük ezt pi, j-vel, ahol az i a gépek, a j pedig a munkák sorszáma. Például a p4,3 5 óra jelentése: a harmadik munkát a negyedik gép 5 óra alatt végzi el. Ebben a feladatban j 1 vagy 2, i m, ahol mz +. Ezen kívül adottak még minden j -re a gépek egy j sorrendje. A megadott sorrendek alapján könnyen ábrázolhatjuk a folyamatot. max 9. ábra: A folyamat szemléltetése Az ábra y tengelyén a 2 szerinti p i,2 hosszú részek adják a felosztást, míg az x tengelyén a 1 szerinti p i,1 hosszú részek. A kép egy hatgépes esetet mutat be. A 18

20 szürkével jelzett négyzetek a tiltott négyzetek, az azonos hosszúságú szakaszok metszete, az ábra O pontjából F pontjába tartó sötétszürke görbe a megengedett görbe. Jól látható, hogy vízszintes, függőleges és 45 -os szakaszok alkotják. Fontos tulajdonsága, hogy nem lép be tiltott négyzetbe, valamint ha vízszintesen halad, akkor y nem lehet belső koordináta, ha függőlegesen, akkor pedig x nem lehet az. Lemma: Minden megengedett ütemezés megad egy ilyen P megengedett görbét, S továbbá Cmax h( P), ahol hp= ( ) vízszintes szakaszok hossza + függőleges szakaszok hossza + a 45 -os szakaszok vetületének hossza ( C minimális befejezési idő). (A lemma fordított irányban is igaz.) S max : az S ütemezés által kapott Ezek után könnyű meghatározni a célt: a legrövidebb görbe meghatározása. Van még egy szembetűnő dolog az ábrán: a tiltott négyzetek bal felső és jobb alsó sarkában látható pontok, ezek az úgynevezett speciális pontok. Ezek segítségével definiáljuk a speciális részgörbéket és a speciális görbét. Definíció (speciális részgörbe, speciális görbe): A speciális részgörbe speciális pontokat köt össze. A speciális görbe pedig a speciális részgörbék uniója. Lemma: Minden megengedett P görbéhez h( P) h( P'). P' speciális görbe úgy, hogy Vagyis keressük azt a legrövidebb speciális görbét, amely O -ból F -be megy. Ez alapján a feladat ekvivalens egy legrövidebb út problémával, ahol a gráfunk pontjai a speciális pontok, az élei a speciális pontokból indulnak az onnan induló speciális részgörbék másik végpontjába, melyekből egy vagy kettő lehet. Az élhosszúságot a h alapján kapjuk, amelyek nemnegatívak, hiszen megmunkálási időkről beszélünk. A másik érdekes dolog, hogy a Dijkstra algoritmus módosításával legbiztonságosabb utat is lehet keresni. Legyenek az élsúlyok a tönkremenés valószínűségei, vagyis minden e élhez adott egy p valószínűség, hogy az adott él tönkremegy-e. Ezek alapján egy P út el 19

21 nem romlási, megmaradási esélye (1 pe ( )). Ezt szeretnénk maximalizálni. ep Vegyük ennek a kifejezésnek a logaritmusát (ezt megtehetjük, mert a logaritmus függvény monoton) és ezt maximalizáljuk: max (1 pe ( )) ep max log (1 p( e)) max log(1 p( e)) min ( log(1 p( e))) ep ep Ezek alapján írjuk át a gráfunk költségeit, legyen az új költség: k( e) log(1 p( e)). Erről tudjuk, hogy nemnegatív, vagyis alkalmazható a Dijkstra algoritmus erre az új költségekkel ellátott gráfra. Lássunk egy egyszerű példát: tegyük fel, hogy egy háborús övezet katonái az alábbi 10. ábra lévő térképet kapják az ellenséges területről. A katonáknak el kell jutni az egyessel jelzett városból a kettessel jelzett városba. A gráf élein szereplő valószínűségek azt mutatják, hogy az i -dik városból a j -dik városba mekkora eséllyel nem sikerül eljutni. ep 10. ábra: A kapott térkép A következő 11. ábra mutatja, hogy melyik utat kell választaniuk, hogy a legnagyobb eséllyel eljussanak a kettes jelzésű városba. 11. ábra: A legbiztonságosabb út 20

22 4.1.3 A Bellman-Ford-algoritmus A Bellman-Ford-algoritmus az adott kezdőcsúcsból induló legrövidebb utak problémáját abban az esetben oldja meg, amikor vannak az élek között negatív súlyúak, de nem találunk a gráfban negatív kört. Az algoritmus szülőatyjaként Richard Bellmant és ifjabb Lester Randolph Fordot tisztelik Lester Randolph Ford, Richard Bellman Ifjabb Lester Randolph Ford szeptember 23-án született. A Network Flow programozás egyik úttörője. Édesapja az idősebbik L.R. Ford, aki maga is elismert matematikus, a Farey sorozatokra adott egy bámulatos értelmezést. Ifjabb L.R. Ford nevéhez fűződik többek között a Ford-Fulkerson algoritmus is, amely a maximális folyam problémát oldja meg. (Singh Nayandeep, 2001) Richard Ernest Bellman (1920. augusztus március 19.) alkalmazott matematikus volt, az 1953-as dinamikus programozás terén elért felfedezéséért volt méltán ünnepelt, valamint nevéhez köthető, sok a matematika más területén elért eredmény is. 12. ábra: Richard E. Bellman New Yorkban született, ahol édesapja, John James Bellman egy élelmiszerüzletet vezetett a Bergen utcában a Prospest Park közelében Brooklynban. Bellman a középiskolát 1937-ben fejezte be az Abraham Lincoln Középiskolában (New York), és matematikát hallgatott a brooklyni főiskolán, ahol 1941-ben szerezett BA diplomát, a későbbiekben pedig a Wisconsin-Madison Egyetemen megszerezte az MA diplomát is. A II. világháború idején a hadseregnél az Elméleti Pszichológia Részlegen dolgozott Los Alamosban ban megszerezte a Ph.D titulust a Princetonon. A dél kaliforniai egyetem professzora 21

23 volt, ösztöndíjas kutatója az amerikai Tudományok és Művészetek Akadémiájának (1975), valamint tagja a nemzeti Mérnöki Akadémiának (1977) ben az IEEE Becsület Medállal tüntették ki A döntési eljárások és az ellenőrző rendszerek területén elért eredményéért, különösen a dinamikus programozásban alkotottakért. Legfőbb műve a Bellman-Egyenlet. (Wikipedia, 2009) Az eljárás Adott egy k: E R súlyfüggvénnyel súlyozott irányított G ( V, E) gráf, ahol a kezdőcsúcs az s. Az algoritmus visszajelzi, ha van a gráfban s -ből elérhető negatív kör, ha nincs benne, akkor előállítja a megoldást. BELLMAN-FORD( D, k, s ) eljárás. 1. procedue Bellman-Ford 2. begin 3. for minden v V csúcsra do 4. Dv : 5. szülőv: 6. end 7. begin 8. for i 1 to n 1 do 9. begin 10. for minden ( uv, ) élre 11. if Dv Du k( u, v) then 12. begin D v : D u k( u, v) szülő v: u 15. end 16. end 17. end 18. begin 19. for minden ( uv, ) élre do 20. if Dv Du k( u, v) Az 1-6. sorok a kezdeti értékek beállítását mutatják. Aztán a sorok ugyanazt az ellenőrzést végzik el mint a Dijkstra algoritmus esetében, végül a sorok keresnek negatív köröket. then 21. return HAMIS 22. return IGAZ 23. end 22

24 Mielőtt az eljárás helyességének bizonyítására térnénk, definiáljuk a legrövidebb-utak fa fogalmát, valamint bevezetünk két jelölést is. Definíció (legrövidebb-utak fa): Legyen G ( V, E) egy irányított, k: E R súlyfüggvénnyel súlyozott gráf, és feltesszük, hogy G nem tartalmaz s kezdőcsúcsból elérhető negatív kört, azaz a legrövidebb utak jól definiáltak. Egy s-gyökerű legrövidebb-utak fa egy olyan G' ( V ', E ') részgráf, ahol V' V és E' E úgy, hogy - V ' az s-ből elérhető G-beli csúcsok halmaza, - G ' egy s gyökerű fa, és - minden v V csúcsra G ' -beli s-ből vezető út egy legrövidebb s-ből v-be vezető út a G-ben. Jelölések: - V szülő : a nem szülőjű G-beli csúcsokat tartalmazza és az s kezdőcsúcsot: V szülő = v V : szülő v s. - E szülő : azok az irányított élek, amelyek a szülő értékekből vezetnek a V szülő -beli csúcsokba: E szülő = szülő v, v E : v Vszülő s. Tétel (A Bellman-Ford-algoritmus helyessége): Egy G ( V, E) irányított gráfon futtassuk a BELLMAN-FORD-eljárást, ahol a súlyfüggvény a k: E R, és a kezdőcsúcs az s. Ha G nem tartalmaz az s-ből elérhető negatív köröket, akkor 1. minden v V csúcsra Dv d( s, v), 2. a végeredményül kapott fa egy s gyökerű legrövidebb-utak fa (jelöljük ezt G szülő =(V szülő,e szülő )-vel) 3. az algoritmus IGAZ értéket ad vissza, vagyis megadja a keresett legrövidebb utat. 4. Ha G tartalmaz s-ből elérhető negatív kört, akkor az eljárás HAMIS értékkel tér vissza. Bizonyítás: Tegyük fel, hogy G nem tartalmaz s -ből elérhető negatív kört. 1. Tegyük fel, hogy v elérhető s -ből, legyen p v0, v1,..., vk egy s -ből v -be vezető legrövidebb út ( v0 s, vk v). A p út egyszerű (nincs benne ismétlődő 23

25 csúcs), tehát k n 1. Indukcióval könnyen bizonyíthatjuk, hogy minden i0,1,..., kra Dv d( s, v ). Kezdetben Dv Tegyük fel, hogy Dv i i 0 d( s, s) 0 nyilván teljesül. d( s, v ) fennáll, az i dik lépésben az ( vi 1, vi) éllel i1 i1 való összehasonlítás hatására Dv d( s, v ) i 24 i, és ez meg is őrződik az eljárás során, mert: Dv Du k( u, v) d( s, u) k( u, v) d( s, v). (Tudjuk, hogy d( s, v ) alulról korlátozza Dv értékét.) Ha nem vezet út s -ből v -be, akkor az eljárás Tehát Dv d s, v akkor a távolságuk végtelen. Dv értékkel tér vissza., mert definíció szerint, ha két csúcs között nincsen út, 2. Az első tulajdonság bebizonyítása nagyon egyszerű. Definíció szerint egy legrövidebb út akkor és csak akkor véges, ha van a két csúcs között út. Az algoritmus során egy s -től különböző v csúcs akkor és csak akkor kap véges értéket, ha szülőv. A második tulajdonság bizonyítása indirekten történik. Tegyük fel, hogy Gszülő - ben van kör, bizonyítandó, hogy ez negatív kör. (Ekkor G -ben is kell lennie, de az ellentmondáshoz vezet.) A körön minden csúcs D értéke véges, vagyis elérhetők s -ből. Indukció és az algoritmus sorai alapján az alábbi egyenlőtlenség kapható: ahol c v0, v1,..., vk a kör v v k k k D v D v k( v, v ) i i 1 i1 i i1 i1 i1 k. 0 Mivel a c kör minden csúcsa pontosan egyszer szerepel az egyes összegekben: Ebből következik, hogy k Dvi Dvi 1 i1 i1 k 0 k( vi 1, vi) i1 Vagyis azt kaptuk, hogy G tartalmaz negatív kört, ami viszont elvezet a keresett ellentmondáshoz. k

26 A harmadik tulajdonság bizonyításának első lépése hogy igazoljuk, hogy ezek az utak valóban léteznek. Ez teljes indukcióval könnyedén megtehető. Azt kell még belátni, hogy legfeljebb egy út megy s -ből minden vv szülő -beli csúcshoz. Indirekten tegyük fel, hogy két út is létezik valamely v V csúcshoz. szülő 13. ábra: Annak bizonyítására, hogy csak egy s-ből v-be menő út van G szülő -ben A p1 út s -ből v -be: s u x z v, a p 2 út s -ből v -be: s u y z v, ahol x y. Ám ekkor szülő z teljesül. 3. A befejezéskor minden ( u, v) x és szülő z y, ami csak x y esetén E élre: D v d( s, v) d( s, v) k( u, v) D u k( u, v) Tehát a 20. sorban lévő ellenőrzés után sem kapunk HAMIS értéket. 4. Tegyük fel, hogy G -ben van negatív kör, jelöljük c v0, v1,..., vk v k v 0, és tegyük fel, hogy az eljárás IGAZ értékkel tér vissza. -vel, ahol k Mivel c egy negatív kör, ezért: k( vi 1, vi) 0. A feltevésünk miatt (IGAZ értékkel tér vissza az algoritmus) az alábbi egyenlőtlenség teljesül: i1 k k k D v D v k( v, v ) i i 1 i1 i i1 i1 i1 Mivel a c kör mindegyik csúcsa pontosan egyszer szerepel az első két összegben, így k k Dvi Dvi 1 i1 i1 Vagyis 0 k( vi 1, vi), ami ellentmondás. i1 (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 2001) k 25

27 14. ábra: A Bellman-Ford eljárás működése Az eljárás futási ideje és a legrövidebb út nyomon követése Az algoritmus futási ideje O( ne ), mivel a kezdő értékek beállítása On ( ) az n 1 darab csúcson végzett összehasonlítás mindegyike Oe () ideig tart és a sorokban lévő ellenőrzés Oe () idejű. A legrövidebb út nyomon követése ugyanúgy megy, mint a Dijkstra algoritmusnál. A időt. szülőv értékeket eltesszük egy tömbbe, ez nem növeli a futási 4.2 Két adott csúcs közötti legrövidebb út Nyilvánvalóan, ha megoldjuk az adott csúcsból az összes többi csúcsba vezető legrövidebb utak problémáját, akkor a két adott csúcs közötti legrövidebb út problémát is megoldottuk. Érdekes azonban, hogy nem ismert ennek a problémának olyan megoldó algoritmusa, amelyik aszimptotikusan gyorsabb lenne az adott csúcsból az összes többi csúcsba vezető legrövidebb utak problémájánál. Dijkstra a következőképpen elmélkedett erről a problémáról Numerische Mathematik című művében. Összefüggő gráfok két problémája Tekintsünk n darab pontot, melyek közül néhányat vagy mindegyiket él köt össze, az élek hossza adott. Tegyük fel, hogy legalább egy él létezik valamely két pont között. Nézzük az alábbi két problémát: ( ) Második probléma: Keressük meg a legrövidebb utat két adott pont, P és Q között. Használjuk ki azt a tényt, hogy az R csúcs rajta van a P és Q közti legrövidebb úton, a majdani ismeretek tartalmazzák a P és R közti legrövidebb utat. A megoldás során megkapjuk az összes többi csúcsba menő legrövidebb utat, melyek a hosszúságok sorrendjében keletkeznek, egészen addig, amíg Q-t el nem érjük. 26

28 A megoldás első lépése, hogy a pontokat három csoportba osztjuk. A: Azok a csúcsok, amelyeknek P-től vett távolsága minimális. Ebbe a csoportba csak a P-től minimális távolságra lévő csúcsokat vesszük bele. B: A következő lépésben az A csoportba választható csúcsok halmaza. Ebben a csoportban az A halmazbeli pontokhoz kapcsolódó csúcsok vannak (a belőlük kiinduló él másik végpontja már A- ban van). C: Kimaradó csúcsok. Az éleket is 3 csoportba soroljuk: I. A P csúcs és az A csoportbeli pontok közötti minimális utat alkotó élek. II. Azoknak az éleknek a halmaza, amelyekből kiválasztjuk a I. csoportba helyezendő élet; egy és csakis egy él vezet ebből a halmazból mindegyik B halmazbeli csúcshoz. III. A kimaradó csúcsok (vagy már elutasítottuk őket, vagy még nem vizsgáltuk meg). Kezdetben minden csúcs C-ben, és minden él a III csoportban van. Először tegyük a P csúcsot az A csoportba, majd az alábbi lépéseket ismételgessük. Első lépés: Tekintsük az összes olyan r élet, amely az éppen az A csoportba tett csúcs és R között mennek, ahol R lehet a B illetve a C csoportban is. Ha R a B csoportban van, akkor vizsgáljuk meg, hogy ennek az r élnek a használata egy rövidebb utat eredményez-e, mint a neki megfelelő (ugyanabba a csúcsba menő) eddig ismert II. csoportbeli út. Ha nem kapunk rövidebb utat az r él használatával, akkor r-et elutasítjuk (a III. csoportba tesszük), ha az r él használatával a kapott út rövidebb, mint a neki megfelelő út, akkor az eddig ismert utat lecseréljük erre az új, r élet használó útra. Amennyiben az R csúcs C-ben van, tegyük B-be és az r élet pedig a II. csoportba. Második lépés: Minden B csoportbeli csúcs és a P csúcs között egy és csakis egy út vezet, ha csak az I. és II. csoportba tartozó éleket vizsgáljuk, tehát minden egyes B csoportbeli csúcsnak véges távolsága van P csúcstól: azt a csúcsot, amelynek a legkisebb a távolsága P-től, tegyük az A halmazba, és a megfelelő élet helyezzük a II. csoportból az I. csoportba. Ezután térjünk vissza az első lépéshez és ismételgessük őket addig, amíg a Q csúcs az A halmazba nem kerül. Ekkor megkapjuk a keresett utat. Megjegyzések: 1. A fenti eljárás abban az esetben is alkalmazható, ha az élek hossza függ attól, hogy elutasítjuk, vagy megtartjuk őket. 2. Az I. és a II. csoportban lévő élek esetében érdemes feljegyezni a csúcsaik távolságát P-től (növekvő sorrendben). Az I. csoportbeli élek esetén ez a tényleges minimális távolságot jelenti, míg a II. csoportbeli élek esetén az eddig ismert minimális távolságot. Ez a megoldás hatékonyabb, mint a L.R.Ford-féle megoldás, abból a szempontból, hogy nem kell az összes élről egyidejűleg eltárolni az adatokat, elegendő csupán az I. és a II. csoportbeli élek adatait 27

29 tudnunk, és ez a szám mindig kevesebb, mint n. Ezen kívül a futási ideje is lényegesen kevesebb. (E.W.Dijkstra, 1959) 4.3 Egy adott csúcsba érkező legrövidebb utak Ennek a problémának a megoldása nagyon egyszerű: csupán annyi a teendőnk hogy megfordítjuk a gráfunk irányítását. Ezáltal visszavezetjük a feladatot az egy csúcsból kiinduló legrövidebb utak kérdésére, amely megoldásának módszereit már fentebb, a 4.1 fejezetben taglaltuk. 4.4 Legrövidebb utak minden csúcspárra Ebben a fejezetben célunk, hogy egy gráf valamennyi rendezett csúcspárjára a két csúcs közötti legrövidebb út megkeresése. Ha például egy autóstérképhez elkészítjük a városok egymástól vett távolságainak táblázatát, akkor éppen ezt a problémát oldjuk meg. Természetesen a 4.1-es fejezetben bemutatott algoritmusok itt is használhatók, ha minden csúcsra lefutatjuk őket, amennyiben a távolságok nem negatívak, akkor a Dijkstra eljárást, ha vannak negatív élek, akkor a kicsit költségesebb Bellman- Ford módszert. Vannak azonban ennél következetesebb módszerek is Floyd algoritmusa Ez az algoritmus abban az esetben oldja meg az összes csúcspár közötti legrövidebb utak problémáját, ha a bemenő gráfban nincsenek negatív körök (negatív élek lehetnek) Robert W. Floyd 15. ábra: Robert W. Floyd Robert W. Floyd (1936. június szeptember 25) egy kivételesen tehetséges informatikus volt. New Yorkban született, 14 évesen már maga mögött 28

30 tudta a középiskolát és 17 évesen, 1953-ban a chichagoi egyetemen BA diplomát szerzett bölcsész szakon, majd 1958-ban pszichológiából. Az 1960-as évek elején kezdett el operátorként dolgozni, számos érdekes cikket publikált, mígnem 27 éves korában a Caregie Mellon Egyetemen helyettes professzornak ki nem nevezték. 6 évvel később, miután megszerezte a Ph.D címet a Stanford Egyetem professzora lett. Floyd Donald Knuth közeli munkatársa volt, és mint bíráló segített neki elkészíteni könyvét: The Art of Computer Programming, emiatt Donald nagy hatással volt Floyd munkásságára ben Richard Beigellel elkészítették a The Language of Machines: an Introduction to Computability and Formal Languages című tankönyvüket ban kapta meg a Turing-díjat az informatika számos területén elért eredményéért, különösen a formális nyelvek témakörében alkotottakért. Floyd élete során kétszer házasodott meg, és kétszer is vált el, négy gyermeke volt. Hobbijai a túrázás és a backgammon 1 voltak. (Wikipedia, 2009) Az algoritmus Tegyük fel, hogy a G ( V, E) gráf K adjacencia mátrixszal van megadva. A pontpárok távolságának kiszámítására egy szintén nn-es F mátrixot fogunk használni. Kezdetben F i, j: K i, j. Ezután egy ciklust hajtunk végre, amelynek k -adik lefutása után F i, j azon i j utak legrövidebbjeinek a hosszát tartalmazza, amelyek közbülső pontjai k -nál nagyobb sorszámúak. F i j értékeket a következőképpen számíthatjuk ki a k 1-edik iteráció Az új, utáni F i j k k 1, értékekből (itt az index az F különböző pillanatnyi értékeire utal). Nyilván egy legrövidebb i j út, amelyen a közbülső pontok sorszáma legfeljebb k (természetesen a kezdő- és végpontok nem számítanak közbülső pontnak), vagy tartalmazza a k csúcsot vagy nem. - Ha k nincs rajta az i j úton, akkor F i j - Ha rajta van a k csúcs az i j úton, akkor k 1,. 1 A backgammon egy két személyes társasjáték, ahol a korongokat a dobókocka dobások alapján kell mozgatni. 29

31 amennyiben ennek a csúcsnak a használatával előálló út rövidebb, mint az eddig ismert út, akkor ennek az új útnak a hosszát írjuk be F i, j -be, ha hosszabb, akkor a régi út hosszát, vagyis F i j k k1, ha több út is vezet az adott csúcson keresztül, akkor értelemszerűen a rövidebb értékét írjuk bele, F i j -be. k -t, FLOYD ELJÁRÁS ( Gk, ) 1. procedure Floyd 2. begin 3. for minden i V csúcsra do 4. begin 5. for minden j V csúcsra do 6. F i, j: K i, j 7. end 8. end 9. Pi, j: begin 11. for minden k V 12. begin csúcsra do 13. for minden i V csúcsra do 14. begin 15. for minden j V csúcsra do 16. F i, j: min F i, j, F i, k F k, j 17. if F i, j értéke csökken then 18. Pi, j k 19. end 20. end 21. end Az utak nyomon követése és a futási idő A kód magában rejti az utak nyomon követésének módszerét, ami futási időt nem befolyásolja. A 9. sorban definiálunk egy P tömböt, amelybe akkor tesszük be a k csúcsot, ha a F i, j érték megváltozik ( sorok). Tehát, P i j egy legrövidebb i j út középső csúcsát fogja tartalmazni. Ezek alapján az i j út összeállításához találnunk kell egy i -ből ebbe a közbülső csúcsba vezető legrövidebb utat, és egy ebből a csúcsból j -be vezető legrövidebb utat. De ezen utaknak is ismerjük egy-egy középső csúcsát, és így tovább. 30

32 Az algoritmus lépésszáma 3 n -bel arányos, hiszen a domináló rész három egymásba ágyazott for ciklus. Mondhatnánk, hogy ez nagyságrendben ugyanannyi, mintha a Dijkstra mátrixos változata, de pontosabb elemzéssel kiderül, hogy a Floyd-módszer 50%-kal gyorsabb. Ha a gráf éleinek száma jóval kisebb, mint 2 n, és az élsúlyok nemnegatívak, akkor viszont érdemesebb a Dijkstra-algoritmus éllistás változatát használni Az eljárás működése egy példán keresztül F F F ábra: Példagráf a Floyd-eljárás működésének szemléltetéséhez F F3 F Az F 3 és az F 4 egyenlősége abból ered, hogy a 4. csúcsból nem indul ki él, így az nem lehet közbülső csúcs. 31

33 4.4.2 Warshall algoritmusa Ez az algoritmus a fent említett Floyd algoritmusnál idősebb, de a módszer lényegében ugyanaz. A szakirodalomban gyakran a hasonlóság miatt egybe vonják a két algoritmust és Floyd-Warshall néven tüntetik fel. A különbség köztük az, hogy ez az algoritmus csak azt mondja meg, hogy mely pontok között megy irányított út, a hosszukat már nem adja meg Stephen Warshall Stephen Warshall 1935-ben született New York-ban. Karrierje során sok kutatást végzett az operációs rendszerek területén, a programozási nyelvek fejlesztésénél és sok más informatikai témakörben. Warshall a brooklyni általános iskolába járt, a Mount Vernon (New York) középiskolában érettségizett, majd a Harward egyetemen szerezte meg a Bsc diplomáját matematikából 1956-ban. Magasabb végzettséget nem szerezett, ennek ellenére különböző egyetemeken (köztük francia iskolákban is) tartott előadásokat, ezzel is elősegítve az informatika és a szoftverfejlesztés fejlődését. Miután megszerezte a Bsc diplomáját, az ORO-nál (Operation Research Office) helyezkedett el. John Hopkins által létrehozott program keretein belül végzett kutatásokat az amerikai hadseregnek ban eljött innen és egy Technical Operations nevű vállalkozásnál vállalt munkát, a munkája hasonló volt az előzőhöz: katonai szoftverek fejlesztése ben a massachusettsi Informatikai Egyesület tagja lett, később ez az egyesület egybeolvadt az Apllied Data Research (ADR) céggel. Ekkor Warshall vezetői kitüntetést kapott és felügyelte a projecteket és szervezeteket ben vonult nyugdíjba, végül december 11-én halt meg rákban. (Wikipedia, 2009) Az algoritmus Mielőtt az eljárás lépéseire térnénk definiálni kell a tranzitív lezárt fogalmát. Definíció (tranzitív lezárt): Legyen G=(V,E) egy irányított gráf, A az adjacencia mátrixa. Legyen továbbá T a következő nn-es mátrix: T i, j 1 0 ha i-ből j elérhető irányított úttal különben. 32

34 Ekkor a T mátrixot illetve az általa meghatározott gráfot az A mátrix illetve az általa meghatározott G gráf tranzitív lezártjának nevezzük. A fent részletezett Floyd-eljárásban csupán néhány változtatást kell tenni. A 6. sorban a kezdőértékek beállítása helyett: T i, j 1 0 ha i=j vagy Ai, j 1, különben. A 16. sorban F értékeinek változása helyett: T i, j T i, j T i, k T k, j, valamint a 17. sorban nem az F értékeinek csökkenése esetén tesszük bele a k csúcsot a P tömbbe, hanem amikor a T i, j érték változik meg. 3 Nyilvánvalóan a futási idő változatlan marad: On, és az utak nyomon követése is megegyezik a Floyd algoritmusnál leírtakkal. Tekintsük az alábbi példát a működésére: 17. ábra: Példagráf a Warshall-algoritmus működésének bemutatásához T T (0) (2) T (1) (3) (4) (5) T T T

35 A T T (3) (4) közbülső csúcs. azért igaz, mert a 4 csúcsból nem indul ki él, így az nem lehet (5) (5) T egyenlősége az előző kettőhöz látszólagos, a T 1,4 értéknél szemmel nem látható változás történt. Ugyanis az 1. csúcsból megy él a 2 (2) (3) és a 3-as csúcson keresztül ezt jelzi, hogy T T 1,4 1,4 1, de az 5. csúcson keresztül is vezet egy másik út, így a T i, j T i, j T i, k T k, j képlet alapján mindegy, hogy melyiket választjuk ki Johnson algoritmusa Johnson módszerével az összes csúcspár közti legrövidebb utakat 2 O( n lg n ne) időben találhatjuk meg, tehát ritka gráfokon ez lényegesen gyorsabb, mint az eddig ismert módszerek. Johnson eljárásának megértéséhez szükségünk van a Dijkstra- és a Bellman- Ford algoritmusok pontos ismeretére, mert az eljárás magában foglalja ezeket. A Johnson algoritmus (hasonlóan a Bellman-Fordhoz) HAMIS értéket ad vissza, ha a gráf tartalmaz negatív kört. A módszer alapötlete a következő átsúlyozó technika. Amennyiben a gráfban nincsenek negatív élek, akkor a természetesen használhatjuk a Dijkstraalgoritmust minden csúcsra, mint forrásra. Ahhoz hogy a fenti futási időt elérjük Fibonacci-kupacokat kell alkalmaznunk. Definíció (Fibonacci-kupac): A bináris kupacokkal ellentétben a Fibonaccikupacban levő fák nem rendezettek. Minden x csúcsnak van egy (mutató) a szülőjére, és egy px pointere gyerek x pointere az egyik gyerekére. Az x csúcs gyerekei egy kétirányú ciklikus listával vannak összekapcsolva, ezt a listát az x gyerek listájának nevezik. A gyerekek sorrendje a gyerek listában tetszőleges. Ebben az adatszerkezetben a műveletek gyorsabban elvégezhetők a pointerek miatt. Ha vannak negatív éleink, akkor a következőképpen kell eljárnunk: olyan új ˆk nemnegatív értékeket kell találnunk, melyeken azután az előző megoldás alkalmazható. A ˆk súlyoknak a következő két feltételnek kell eleget tenniük: 34

36 a) Minden u, v V csúcspárra a k súlyozás szerint vett bármely legrövidebb u -ból v -be menő út a ˆk szerint is az. b) Minden ( u, v) E élre az új k ˆ( u, v ) súly nemnegatív. Az a) tulajdonságnak eleget tevő átsúlyozást az alábbi lemma alapján igen egyszerű elkészíteni. Lemma (átsúlyozás): Legyen hvr : tetszőleges valós értékű függvény egy G ( V, E) irányított gráf csúcsain. Legyen k: E R ugyanennek a gráfnak az élsúlyozása. Minden ( u, v) E élre legyen k ˆ( u, v) k( u, v) h( u) h( v). Ekkor 1. minden v, 0 v k csúcspárra és minden p v0, v1,..., vk útra pontosan akkor lesz ( ) (, ), ha kˆ( p) dˆ( v0, v k ), ahol d ˆ( v, ) 0 vk a ˆk súlyozással keletkező út k p d v0 v k súlya; 2. továbbá pontosan akkor van a G gráfban negatív kör a k súlyozás szerint, ha ˆk súlyozás szerint is van. Bizonyítás: 1. Először belátjuk, hogy kˆ( p ) k ( p ) h ( v0 ) h ( v k ). A k ˆ( p ) súly a következő teleszkópos összeggé alakítható: k k kˆ( p) kˆ( v, v ) ( k( v, v ) h( v ) h( v )) i1 i i1 i i i1 i1 i1 k k k k( v, v ) h( v ) h( v ) k( p) h( v ) h( v ). i1 i i i1 0 k i1 i1 i1 Tegyük fel, hogy a ˆk súlyozással valamely v, 0 v k csúcspár között találtunk egy p ' utat, amely rövidebb, mint a k súlyozás esetén kialakult p út. Alkalmazzunk a p és p ' utakra a fenti kˆ( p ) k ( p ) h ( v0 ) h ( v k ) egyenlőséget: k( p') h( v ) h( v ) kˆ( p') kˆ( p) k( p) h( v ) h( v ), 0 k 0 amelyből k( p') k( p) következik. Ez azonban ellentmond annak a feltevésnek, hogy p a legrövidebb út v 0 és v k csúcsok között. k 35

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

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

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

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á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

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

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

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

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

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

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.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á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

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

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

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

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

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

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

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

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 3 III. MEGFELELTETÉSEk, RELÁCIÓk 1. BEVEZETÉS Emlékeztetünk arra, hogy az rendezett párok halmazát az és halmazok Descartes-féle szorzatának nevezzük. Más szóval az és halmazok

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

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

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

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

angolul: greedy algorithms, románul: algoritmi greedy

angolul: greedy algorithms, románul: algoritmi greedy Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város

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

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

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

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

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

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út SÍKBA RAJZOLHATÓ GRÁFOK ld. előadás diasorozat SZÍNEZÉS: ld. előadás diasorozat PÉLDA: Reguláris 5 gráf színezése 4 színnel Juhász, PPKE ITK, 007: http://users.itk.ppke.hu/~b_novak/dmat/juhasz_5_foku_graf.bmp

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

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

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

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

Az optimális megoldást adó algoritmusok

Az optimális megoldást adó algoritmusok Az optimális megoldást adó algoritmusok shop ütemezés esetén Ebben a fejezetben olyan modellekkel foglalkozunk, amelyekben a munkák több műveletből állnak. Speciálisan shop ütemezési problémákat vizsgálunk.

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

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

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

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

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

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI 19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI Ebben a fejezetben aszimptotikus (nagyságrendi) alsó korlátot adunk az összehasonlításokat használó rendező eljárások lépésszámára. Pontosabban,

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Általános algoritmustervezési módszerek

Általános algoritmustervezési módszerek Általános algoritmustervezési módszerek Ebben a részben arra mutatunk példát, hogy miként használhatóak olyan általános algoritmustervezési módszerek mint a dinamikus programozás és a korlátozás és szétválasztá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

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

Diszkrét matematika 2.C szakirány

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

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

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

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

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

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

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

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

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Felvételi vizsga mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív

Részletesebben

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

Gráfelméleti alapfogalmak-1

Gráfelméleti alapfogalmak-1 KOMBINATORIKA ELŐADÁS osztatlan matematika tanár hallgatók számára Gráfelméleti alapfogalmak Előadó: Hajnal Péter 2015 1. Egyszerű gráfok Nagyon sok helyzetben egy alaphalmaz elemei között kitűntetett

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

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

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

Gráfok. Programozás II. előadás.   Szénási Sándor. Gráfok 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 Tárolási módok Szélességi bejárás Mélységi bejárás Legrövidebb

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

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

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

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése Dr. Kallós Gábor 2014 2015 1 Az Ordó jelölés Azt mondjuk, hogy az f(n) függvény eleme az Ordó(g(n)) halmaznak, ha van olyan c konstans (c

Részletesebben

A félév során előkerülő témakörök

A félév során előkerülő témakörök A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok

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

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

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

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

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

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

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan

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

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

Algoritmuselmélet 1. előadás

Algoritmuselmélet 1. előadás Algoritmuselmélet 1. 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 11. ALGORITMUSELMÉLET 1. ELŐADÁS 1 Források

Részletesebben

Algoritmuselmélet 18. előadás

Algoritmuselmélet 18. előadás Algoritmuselmélet 18. 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ájus 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok

Részletesebben

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11. 11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során

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

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

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 9. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 18 Közelítő algoritmusok ládapakolás (bin packing) Adott n tárgy (s i tömeggel) és végtelen sok 1 kapacitású láda

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

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 9. 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

Chomsky-féle hierarchia

Chomsky-féle hierarchia http://www.ms.sapientia.ro/ kasa/formalis.htm Chomsky-féle hierarchia G = (N, T, P, S) nyelvtan: 0-s típusú (általános vagy mondatszerkezetű), ha semmilyen megkötést nem teszünk a helyettesítési szabályaira.

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

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

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

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra) 6. Fabejáró algoritmusok Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban

Részletesebben

Intelligens Rendszerek Elmélete IRE 4/32/1

Intelligens Rendszerek Elmélete IRE 4/32/1 Intelligens Rendszerek Elmélete 4 IRE 4/32/1 Problémamegoldás kereséssel http://nik.uni-obuda.hu/mobil IRE 4/32/2 Egyszerű lények intelligenciája? http://www.youtube.com/watch?v=tlo2n3ymcxw&nr=1 IRE 4/32/3

Részletesebben

Elemi matematika szakkör

Elemi matematika szakkör Elemi matematika szakkör Kolozsvár, 2015. október 5. 1.1. Feladat. Egy pozitív egész számot K tulajdonságúnak nevezünk, ha számjegyei nullától különböznek és nincs két azonos számjegye. Határozd meg az

Részletesebben

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

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

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ 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

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék További forgalomirányítási és szervezési játékok 1. Nematomi forgalomirányítási játék A forgalomirányítási játékban adott egy hálózat, ami egy irányított G = (V, E) gráf. A gráfban megengedjük, hogy két

Részletesebben