„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

A Floyd-Warshall algoritmus
A Dijkstra algoritmus.
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
KÉSZÍTETTE: Takács Sándor
Készítette: Major Máté
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
Matematika II. 4. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Illés Tibor – Hálózati folyamok
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Készítette: Hanics Anikó. Az algoritmus ADT szintű leírása: A d[1..n] és P[1..n] tömböket, a korábban ismertetett módon, a távolság és a megelőző csúcs.
Gubicza József (GUJQAAI.ELTE)
Dijkstra algoritmus Irányított gráfban.
Gráfok szélességi bejárása
Gráf Szélességi bejárás
Dominók és kombinatorika
OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.
A digitális számítás elmélete
Prím algoritmus.
Dijkstra algoritmus. Kiválasszuk a legkisebb csúcsot, ez lesz a kezdőcsúcs, amit 0-val címkézünk és megjelöljük sárgaszínnel. Szomszédjai átcímkézése.
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
Készítette: Kosztyán Zsolt Tibor
Gráf szélességi bejárása
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Dijkstra-algoritmus ismertetése
Algoritmusok II. Gyakorlat 3. Feladat Pup Márton.
Gráf Szélességi bejárás/keresés algoritmusa
A Dijkstra algoritmus.
Feladat: Adott egy város, benne metrók és állomások. Írjunk algoritmust amely megszámolja hogy mennyi az a legkevesebb átszállás amellyel egy tetszőleges.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Dijkstra algoritmusa Gubicza József (GUJQAAI.ELTE)
Prim algoritmusa Gubicza József (GUJQAAI.ELTE). Jellemzők Cél: Adott egyszerű gráfban a min. költségű feszítőfa meghatározása. Algoritmikus szinten: 3.
Logikai programozás 5..
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek,
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Dijkstra-algoritmus. A Dijkstra-algoritmus egy mohó algoritmus, amivel irányított gráfokban lehet megkeresni a legrövidebb utakat egy adott csúcspontból.
Kruskal-algoritmus.
Készítette Schlezák Márton
Business Mathematics A legrövidebb út.
Bellmann-Ford Algoritmus
GRÁFOK Definíció: Gráfnak nevezzük véges vagy megszámlálhatóan végtelen sok pont és azokat összekötő szintén véges vagy megszámlálhatóan végtelen sok.
Gráfok ábrázolása teljesen láncoltan
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Útkeresések.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Morvai Mária-Júlia F3D3D4.  Adott egy G=(V,E)élsúlyozott, irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó,véges gráf. Továbbá adott.
Gráf szélességi bejárása. Cél Az algoritmus célja az, hogy bejárjuk egy véges gráf összes csúcsát és kiírjuk őket a kezdőcsúcstól való távolságuk szerint.
DIJKSTRA- ALGORITMUS. A Dijkstra-algoritmus egy mohó algoritmus, amivel irányított vagy irányítás nélküli, negatív élsúlyokat nem tartalmazó, véges gráfokban.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Szélességi bejárás Gráf-algoritmusok Algoritmusok és adatszerkezetek II. Gergály Gábor WZBNCH1.
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Gráf Szélességi bejárás Készítette: Giligor Dávid Neptun : HSYGGS.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozás II. Gráfok Dijkstra algoritmus Kruskal algoritmus.
Kvantitatív módszerek
A Dijkstra algoritmus.
Gráfok szélességi bejárása Dijkstra algoritmus
Depth First Search Backtracking
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Előadás másolata:

„Országos” feladat

Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont egy országon csak úgy mehetnek át, hogy ugyanolyan színű ruha van rajtuk mint az ország színe. Céljuk az, hogy minél kevesebb ruhát vigyenek magukkal. Egy példa (jussunk el ‘1’-ből ‘7’-be) : Színek száma: 2

A tesztadat (ez a térképrészlet) : … … … „élfile” Egy sora: 2 szomszédos ország sorszáma „csúcsfile” Egy sora: ország sorszáma, 2 koordinátája, színe

A megjelenítőnk használatamegjelenítő A „csúcsfile”-t a v.txt néven, az „élfile”-t az e.txt néven a program könyvtárába kell beletenni. A saját programunk készítsen egy r.txt nevű (eredmény) file-t, melyben a kijelölni kívánt csúcsok azonosítói vannak. Az r.txt file-t is tegyük bele program könyvtárába, ezen csúcsokat fogja megvastagítani.

Az algoritmus módosítása költség: Az érintett színek halmazának számossága d[i]: költség, és a színek halmaza π[i]: Továbbra is az i. csúcs megelőzője az úton c(i, j): Egy függvény lesz, mely 1-et ad ha az i-ig tartó út között nem szerepelt j színe, egyébként 0. Az első gondolat lehet a Dijkstra algoritmus felhasználása Ez feszítőfát ad, melyből könnyen meghatározható a keresett út. A feladat egy lehetséges megvalósítása

Példa a működésre ∞,{P} 1,{Z} ∞,{K}∞,{Z} ∞,{K} ∞,{S} ∞,{Z} 2,{Z, P} 2,{K, Z} 3,{Z, P, S} 2,{K, Z}

Egy hiba: ‘1’-ből ‘5’-be: Megoldás: 2

Egy hiba: ‘1’-ből ‘5’-be: ‘1’-ből ‘7’-be: Megoldás: 2 Megoldás: 43 Mit jelent ez?

A hiba elemzése 1,{P} 2,{P, S} 3,{P, S, Z} 4,{P, S, Z, K} 2,{P, Z}3,{P, Z, K} A legkisebb költségű út nem a fenti Az egész út részeire nem feltétlenül teljesül hogy azok minimális költségűek A Dijkstra algoritmus nem megfelelő a problémára Következtetés

A feladat egy második lehetséges megvalósítása Egy függvény rendeljen prímeket a csúcsokhoz. Pl.: zöld  5, kék  7, piros  13. Rakjuk bele egy szin[] tömbbe. 0;ha S[i][j]=0 T[i][j]:= szin[j];egyébként Bellmann-Ford algoritmus „*”-sal és „kevesebb osztó” feltétellel. A végen csak d[i]-n kell leellenőrizni hogy szin[]-ben szereplő prímek közül melyik osztja. A multiplicitás nem zavar be az osztók számításánál. szin[1..4]:=[5,7,7,13] S  {0,1} n  n RZnnRZnn Az előbbi ok miatt ez sem működik!!!

Ellenpélda listás megoldásra Az alábbi ábra egy olyan ellenpéldát vázol fel, ahol az algoritmustól, és az adat ábrázolástól függően hibás eredményt kaphatunk listás megoldás esetén. A start csúcs legyen az 1-es, a cél pedig a 10-es. Az 1-esből a 6-os csúcsig mindenképp 2 szín felhasználásával jutunk el. Programtól függően a 3 lehetséges megoldás egyikét választjuk, amelyek egyformán jónak tűnnek. A 6-osból a 10-esig egy újabb szín felhasználása szükséges, bármely útvonalat is választjuk. De amennyiben az 1-es és 6- os csúcs közötti útvonal a 4-es csúcson át vezetett (szerencsénk volt), akkor most nem kell új színt bevenni a listába, ha a 7-es csúcson át megyünk a 10-es csúcsba. Tehát megállapítható, hogy a végső optimális útvonal nem áll össze optimális részútvonalak összegeként.

Egy másik feladat: legkevesebb átöltözés Probléma: olyan útvonal keresése, ahol a legkevesebb alkalommal lépünk más színű szomszédos csúcsra. A csúcsokat szintek szerint osztályozzuk, az alábbi elgondolás szerint: A start csúcs kerül a 0. szintre. Ennek a csúcsnak minden szomszédját végignézzük. Amennyiben a vizsgált szomszéd ugyanolyan színű, akkor bekerül a 0. szintre, ha más színű, akkor az első szintre. A 0. szintre bekerült csúcsokra szintén megcsináljuk az eljárást, egészen addig, amíg végig nem nézzük az összes ilyen csúcsot. Ekkor átlépünk az 1. szinten levő csúcsokra, és hasonlóan végigcsináljuk az algoritmust, egy szint csúsztatással (ugyanolyan színű: 1. szint, más színű: 2. szint). Az algoritmust addig végezzük, amíg el nem jutunk a cél csúcsig. Olyan csúcsot már természetesen nem kell vizsgálni, amelyet már egyszer vizsgáltunk. Adatraktározás: szülő, súly: megegyezik a szint számával. Amennyiben nincsenek egyforma színű csúcsok egymás mellett, akkor az algoritmus visszaad egy legrövidebb utat (bal oldali ábra), ha vannak ilyen csúcsok, akkor a legkevesebb színváltásnak megfelelő egyik legrövidebb utat, ami természetesen nem feltétlenül egyezik meg a tényleges legrövidebb úttal (jobb oldali ábra).

Jelölések röviden A feladat egy harmadik lehetséges megvalósítása A gráf csúcspontjaiban többszörös „címkézést” használtam. Egy címke egy ( Szülő, H ) rendezett pár, ahol a Szülő  V, az a csúcs ahonnan elértem a címkézett csúcsba. H a színhalmaz egy részhalmaza, olyan színeket tartalmaz, melyek előfordultak csúcsba vezető út folyamán.

Algoritmus animáció (-,{1}) (A,{1,2}) (A,{1}) (B,{1,2}) (E,{1,3}) (E,{1,4}) (C,{1,2}) (C,{1,2,3}) (D,{1,3}) (C,{1,2,3}) (F,{1,2,4}) (G,{1,2})

Részhalmazok: elemszám szerint növekvő sorrendben A feladat egy negyedik lehetséges megvalósítása Szélességi bejárás a gráfon a részhalmazban szereplő színek szerint Első találat: Valóban a legkevesebb színt igénylő út Hátránya: Sok szín esetén gyakorlatilag alkalmazhatatlan Legrövidebb út megtalálása a színek halmazának részhalmazait reprezentáló, 0-ból és 1-esekből álló sorozatok segítségével.