<html>
<head><title> Dijkstra Algorithms </title></head>
<body>
<script language = "javascript">
var NilaiAcuan = 10000
var TakTerdefinisi = -1
var NamaVerteks = new Array ('A','B','C','D','E','F')
var Matriks = new Array (6)
function Bobot (a,b)
{
return Matriks [a][b]
}
function Di jkstra (JumlahVerteks,Awal,d)
{
var posisi = new Array(JumlahVerteks)
var i
var Kunjungan = new Array(JumlahVerteks)
var Sebelum = new Array(JumlahVerteks)
for (i=0; i<JumlahVerteks; i++)
{
posisi[i] = NilaiAcuan
Sebelum[i] = TakTerdefenisi
Kunjungan[i] = false
}
posisi[Awal] = 0
var Verteks;
for (Verteks=0; Verteks < JumlahVerteks; Verteks++)
{
var JarakTerpendek = NilaiAcuan, Berhenti = -1
for (i=0; i<JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
if(posisi[i] <= JarakTerpendek)
{
JarakTerpendek = posisi[i]; Berhenti = i;
}
}
}
Kunjunagn[Berhenti] = true;
for(i=0; i<JumlahVerteks; i++)
{
if(!Kunjungan[i])
{
var w = Bobot(Berhenti, i);
if (Posisi[i] = Posisi[Berhenti]+w < Posisi[i])
{
Posisi[i] = Posisi[Berhenti] + w;
Sebelum[i] = Berhenti;
}
}
}
}
i=d;
if (Posisi[i] < NilaiAcuan)
{
var Lintasan = NamaVerteks[i];
var Verteks = i;
while (Verteks>0)
{
Verteks = Sebelum[Verteks];
if (Verteks>=0) Lintasan = NamaVerteks[Verteks] + '->' + Lintasan;
{
message("Jarak : " +Posisi[i]+' ("Lintasan+')'+"<br>');
}
else
{
message("Tidak Ada Jalur");
}
}
funtion int()
{
var x = NilaiAcuan
Matriks[0] = new Array (0,2,3,x,x,x)
Matriks[1] = new Array (2,0,3,6,x,x)
Matriks[2] = new Array (3,3,0,3,5,x)
Matriks[3] = new Array (x,6,3,0,1,3)
Matriks[4] = new Array (x,x,5,1,0,1)
Matriks[5] = new Array (x,x,x,3,1,0)
var Awal = '<prev>'
Awal = Awal + 'A--2-b-6--D--3-F'+'<br>'
Awal = Awal + ' \ | /| / '<br>'
Awal = Awal + ' 3 3 3 1 1 '<br>'
Awal = Awal + ' \ | / | / '<br>'
Awal = Awal + ' \|/ |/ '<br>'
Awal = Awal + ' C--5-E '<br>'
Awal = Awal +'</prev>'
message(Awal.replace(/(\d)+/g, '<font color="red>$1</font>');}
int()
var Dari = 0 // A
var Ke = 5 // F
Di jkstra (Matriks.length,Dari,Ke);
//-->
</script>
</body>
</html>
