Dijkstran toteuttamisesta käytännössä

Dijkstran toteuttamisesta käytännössä

Kurssimateriaalissa esiintyvä pseudokoodi Dijkstran algoritmille käyttää metodia, joka kasvattaa keossa olevan alkion prioritettia. Tällaista metodia ei löydy javan valmiista kekototeutuksesta, eikä sen itse toteuttaminenkaan ole suoraviivaista. Dijkstra on siis toteutettava hieman eri tavalla.

Dijkstran aikana keossa kannattaa pitää olioita, jotka ovat muotoa (solmu, etäisyysarvio). Jotta keon järjestys ei menisi sekaisin, on keossa olevien alkioiden prioriteetin pysyttävä samana koko keossaoloajan aikana. Tämän takia etäisyysarvio ei voi viitata esimerkiksi olion ulkopuoliseen taulukkoon, jonka arvoja päivitetään algoritmin aikana.

Kun tullaan tilanteeseen, jossa etäisyysarviota johonkin solmuun pitäisi korjata, niin ei ole mahdollista korjata etäysyysarviota jo keossa olevassa alkiossa. Sen sijaan vanha solmua vastaava alkio etäisyysarvioineen jätetään kekoon uutta lisättäessä, eli keossa voi olla yhtä solmua kohtaan useampi alkio! Koska Dijkstrassa jokaisen solmun tulisi tulla ainoastaan kerran ulos keosta, voidaan ylimääräisen taulukon avulla pitää kirjaa niistä solmuista, jotka on jo otettu ulos keosta. Jos jotain solmua vastaava alkio otetaan uudemman kerran ulos keosta, niin ei ole enää tarvetta käydä läpi sen naapureita, vaan voidaan suoraan ottaa seuraava alkio ulos keosta.