Algoritma Dijkstra: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Citra (bicara | kontrib)
k Hysocc memindahkan halaman Algoritme Dijkstra ke Algoritma Dijkstra dengan menimpa pengalihan lama
 
(45 revisi perantara oleh 32 pengguna tidak ditampilkan)
Baris 1:
{{terjemah|Inggris}}
[[Berkas:Dijkstra_Animation.gif|jmpl|Algoritme Dijkstra]]
 
'''AlgoritmaAlgoritme Dijkstra''', (dinamai menurut penemunya, seorang ilmuwan komputer, [[Edsger Dijkstra]]), adalah [[sebuah algoritme rakus (''greedy algorithm]]'') yang dipakai dalam memecahkan [[permasalahan jarak terpendek (''shortest path problem]]'') untuk sebuah [[graf]] berarah (''directed graph]]'') dengan bobot-bobot garis (''edge weights'') yang tidakbernilai negatifnonnegatif, ''<math>[0, \infty)</math>''. Input algoritme ini adalah sebuah graf berarah yang berbobot (''weighted directed graph'') <math>G</math> dan sebuah titik asal ''<math>s</math>'' dalam himpunan garis ''<math>V</math>''.
 
Misalnya, bila [[vertices]]titik dari sebuah graphgraf melambangkan kota-kota dan edgebobot weightsgaris melambangkan jarak antara kota-kota tersebut, algoritmaalgoritme Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota.
 
Input algoritma ini adalah sebuah weighted directed graph ''G'' dan sebuah source vertex ''s'' dalam ''G''. ''V'' adalah himpunan semua [[vertexBiaya (graph theory)|vertices]] dalam graph ''Gcost''. Setiap [[edge (graph theory)|edge]] dari graph ini adalah pasangan vertices (''u'',''v'') yang melambangkan hubungan dari vertex ''u'' ke vertex ''v''. Himpunan semua edge disebut ''E''. Weights dari edges dihitung dengan fungsi ''w'': ''E'' → [0, ∞); jadi ''w''(''u'',''v'') adalah jarak non-negatif dari vertex ''u'' ke vertex ''v''. Cost dari sebuah edgegaris dapat dianggap sebagai jarak antara dua vertexsimpul, yaitu jumlah jarak semua edgegaris dalam pathjalur tersebut. Untuk sepasang vertextitik ''<math>s</math>'' dan ''<math>t</math>'' dalam ''<math>V</math>'', algoritmaalgoritme ini menghitung jarak terpendek dari ''<math>s</math>'' ke ''<math>t</math>''.
 
== PseudocodeKode semu ==
1 '''functionfungsi''' Dijkstra(G''Graf'', w, s''asal''):
2 ''Q'' adalah himpunan titik
2 '''for each''' vertex v in V[G] ''// Initializations''
3
3 d[v] := infinity
4 '''untuk setiap''' titik ''v'' dalam previous[v] ''Graf'':= undefined
35 djarak[''v''] :=← tak infinityhingga
5 d[s] := 0 ''// Distance from s to s''
6 S := empty set sebelum[''v''] ← kosong
7 Q := V[G] tambahkan ''v'' ke dalam ''// Set of all verticesQ''
8 jarak[''asal''] ← 0;
8 '''while''' Q is not an empty set ''// The algorithm itself''
9
9 u := Extract_Min(Q)
10 '''selama''' ''Q'' '''tidak''' S kosong:= S union {u}
11 ''u'for' ← titik dalam each''Q'' edgedengan (u,v) outgoing fromnilai jarak[''u''] terkecil
12 hapus '''if'u'' d[u] + w(u,v) < d[v] dari ''// Relax (u,v)Q''
13
13 d[v] := d[u] + w(u,v)
14 '''untuk setiap''' tetangga ''v'' dari ''u'': // hanya ''v'' yang masih dalam previous[v] := u''Q''
15 ''alt'' ← jarak[''u''] + jarak_antara(''u'', ''v'')
16 '''jika''' ''alt'' < jarak[''v'']:
17 jarak[''v''] ← ''alt''
1318 dsebelum[''v''] := d[''u] + w(u,v) ''
19
20 '''kembalikan''' jarak[], sebelum[]
 
== Rujukan ==
* E. W. Dijkstra: ''A note on two problems in connexion with graphs''. In: ''Numerische Mathematik''. 1 (1959), S. 269–271
* [[Thomas H. Cormen]], [[Charles E. Leiserson]], [[Ronald L. Rivest]], and [[Clifford Stein]]. ''[[Introduction to Algorithms]]'', Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Section 24.3: Dijkstra's algorithm, pp.595&ndash;601595–601.
 
== Lihat jugapula ==
* [[Breadth-first search]]
* [[Open shortest path first]]
Baris 35 ⟶ 42:
* [http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html Animation of Dijkstra's algorithm]
* [http://www.boost.org/libs/graph/doc/index.html The Boost Graph Library (BGL)]
* [http://www.itonsite.co.uk/allanboydproject/section4_2.htm JavascriptJavaScript Dijkstra's Algorithm] {{Webarchive|url=https://web.archive.org/web/20060702173918/http://www.itonsite.co.uk/allanboydproject/section4_2.htm |date=2006-07-02 }}
* [http://students.ceid.upatras.gr/~papagel/english/java_docs/minDijk.htm Interactive Implementation of Dijkstra's Algorithm]
* [http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/dijkstra/Dijkstra.shtml Shortest Path Problem: Dijkstra's Algorithm] {{Webarchive|url=https://web.archive.org/web/20070927234553/http://www-b2.is.tokushima-u.ac.jp/~ikeda/suuri/dijkstra/Dijkstra.shtml |date=2007-09-27 }}
* [http://www.unf.edu/~wkloster/foundations/DijkstraApplet/DijkstraApplet.htm Dijkstra's Algorithm Applet]
 
[[Kategori:AlgoritmaAlgoritme|Dijkstra]]
 
[[bg:Алгоритъм на Дейкстра]]
[[cs:Dijkstrův algoritmus]]
[[de:Dijkstra-Algorithmus]]
[[en:Dijkstra's algorithm]]
[[es:Algoritmo de Dijkstra]]
[[fi:Dijkstran algoritmi]]
[[fr:Algorithme de Dijkstra]]
[[he:אלגוריתם דייקסטרה]]
[[it:Algoritmo di Dijkstra]]
[[ja:ダイクストラ法]]
[[ko:데이크스트라 알고리즘]]
[[lt:Dijkstros algoritmas]]
[[nl:Kortstepadalgoritme]]
[[pl:Algorytm Dijkstry]]
[[pt:Algoritmo de Dijkstra]]
[[ru:Алгоритм Дейкстры]]
[[sl:Dijkstrov algoritem]]
[[sr:Дијкстрин алгоритам]]
[[sv:Dijkstras algoritm]]
[[uk:Алгоритм Дейкстри]]
[[vi:Thuật toán Dijkstra]]
[[zh:Dijkstra算法]]