Pereiti prie turinio

Dijkstros algoritmas

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
22:04, 19 balandžio 2006 versija, sukurta Rotec (aptarimas | indėlis)
(skirt) ←Prieš tai buvusi versija | žiūrėti esamą versiją (skirt) | Kita versija → (skirt)

Algoritmas

Dijkstra algoritmas, kurį sukūrė kompiuterių specialistas Edgaras Dijkstra, sprendžia vieno šaltinio trumpiausių kelių problemą kryptiniame grafe su ne neigiamais kraštinių svoriais.
Pavyzdžiui, jei grafo viršūnės vaizduoja miestus ir kraštinių svoriai vaizduoja atstumą tarp tų miestų, sujungtą tiesioginiu keliu, Djikstros algoritmas naudojamas surasti trumpiausius kelius tarp tų miestų.

Kintamieji:

S - pradžios viršūnė
F - aplankytų viršūnių sąrašas
G - grafas
E - briauna su viršūnėmis (v1,v2)
V - viršūnė
dist(i) - atstumų nuo S iki kiekvienos V masyvas
prev(i) - pointeris į ankstesnes V
i - indeksas
U - neaplankytų viršūnių sąrašas

Pseudokodas:

FOR i=0 to |V|-1
	dist(i)=INFINITY
	prev(i)=NULL
END FOR

WHILE F nepilnas
	imame viršūnę v is U su artimiausiu keliu iki S
	pridedame V į F
	FOR V briaunai(v1,v2)
		IF (dist(v1)+ilgis(v1,v2) < dist(v2)
			dist(v2)=dist(v1)+ilgis(v1,v2)
			prev(v2)=v1
			[galbūt reikia atnaujinti U]
		END IF
	END FOR
END WHILE