6. Dijkstra algoritmus

Dijkstra algoritmusa egy hatékony módszert ad irányított élsúlyozott gráfban legkisebb súlyú út keresésére egy adott pontból az összes többibe.

Az Dijkstra.py fájlban megadtunk egy programot, ami tartalmaz egy példa gráfot.

A gráf tárolásáról a az Graph osztály gondoskodik. Ez a graph objektum-változóban, egy NumPy tömbben tárolja el a gráf adjacencia mátrixát. Ennek az \([i,j]\)-edik eleme az \(i\)-ből \(j\)-be futó él súlya, illetve 0 ha nincs él \(i\)-ből \(j\)-be.

A feladat Dijkstra algoritmusának leprogramozása a Graph osztály dijkstra függvényébe. Ez paraméterként kapja forrás csúcs sorszámát. Visszatérési értéke egy tömb legyen, aminek \(j\)-edik eleme a forrásból \(j\)-be futó legkisebb súlyú út súlya. Ha szükséges, további segédfüggvényeket is hozzáadhatunk az osztályhoz.

A forrás csúcsot a programnak parancssorban adjuk meg, pl. így:

            python3 Dijkstra.py 4
            
ha a 4-es csúcsból induló utakra vagyunk kíváncsiak. A futás után a program kilistázza a legrövidebb út súlyát minden csúcsra.