ListRA-92 Adv. Citizen A
Lokasi : antara ada dan tiada~ :- Status : Who says a woman has to be weak?!! Jumlah Post : 407 Voucher : 4451 Reppo : 2 Join Date : 2010-10-09
| Subject: [GML] Dijkstra's Algorithm (Beta) Sun 24 Oct 2010, 23:46 | |
| - Overview:
Algoritma Dijkstra adalah algoritma yang mencari suatu "jalan" terpendek menuju "titik" tujuan dari "titik" asal.
Script: hapus - Code:
-
// hapus(ii) //where ii is index of vertex to be removed from unvisited vertex array q. ii=argument0 for(iii=1;iii<=nq;iii+=1) if(q[iii]==ii) iv=iii; if(iv<=nq){ if(iv<nq){ for(iii=iv;iii<=nq-1;iii+=1){ q[iii]=q[iii+1] } } nq-=1 } Script: ketemu - Code:
-
// ketemu(ii) //where ii is index of vertex to be searched in vertex array q. ii=argument0 ff=false for(iii=1;iii<=nq;iii+=1){ if(q[iii]==ii) ff=true } return ff Script: dijkstra - Code:
-
// dijkstra(s) //where s is index of source vertex. // //Required data //vertices_dist[i]: Path distance from i to source s //vertices_prev[i]: Previous path vertex from vertex i //vertices_neighbors[i]: Number of neighbors of vertex i //vertices_neighbor[i,j]: j-th neighbor vertex index of vertex i //vertices_distb[i,j]: Distance between vertex i and j-th neighbor vertex of vertex i s=argument0 for(i=1;i<=n;i+=1){ vertices_dist[i]=99999 vertices_prev[i]=0 q[i]=i nq=n } vertices_dist[s]=0; while(nq>0){ d=vertices_dist[q[1]] u=q[1] if(nq>1){ for(ii=2;ii<=nq;i+=1){ if(vertices_dist[q[ii]]<d){ d=vertices_dist[q[ii]]; u=q[ii]; } } }
if(vertices_dist[u]==99999) break; hapus(u); if(vertices_neighbors[u]>0){ for(i=1;i<=vertices_neighbors[u];i+=1){ v=vertices_neighbor[u,i] if(ketemu(v)){ alt=vertices_dist[u]+vertices_distb[u,i] if(alt<vertices_dist[v]){ vertices_dist[v]=alt; vertices_prev[v]=u; } } } } } Fungsi: mencari "jalan" terpendek menuju "titik" tujuan dari "titik" asal
Cara pemasangan: - Buat tiga script baru, kasi nama hapus, ketemu, dan dijkstra - Copas masing-masing bagian code di atas ke masing2 script tersebut - Implementasikan script-script tersebut ke action Execute a piece of code. Namun array-array (vertices_*) harus diinisialisasi datanya terlebih dahulu.
Created by: Listra the Gunmanner
Credits - http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
NB: Lihat konsep dan prinsip Algoritma Dijkstra di: http://ancuracademy.forumotion.net/programming-f13/programming-dijkstra-s-algorithm-t11.htm Script Algoritma Dijkstra versi bahasa Pascal: http://prodig.forumotion.net/pascal-f54/pascal-dijkstra-s-algorithm-t271.htm |
|