<head><title>Algoritma Dijkstra</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 dijkstra(jumlahverteks,awal,d) //panjang matriks, dari, ke
{
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] = takterdefinisi;
kunjungan[i] = false;
}
posisi[awal] = 0;
var verteks;
for (verteks=0; verteks<jumlahverteks; verteks++)
{
var jarakterpendek = nilaiacuan;
var berhenti = -1;
for (i=0; i<jumlahverteks; i++)
{
if (!kunjungan[i])
{
if (posisi[i] <= jarakterpendek)
{
jarakterpendek = posisi[i];
berhenti = i;
}
}
}
kunjungan[berhenti] = true;
for (i=0; i<jumlahverteks; i++)
{
if (!kunjungan[i])
{
var w = bobot(berhenti, i);
if (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;
}
alert ("Jarak terpendek dari " +namaverteks[dari]+ " ke " +namaverteks[d]+ " : " + posisi[i] + " (" + lintasan + ")");
}
else
{
alert ("Tidak ada jalur");
}
}
function init()
{
var x = '~';
document.write('<pre>');
document.write(" A B C D E F" + '<br>');
document.write('A ' + (matriks[0]=new Array(0,2,3,x,x,x)) + '<br>');
document.write('B ' + (matriks[1]=new Array(2,0,3,6,x,x)) + '<br>');
document.write('C ' + (matriks[2]=new Array(3,3,0,3,5,x)) + '<br>');
document.write('D ' + (matriks[3]=new Array(x,6,3,0,1,3)) + '<br>');
document.write('E ' + (matriks[4]=new Array(x,x,5,1,0,1)) + '<br>');
document.write('F ' + (matriks[5]=new Array(x,x,x,3,1,0)) + '<br>');
document.write('</pre>');
document.write('<pre>A-2-B-6--D--3-F <br>');
document.write('\\ | /| / <br>');
document.write(' 3 3 3 1 1 <br>');
document.write(' \\ | / | / <br>');
document.write(' \\|/ |/ <br>');
document.write(' C--5-E <br> </pre>');
}
init();
var dari = 0; // A
var ke = 5; // F
dijkstra(matriks.length,dari,ke);
//-->
</script>
</body>
</html>


