670 likes | 979 Views
BABEŞ-BOLYAI TUDOMÁNYEGYETEM, KOLOZSVÁR TANÁRKÉPZŐ INTÉZET MATEMATIKA ÉS INFORMATIKA KAR. I. FOKOZATI TUDOMÁNYOS ÉS MÓDSZERTANI DOLGOZAT. A GRÁFELMÉLETI ALGORITMUSOK TANÍTÁSA. Témavezető , dr. Darvay Zsolt egy etemi adjunktus Jelölt , Bódis Klára Zilahi Református Wesselényi Kollégium
E N D
BABEŞ-BOLYAI TUDOMÁNYEGYETEM, KOLOZSVÁR TANÁRKÉPZŐ INTÉZET MATEMATIKA ÉS INFORMATIKA KAR I. FOKOZATI TUDOMÁNYOS ÉS MÓDSZERTANI DOLGOZAT A GRÁFELMÉLETI ALGORITMUSOK TANÍTÁSA Témavezető, dr. DarvayZsoltegyetemi adjunktus Jelölt, BódisKlára ZilahiReformátusWesselényiKollégium Kolozsvár 2012
A jövő kiszámítható Hogyan kapcsolódik minden egymáshoz, és mit jelent ez a tudományban, az üzleti és a mindennapi életben?
Tartalomjegyzék • I. Gráfokat feldolgozó algoritmusok komplexitása • II. Gráfelméleti algoritmusok tanítása I.1. A komplexitás I.2. Irányított utak a gráfokban I.3. Erősen összefüggő –e azadottirányított gráf? I.4. Más gráffeldolgozó algoritmusok komplexitásá-nak vizsgálata II.1. Általános jellemzők II.2. Tanulási egységek tervezése II.3. A tanításkor használt didaktikai stratégiák II.4. Algoritmusok tanításának specífikus módszerei II.5. A tanítási egység tartalmának metodikailag való kezelése II.6. Didaktikai tevékenységek tervezése
x I.1. A komplexitás vizsgálása Számítógép minden olyan berendezés, amely képes bemenő adatok (input) fogadására, ezeken különféle, előre beprogramozott műveletek (programok) végrehajtására, továbbá az eredményül kapott adatok kijelzésére, kivitelére (output), amelyek vagy közvetlenül értelmezhetőek a felhasználók részére vagy más berendezések vezérlésére használhatóak. • Ebben a fejezetben bemutatom a gráfelméleti algoritmusok komplexitását. • A komplexitása az adott algoritmusoknak függ a bemeneti adatok méretétől, illetve bemutatom majd az átlagos és legrosszabb eseteket és az ezekhez kötődő fogalmakat, valamint a komplexitás fogalmát is megismertetem részletesen. x Biztosra kijelenthetjük, hogy azt a számsorozatot, mely csak száz számot tartalmaz, hamarabb rendezzük, mint azt, amelyik ezer darabot tartalmaz. • Nyilvánvaló, hogy a végrehajtási ideje egy adott programnak függ a bemeneti adatok méretétől és sajátosságaitól.
Ha a „számítógép” kifejezést tágabb értelemben tekintjük, akkor beszélhetünk belső, illetve külső vezérlésű információfeldolgozó automatákról. A külső vezérlésűautomaták esetében az inputnak része a tevékenységet irányító program. Ez például úgy valósulhat meg, hogy folyamatos emberi beavatkozással irányítjuk a gépet (például egy abakuszt, egy elektronikus zongorát stb.), vagy pedig a feldolgozandó adatokkal egyetemben adjuk meg a feldolgozás módját megadó tevékenység leírását (így működtek régen egyes lyukkártyavezérlésű gépek). Így programot minden munkafázisban újra meg újra le kell írni és a gépnek beadni. A belső vezérlésűautomaták viszont saját maguk tárolni képesek a tevékenységüket irányító programot, így minden munkafázisban csak az adatok leírására és a megfelelő program kiválasztására van szükség. Szűkebb értelemben a számítógépek két fő típusa az analóg és a digitális számítógép. Az analóg számítógépek fizikai jelenségek matematikai leírásával szimulálják a folyamatokat, be- és kimenetük is valamilyen fizikai jellemző (például elektromos feszültség, hőmérséklet, nyomás). Előnyösen használhatóak többek között biológiai, áramlástani stb. feladatok megoldására. Pontosságuk és sebességük korlátozott. A digitális számítógépek diszkrét értékekre (számjegyek, digit) bontják, fordítják a feladatot, és ezeken hajtják végre az előírt műveleteket. A számítások alapegysége a bit, aminek neve az angol Binary Digit (bináris, vagyis kettes alapú számrendszerbeli számjegy) kifejezésből származik. Létezik egy átmeneti típus is, az úgynevezett analogikai számítógépek, amelyek egyesítik a két típus előnyeit. Ezeket elsősorban biológiai, áramlástani feladatok modellezésére, megoldására használják. Működési elvük szerint Mechanikus; elektronikus; optikai; a jövő számítógépei a szerves számítógépek és a kvantumszámítógépek.
Az idő „mérése” A lépések fogalmának meghatározása független kell legyen az illető számítógép típusától, melyen a program végrehajtása történik. • Még ha ugyanazon processzorcsaládunk is van és ugyanolyan frekvenciával dolgoznak is, megjelenhetnek más és más idők, melyek a következő tényezőknek tudhatók, mint: az operációs rendszer, memória méret, a lemez átviteli sebessége, stb. • Következtetésképpen, a végrehajtási idő mérése nem egy érvényes kritérium egy algoritmus végrehajtási idejének a leírására. • Egy sokkal használhatóbb végrehajtási időmérés az algoritmus végrehajtásához szükséges elemi lépések számának a meghatározása.
Az idő „mérése” Gyorsrendezés algoritmus pszeudokódja: function quicksort(array, left, right) if right > left select a pivot index (e.g. pivotIndex := left) pivotNewIndex := partition(array, left, right, pivotIndex) quicksort(array, left, pivotNewIndex-1) quicksort(array, pivotNewIndex+1, right) A beszúró rendezéshez hasonlóan kikeresi a beszúrandó elem helyét, de míg a beszúró rendezés a rendezett részsorozatba beillő helyre teszi be az elemet, a gyorsrendezés a teljes számsort figyelembe véve az elemet a végleges helyére teszi. A gyorsrendezés egyik nagy előnye, hogy helyben rendező algoritmus. Futási ideje legrosszabb esetben O(n2), átlagos esetben viszont O(n log n). Hatékonysága nagymértékben függ attól, hogy melyik elemet választjuk strázsának. Ha az első számot választjuk, akkor egy növekvő sorrendben levő bemeneti számsorozat rendezése minden lépésben kiegyensúlyozatlan felosztást eredményez. Különböző felosztási eljárások vannak, strázsának választható például egy véletlen sorszámú elem, vagy a sorozat középső eleme. Ha a felosztás kiegyensúlyozott, akkor futási ideje ugyanannyi, mint az összefésülő rendezésé, ha viszont nem kiegyensúlyozott, akkor a beszúró rendezésével megegyező. Ez akkor fordul elő, ha az eredeti tömböt felosztjuk egy 1 és egy n-1 elemű résztömbre. Ha ez a kiegyensúlyozatlan felosztás ismétlődik minden lépésnél, akkor a legrosszab esethez jutunk. Ha a felosztási időt O(n)-el jelöljük, a gyorsrendezés legrosszabb esetében a futási idő rekurzív képlete: T(n)=T(n-1)+O(n) A képlet kiértékelése T(n)=O(n2) egyenlőséghez vezet, e szerint a gyorsrendezés legrosszab esete ugyanolyan futási időt mutat, mint a minimumkiválasztásos és a beszúró rendezés. Gyorsabb az algoritmus, ha a felosztás kiegyensúlyozott, azaz minden felosztás pontosan ketté osztja a tömböt. Ekkor a futási időt meghatározó rekurzív képlet: T(n)=2T(n/2)+O(n) A képlet megoldása T(n)=O(n log n), tehát ennyi a legjobb eset futási ideje. Az összefésülő rendezéshez hasonlóan, mivel rekurzív algoritmus, szükség van külön tárhelyre a verem számára. Ha a részsorozatok pontosan feleződnek, akkor a maximális verem mélység log n, tehát a verem által elfoglalt tárbonyoultság O(log n) nagyságrendű. Legrosszabb esetben, amikor minden felosztás n-1 illetve 1 hosszúságú résztömböt eredményez, akkor a tárbonyolultság O(n) nagyságrendű. x • Bármelyik becslésből következtethetünk arra, hogy a pszeudokódban leírt sor ugyanannyi idő alatt lesz végrehajtva. • Viszont van néhány érv, ami e döntés ellen szól. Mint például az, hogy bizonyos sorok nem konstans idő alatt hajtódnak végre. Nyilvánvaló, hogy különböző sorokra más időintervallumokat kapunk, de ugyanaz a sor, mindig ugyanazon az időintervallumon fog végrehajtódni. Így ha egy olyan sorunk van, mellyel egy sorozatot akarunk rendezni, akkor ennek a sornak a végrehajtási ideje függ a sorozat méretétől. Mégis, egy ilyen sor magába rejt egy csomó lépést, melyek nem voltak bemutatva a leírás egyszerűsége végett.
Az idő „mérése” • Tehát, ha a bemenet mérete n, akkor a függvénnyel kifejezhetjük a lépések számát. Ha a lépések száma az algoritmusban egyenlő az n értékének négyzetével, akkor . • Ha különböző esetek miatt szükségünk lesz még n lépésre, akkor Általában az algoritmus végrehajtási ideje azonos bemeneti adatokra ugyanannyi lesz. A meghatározatlanság is létezhet bizonyos esetekben (mint például a véletlen számok generálásakor), mint amikor a végrehajtási idő változhat ugyanazon bemeneti adatokra is.
A legrosszabb eset és az átlageset • A végrehajtási ideje egy algoritmusnak nemcsak a bemeneti adat méretétől függ, hanem ennek a konfigurációjától is. • Például, ha egy „majdnem rendezett” számsorozatot rendezünk, akkor kevesebb időre lesz szükségünk, mintha egy „fordított sorrendben levőt” rendeznénk. • Általában az algoritmusok vizsgálásakor a legrosszabb esetet használják. Három ok is létezik, hogy miért ezt választják.
A legrosszabb eset és az átlageset • Mégis, egyes esetekben az átlag végrehajtási idő hasznosnak minősül. Rájövünk, hogy nem minden esetre tudunk végrehajtási időt számolni, hogy ezekből utólag átlagot számítsunk. Éppen ezért, egy megközelítő átlag értéket fogunk adni, anélkül, hogy tudnánk, hogy ez az érték helyese. Feltételezhetjük, hogy a bemeneti adatok bármelyik konfigurációja ugyanolyan eséllyel fog előfordulni. Sajnos ez a valóságban gyakran nem így fordul elő. Tehát hamisnak bizonyul a feltételezésünk.
A komplexitás rendje x • Azalgoritmus komplexitási rendje a függvény egyik tulajdonságát képviseli, mégpedig a nagyságrendjének a leírását. • Ha,akkor a komplexitás rendjelesz. Ebből a példából arra következtethetünk, hogy akomplexitás rendjét O – val jelöljükés ezt az összes „nem fontos” együtthatók és kifejezések elhagyásával kapjuk. A végrehajtási idő függvények olykor nagyon összetettek lehetnek, és emiatt használhatatlanná válnak. x
I.2. Irányított utak a gráfokban • Gráf fogalma • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak • Az irányított utak halmazának az optimalizálása
I.2. Irányított utak a gráfokban • Gráf G=(X,U) fogalma. Nem irányított Irányított Csomó Csúcs Él Irányított él
I.2. Irányított utak a gráfokban • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg, lehetnek: • egy turné programjának megtervezése, • egy labirintus bejárásának problémája, • egy befektetés megtervezésének, kivitelezésének a problémája, • raktáro(ko)n lévő készletek nyilvántartása, • a hálózatokban lévő optimalizálások problémája, • a jelzések numerikus kezelése, az információk kódolásának illetve dekódolásának a problémája, • hadügyi problémák, stb.
I.2. Irányított utak a gráfokban • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak: • egy adott hosszúságú irányított út létezésének leellenőrzése, • egy adott hosszúságú irányított útnak a meghatározása, • az irányított utak halmazának az optimalizálása.
I.2. Irányított utak a gráfokban X • Az irányított utak halmazának az optimalizálása, azon gráfokon értelmezettek, melyekben minden irányított élhez, egy számot rendelünk. Az jelentheti: • az u irányított él végpontjai közötti távolságot, • az irányított él kiinduló és a végpontja közötti átjárást, • ennek az átjárásnak a költségét, • a valószínűségét annak, hogy ezen az irányított élen átmegyünk, • az irányított él kapacitását, stb. A használt fogalmak:
I.2. Irányított utak a gráfokban • Gráf fogalma • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak • Az irányított utak halmazának az optimalizálása
I.2. Irányított utak a gráfokban • Gráf fogalma • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak • Az irányított utak halmazának az optimalizálása
I.2. Irányított utak a gráfokban • Gráf fogalma • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak • Az irányított utak halmazának az optimalizálása
I.2. Irányított utak a gráfokban • Gráf fogalma • Feladatok, melyeket, mint a gráfban lévő irányított utak problémájaként oldanak meg • A felvethető problémák, melyek a gráfokban lévő irányított utakkal kapcsolatosak • Az irányított utak halmazának az optimalizálása
k j i 1.2.1. Irányított utak optimalizálása azhipotézisben • Annak a feltétele, hogy az i csúcsból egy j csúcsba létezik véges, minimális értékű irányított út, az az, hogy ha a létező irányított utak között van legalább egy irányított út, mely tartalmazza a irányított kört, akkor legyen. x
I.2.2. Minimális irányított utak a gráfban • Egy irányított út (út) egy él-sorozat két csomópont között. Az egyik ezek közül a kiinduló, míg a másik a cél csúcs • Négy kategóriája létezik az algoritmusoknak, melyeket ezen utak meghatározására alkalmazhatunk: É S Z R E V É T E L 11 1n n1 nn
A minimális irányított az adott kiinduló csúcsból az adott cél csúcsig Kiinduló csúcs 1 2 6 3 5 4 Cél csúcs Kiinduló csúcs Kiinduló csúcs 1 2 6 1 2 6 3 5 3 4 5 Cél csúcs 4 Cél csúcs Kiinduló csúcs 1 2 6 3 5 4 Cél csúcs
A minimális irányított az adott kiinduló csúcsból az adott cél csúcsig Kiinduló csúcs 1 2 6 3 5 4 Cél csúcs Kiinduló csúcs Kiinduló csúcs 1 2 6 1 2 6 3 5 3 4 5 Cél csúcs 4 Cél csúcs Kiinduló csúcs 1 2 6 3 5 4 Cél csúcs
A minimális irányított út az adott kiinduló csúcsból az adott cél csúcsig l(u) Bármelyik lehet a minimális! Mitől függ az, hogy melyik lesz kiválasztva? Kiinduló csúcs Kiinduló csúcs Azok az algoritmusok, melyek ezeket a problémákat oldják meg, alapozhatnak a gráf irányított éleihez rendelt értékek tulajdonságaira is. Ezen tulajdonságok közzé soroljuk: az irányított él értékek pozitivitását; l(u)=1,; irányított körmentes a gráf. 1 2 6 x 1 2 6 3 5 3 4 5 Cél csúcs • Az l(u) jelentheti: • az u irányított él végpontjai közötti távolságot, • az irányított él kiinduló és a végpontja közötti átjárást, • ennek az átjárásnak a költségét, • a valószínűségét annak, hogy ezen az irányított élen átmegyünk, • az irányított él kapacitását, stb. 4 Cél csúcs Kiinduló csúcs 1 2 6 3 5 4 Cél csúcs
I.2.2. Minimális irányított utak a gráfban • Egy irányított út (út) egy él-sorozat két csomópont között. Az egyik ezek közül a kiinduló, míg a másik a cél csúcs • Négy kategóriája létezik az algoritmusoknak, melyeket ezen utak meghatározására alkalmazhatunk: É S Z R E V É T E L 11 1n n1 nn
Minimális irányított utak a gráfban Észrevételek: • az első három kategóriákra ugyanazokat az algoritmusokat alkalmazzuk, mivel ha megoldjuk az irányított utak problémáját egy adott kiinduló csúcsból az összes többi csúcs felé, akkor megoldjuk azon irányított utak problémáját is, mely egy adott kiinduló csúcsból és adott végcsúcs között találhatók; • egy adott végpontú irányított utakat meghatározó algoritmusok nem aszimptotikusan gyorsabbak, mint azok, amelyek az összes lehetséges végpontú utakat határozzák meg; • ha a minimális irányított utak problémáját megoldjuk egy rögzített kiindulópontra és egy váltakozó végpontra, akkor megoldottuk a váltakozó kiindulópontú és fix végpontú minimális irányított utak problémáját is, átalakítva a végpontot kiindulóponttá, ugyanazt az algoritmust alkalmazva; • annak köszönhetően használtam az irányított út fogalmat és nem az út fogalmat, hogy, ezek az algoritmusok irányított gráfokra voltak kigondolva, de ugyanakkor jól működnek nem irányított gráfokra is, abban az esetben, ha az x és y csomópontok közötti élre úgy tekintünk, mely képviseli az x és y csomópontok közötti irányítatlan élet és ugyanakkor az y és x csomópontok közötti irányítatlan élet is. 11 1n n1 nn
I.2.3. Egy adott csúcsból kiinduló minimális irányított utak értéke • I.2.3.1. Moore-Dijkstra algoritmusa • I.2.3.2. Bellman-Kalaba algoritmusa • I.2.3.3. Ford algoritmusa Feltevődik bennünk a kérdés, hogy hogyan járjuk be a gráfot, amikor a minimális úthoz tartozó irányított éleket (éleket), csúcsokat (csomókat) keressük. Mélységi bejárás - Dept First search (DFS) Szélességi bejárás – Breadth First search (BFS) Még több példa Még több példa
Szélességi bejárás - Dept First search (DFS) 1 1 7 2 3 2 3 8 7 4 5 4 5 8 6 6
A B C D E F G H I J K L M N O P Q Szélességi bejárás - Dept First search (DFS) • A breadth-first search (BFS) a jelenlegi út közelében lévő csomókat érinti hamarabb, az út távolabbi csomói csak később lesznek érintve • Jaz Nelőtt lesz megtalálva • Példáúl, az Akeresése után, aB, majd aClesz érintve, a keresés a D,E,F,G–vel folytatódik • A csomók érintési (látogatási, bejárási, keresési) sorrendje: A B C D E F G H I J K L M N O P Q
Szélességi bejárás - Breadth-first search(BFS) x 1 1 7 2 3 2 3 8 7 4 5 4 5 8 6 6 Lásd az algoritmust
A B C D E F G H I J K L M N O P Q Mélységi bejárás - Dept First search (DFS) • A depth-first search (DFS) az aktuális út összes lehetséges irányába kiterjed, mielőtt visszatérne(backtracking)és egy másik aktuális út irányába indúl. • Nhamarabb lesz megtalálva, mint a J • Példáúl keresveA -t, majd aB -t, majd aD -t, a keresés visszalép és egy másik utat is kipróbál a B–ből • A csomók a következő sorrendben lesznek érintve:A B D E H L M N I O P C F G J K Q A szemléltetőt egy nemirányított gráf grafikus ábrázolásával adtam meg, mert könnyebben követhető, de a dolgozatom az irányított gráfokat vizsgálja csak, hivatkozva arra, hogy egy irányított gráffot átalakíthatunk bármikor nemirányított gráffá, ha egyesítjük a gráf transzponáltjával. A dolgozatban megadott algoritmusok tökéletesen működnek nemirányított gráffokra is. A szemléltetőt egy nemirányított gráf grafikus ábrázolásával adtam meg, mert könnyebben követhető, de a dolgozatom az irányított gráfokat vizsgálja csak, hivatkozva arra, hogy egy irányított gráffot átalakíthatunk bármikor nemirányított gráffá, ha egyesítjük a gráf transzponáltjával. A dolgozatban megadott algoritmusok tökéletesen működnek nemirányított gráffokra is. x x x x Lásd az algoritmus rekurzív alakját Lásd az algoritmus nem rekurzív (iteratív) alakját DFS1 DFS2 A mélységi keresés (depth-first search) egy olyan fabejárási algoritmus, amelly a fában a gyökértől kiindulva minden csúcsot bejárja.
I.2.3. Egy adott csúcsból kiinduló minimális irányított utak értéke • I.2.3.1. Moore-Dijkstra algoritmusa • I.2.3.2. Bellman-Kalaba algoritmusa • I.2.3.3. Ford algoritmusa Legrövidebb utak egy csúcsból minden csúcsba I.2.3.1. Moore - Dijkstra algoritmusa I.2.3.3. Ford algoritmusa Legrövidebb utak minden csúcsból egy csúcsba I.2.3.2. A Bellman - Kalaba algoritmus Legrövidebb utak minden csúcsból minden csúcsba A Floyd – Warshall algoritmus
I.2.3.1. Moore-Dijkstra algoritmusa • A Moore algoritmus egyadottcsúcsbólazösszes többicsúcsbaaDFSmélységibejárással meghatározza a legrövidebbutak értékét egy pozitív élsúlyú gráfban. Legyen ez a csúcs az 1-es csúcs j i Card(X)=6 csúcsok (csomók) száma X={1,2,3,4,5,6} csúcsok halmaza G=(X,U) gráf u=(i,j)irányított él az adott példában, mivel a gráf nem irányított csúcs estén jelőlje a minimális irányított út értékét az 1 csúcsból az i csúcsba Tehát az algoritmus az vektorral (FIFO várakozási sorral) dolgozik!
I.2.3.1. Moore-Dijkstra algoritmusa • A Moore algoritmus egyadottcsúcsbólazösszes többicsúcsbaaDFSmélységibejárással meghatározza a legrövidebbutak értékét egy pozitív élsúlyú gráfban. j i Bemeneti adat az l súly (út) mátrix, mely a szomszédsági (adiacencia) mátrixra épül Nem irányított gráf esetén a mátrix szimmetrikus a főátlóra nézve. Folytasd az elemek feltöltését. x
I.2.3.1. Moore-Dijkstra algoritmusa • A Moore algoritmus egyadottcsúcsbólazösszes többicsúcsbaaDFSmélységibejárással meghatározza a legrövidebbutak értékét egy pozitív élsúlyú gráfban. j 2 3 6 { , , } i Az 1-es csomópont közvetlen szomszédjainak a halmaza i=1 1. lépés (A) inicializálások 7 9 ∞ ∞ 14 2. lépés 5 6 S={2,3,4,5,6} a még nem látogatott csúcsok halmaza 4 3 2
I.2.3.1. Moore-Dijkstra algoritmusa • A Moore algoritmus egyadottcsúcsbólazösszes többicsúcsbaaDFSmélységibejárással meghatározza a legrövidebbutak értékét egy pozitív élsúlyú gráfban. j 2 3 6 { , , } i Az 1-es csomópont közvetlen szomszédjainak a halmaza i=1 - + i (A) inicializálások - az i csúcsból kiinduló irányított élek végpontjainak a halmaza 1. lépés - az i csúcsba érkező irányított élek kiindulópontjainak a halmaza 2. lépés kilép Megjegyzés: Ha irányított a gráf a tekintjük a helyett!
I.2.3.1. Moore-Dijkstra algoritmusa • A Moore algoritmus egyadottcsúcsbólazösszes többicsúcsbaaDFSmélységibejárással meghatározza a legrövidebbutak értékét egy pozitív élsúlyú gráfban. 3. 4. 2. 1. Észrevehető, hogy az algoritmusnak n-1 lépésre van szüksége, ahol n a csúcsok (csomók) száma.
I.2.3.1. Moore-Dijkstra algoritmusa • A Dijkstra meghatározza a minimális irányított út értékét az adott csúcsból bármely másik csúcsba egy súlyozott gráfban is. • Az algoritmus működik irányított és nemirányított gráfra is. A legrövídebbutatugyanazazalgoritmusadja meg, mint a Moore-algoritmusesetében. A Dijkstra algoritmus BFS szélességi bejárást alkalmaz. j i
I.2.3.1. Moore-Dijkstra algoritmusa • Az előbb megadott algoritmus, mely csak pozitív élsúlyú gráfban működött, általánosítható egy G gráfra és tetszőleges l(u) élértékekre:
I.2.3. Egy adott csúcsból kiinduló minimális irányított utak értéke • I.2.3.1. Moore-Dijkstra algoritmusa • I.2.3.2. Bellman-Kalaba algoritmusa • I.2.3.3. Ford algoritmusa vektoros Legrövidebb utak egy csúcsból minden csúcsba I.2.3.1. Moore - Dijkstra algoritmusa I.2.3.3. Ford algoritmusa mátrixos 1 Legrövidebb utak minden csúcsból egy csúcsba I.2.3.2. A Bellman - Kalaba algoritmus 2 Legrövidebb utak minden csúcsból minden csúcsba A Floyd – Warshall algoritmus
I.2.3.2. Bellman-Kalaba algoritmusa • Legrövidebb utak minden csúcsból egy csúcsba • A dolgozatban leírt algoritmus, meghatározza egy tetszőleges gráfban az 1 –es csúcsból bármelyik másik csúcsba haladó irányított utak minimumát illetve egy negatív értékű irányított kör létezését jelzi. V= az irányított élek értékeinek mátrixa, mely a következőképpen van definiálva:
I.2.3.2. Bellman-Kalaba algoritmusa • Legrövidebb utak minden csúcsból egy csúcsba Befutó élek V= az irányított élek értékeinek mátrixa, mely a következőképpen van definiálva: 1 2 Kifutó élek 4 6 Több irányított kör is van benne! 7 1 12 2 5 6 6 9 2 15 9 10 10 3 9 3 14 2 9 11 6 11 12 2 11 6 4 a minimális irányított út értékét jelenti az 1 csúcsból az csúcsba, mely maximum khosszúságú lehet, vagyis azon irányított utak minimálisa, melyek legtöbb k+1 csúcson haladnak keresztül.
I.2.3.2. Bellman-Kalaba algoritmusa • Legrövidebb utak minden csúcsból egy csúcsba
I.2.3.2. Bellman-Kalaba algoritmusa • ha ezeket a számításokat egy λ , i=1, n egydimenziós tömbben végezzük egy λ i=1, n és k=1, n-1 kétdimenziós tömb helyett, akkor a kapott algoritmust Ford algoritmusának nevezzük. • Ez az algoritmus olyan gráfban müködik, melyben nincs negatív hosszúságú irányított kör. Észrevételek: - ha nem léteznek negatív hosszúságú irányított körök, akkor az, hogy a minimális érétkű irányított utak elemiek azt jelenti, hogy legtöbb n csúcson mennek át és így a minimális érték n iterációval megkapható; x • Legrövidebb utak minden csúcsból egy csúcsba • A dolgozatban leírt algoritmus, meghatározza egy tetszőleges gráfban az 1 –es csúcsból bármelyik másik csúcsba haladó irányított utak minimumát illetve egy negatív értékű irányított kör létezését jelzi. • - ha biztosak vagyunk, hogy a gráfban nincsenek negatív hosszúságú körök, akkor a Bellman-Kalaba algoritmus javított változatát kapjuk, ha a (b) részben a j egymásutánt követően bejárja a 2, 3, …, n értékeket, ebben a sorrendben és a számításokat a következő kifejezéssel végezzük:
I.2.3.2. Bellman-Kalaba algoritmusa • ha ezeket a számításokat egy λ , i=1, n egydimenziós tömbben végezzük egy λ i=1, n és k=1, n-1 kétdimenziós tömb helyett, akkor a kapott algoritmust Ford algoritmusának nevezzük. • Ez az algoritmus olyan gráfban müködik, melyben nincs negatív hosszúságú irányított kör. • Legrövidebb utak minden csúcsból egy csúcsba • A dolgozatban leírt algoritmus, meghatározza egy tetszőleges gráfban az 1 –es csúcsból bármelyik másik csúcsba haladó irányított utak minimumát illetve egy negatív értékű irányított kör létezését jelzi. x Lásd a Ford algoritmust x
Összegzésként: Csak olyan gráfra működik, melyben nincs irányított kör Nincs negatív hosszúságú irányított kör Tetszőleges gráfra is működik vektoros Legrövidebb utak egy csúcsból minden csúcsba I.2.3.1. Moore - Dijkstra algoritmusa I.2.3.3. Ford algoritmusa Ford algoritmus javított változata mátrixos 1 Legrövidebb utak minden csúcsból egy csúcsba I.2.3.2. A Bellman - Kalaba algoritmus 2 Legrövidebb utak minden csúcsból minden csúcsba Negatív értékü irányított kör létezését érzékeli A Floyd – Warshall algoritmus
ha a csúcsok a λ értékeinek növekvő sorrendjének megfelelően lennének bejárva, melyeket aMoore-Dijkstra algoritmusból kapunk, akkor elegendő lenne csak egy (b) típusú iteráció, ahhoz, hogy megkapjuk a minimumot; • az algoritmus komplexitásának javítását kapjuk, ha a (b) részt helyettesítjük a (b’) és (b”) alrészekkel, melyekben a csúcsok bejárása a 2 –től az n –ig illetve az n-től a 2-ig történik. Ezt az ötletet Yen 1972-ben adta. • körmentes gráfokra a Ford algoritmus már egy iterációval is eredményhez vezethet, ha a gráf csúcsai egy bizonyos sorrendben vannak bejárva; • az összes élnek a végigjárása egy (b) típusú iterációval kötelező, ahhoz, hogy eldönthessük az algoritmus leállását; • a Ford algoritmus (b) részében lévő csúcsok bejárásának módja befolyásolja a szükséges iterációk számát, más szóval mondva befolyásolja az algoritmus komplexitását; Ford algoritmus javított változata • ha a gráf irányított körmentes és az egyetlen csúcs, melyre ekkor egy algoritmus, mely egyetlen bejárással meghatározza a minimális értékét az utaknak a következő: x