|
« www.spyrozone.net » |
|
|
[123]. Algoritma Dijkstra
--------------------------------------------------------- Author : SPYRO KiD Contact : admin[~@~]spyrozone.net || http://spyrozone.net CopyLEFT (c) 2006 www.spyrozone.net All Rights Reserved » 15/01/2006 14:00:50 WIB ---------------------------------------------------------
Spyro baru ajah menambahkan aplikasi untuk mencari Shortest Path berdasarkan Algoritma ini. Download Programnya di halaman Memeber kategory Just For Fun. Bagi kamu yang memiliki tugas mata kuliah ini dan membutuhkan Source Codenya, bisa lansung menghubungi saya lewat Email Tapi.. maaf ajah kalo ngebalesnya agak telat, soalnya di real life saya juga lagi sibuk mempersiapkan diri untuk UAN.
Algoritma ini mirip dengan algoritma Prim untuk mencari MST, yaitu pada tiap iterasi memeriksa sisi-sisi yang menghubungkan subset verteks W dan subset verteks (V-W) dan memindahkan verteks w dari (V-W) ke W yang memenuhi kriteria tertentu. Perbedaannya terletak pada kriteria itu sendiri.
Dalam implementasinya penghitungan jarak dari verteks asal vs disederhanakan dengan menambahkan field minpath pada setiap verteks; field-field minpath ini diinisialisasi sesuai dengan adjacencynya dengan vs, kemudian dalam setiap iterasi di-update bersamaan masuknya w dalam W. Field minpath ini menunjukkan jarak dari vs ke verteks yang bersangkutan terpendek yang diketahui hingga saat itu. Jadi pada verteks dalam W, minpath sudah menunjukkan jarak terpendek dari Vs untuk mencapai verteks yang bersangkutan, sementara pada (V-W) masih perlu diupdate pada setiap iterasi dalam mendapatkan verteks w seperti diterangkan di atas. Yaitu, setiap mendapatkan w maka update minpath setiap adjacent verteks x dari w di (V-W) sisa dengan:
Demikian halnya pencarian w itu sendiri disederhanakan menjadi pencarian node di (V-W) dengan minpath terkecil. Selengkapnya algoritma Dijkstra adalah sebagai berikut.
Verteks-verteks dalam W dapat dibedakan dari verteks dalam (V-W) dengan suatu field yang berfungsi sebagai flag atau dengan struktur liked-list. Informasi lintasan dapat diketahui dengan pencatatan predesesor dari setiap verteks yang dilakukan pada saat update harga minpath tersebut (fungsi minimum): jika minpath[t] diupdate dengan (minpath[w]+Weight[w, t]) maka predesesor dari t adalah w. pada tahap inisialisasi predesesor setiap verteks diisi oleh vs.
Contoh masalah:
/* ------------------------------|EOF|------------------------------ */
|
|
| « Back |
« www.spyrozone.net » |