Algoritma Dijkstra: Perbedaan antara revisi
k bot Menambah: hr:Dijkstrin algoritam |
k Hysocc memindahkan halaman Algoritme Dijkstra ke Algoritma Dijkstra dengan menimpa pengalihan lama |
||
(31 revisi perantara oleh 23 pengguna tidak ditampilkan) | |||
Baris 1: | Baris 1: | ||
{{terjemah|Inggris}} |
{{terjemah|Inggris}} |
||
[[Berkas:Dijkstra_Animation.gif|jmpl|Algoritme Dijkstra]] |
|||
''' |
'''Algoritme 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 bernilai nonnegatif, ''<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 |
Misalnya, bila titik dari sebuah graf melambangkan kota-kota dan bobot garis melambangkan jarak antara kota-kota tersebut, algoritme Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota. |
||
⚫ | Biaya (''cost'') dari sebuah garis dapat dianggap sebagai jarak antara dua simpul, yaitu jumlah jarak semua garis dalam jalur tersebut. Untuk sepasang titik ''<math>s</math>'' dan ''<math>t</math>'' dalam ''<math>V</math>'', algoritme ini menghitung jarak terpendek dari ''<math>s</math>'' ke ''<math>t</math>''. |
||
Input algoritma ini adalah sebuah graf berarah yang berbobot (''weighted directed graph'') ''G'' dan sebuah sumber ''[[vertex]]'' ''s'' dalam ''G'' dan ''V'' adalah himpunan semua [[vertices]] dalam graph ''G''. |
|||
== Kode semu == |
|||
Setiap sisi dari graf ini adalah pasangan vertices (''u'',''v'') yang melambangkan hubungan dari ''vertex'' ''u'' ke ''vertex'' ''v''. Himpunan semua tepi disebut ''E''. |
|||
⚫ | |||
2 ''Q'' adalah himpunan titik |
|||
Bobot (''weights'') dari semua sisi dihitung dengan fungsi |
|||
3 |
|||
''w'': ''E'' → [0, ∞) |
|||
4 '''untuk setiap''' titik ''v'' dalam ''Graf'': |
|||
jadi ''w''(''u'',''v'') adalah jarak tak-negatif dari vertex ''u'' ke vertex ''v''. |
|||
5 jarak[''v''] ← tak hingga |
|||
6 sebelum[''v''] ← kosong |
|||
⚫ | |||
7 tambahkan ''v'' ke dalam ''Q'' |
|||
8 jarak[''asal''] ← 0; |
|||
== Pseudocode == |
|||
9 |
|||
⚫ | |||
10 '''selama''' ''Q'' '''tidak''' kosong: |
|||
2 '''for each''' vertex v in V[G] ''// Initializations'' |
|||
11 ''u'' ← titik dalam ''Q'' dengan nilai jarak[''u''] terkecil |
|||
12 hapus ''u'' dari ''Q'' |
|||
13 |
|||
5 d[s] := 0 ''// Distance from s to s'' |
|||
14 '''untuk setiap''' tetangga ''v'' dari ''u'': // hanya ''v'' yang masih dalam ''Q'' |
|||
6 S := empty set |
|||
15 ''alt'' ← jarak[''u''] + jarak_antara(''u'', ''v'') |
|||
7 Q := V[G] ''// Set of all vertices'' |
|||
16 '''jika''' ''alt'' < jarak[''v'']: |
|||
8 '''while''' Q is not an empty set ''// The algorithm itself'' |
|||
17 jarak[''v''] ← ''alt'' |
|||
18 sebelum[''v''] ← ''u'' |
|||
19 |
|||
11 '''for each''' edge (u,v) outgoing from u |
|||
20 '''kembalikan''' jarak[], sebelum[] |
|||
12 '''if''' d[u] + w(u,v) < d[v] ''// Relax (u,v)'' |
|||
13 d[v] := d[u] + w(u,v) |
|||
14 previous[v] := u |
|||
== Rujukan == |
== Rujukan == |
||
Baris 43: | Baris 42: | ||
* [http://www.cs.sunysb.edu/~skiena/combinatorica/animations/dijkstra.html Animation of Dijkstra's algorithm] |
* [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.boost.org/libs/graph/doc/index.html The Boost Graph Library (BGL)] |
||
* [http://www.itonsite.co.uk/allanboydproject/section4_2.htm |
* [http://www.itonsite.co.uk/allanboydproject/section4_2.htm JavaScript 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://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] |
* [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] |
* [http://www.unf.edu/~wkloster/foundations/DijkstraApplet/DijkstraApplet.htm Dijkstra's Algorithm Applet] |
||
[[Kategori: |
[[Kategori:Algoritme|Dijkstra]] |
||
[[bg:Алгоритъм на Дейкстра]] |
|||
[[cs:Dijkstrův algoritmus]] |
|||
[[de:Dijkstra-Algorithmus]] |
|||
[[en:Dijkstra's algorithm]] |
|||
[[es:Algoritmo de Dijkstra]] |
|||
[[fa:الگوریتم دیکسترا]] |
|||
[[fi:Dijkstran algoritmi]] |
|||
[[fr:Algorithme de Dijkstra]] |
|||
[[he:אלגוריתם דייקסטרה]] |
|||
[[hr:Dijkstrin algoritam]] |
|||
[[hu:Dijkstra-algoritmus]] |
|||
[[it:Algoritmo di Dijkstra]] |
|||
[[ja:ダイクストラ法]] |
|||
[[ko:데이크스트라 알고리즘]] |
|||
[[lt:Dijkstros algoritmas]] |
|||
[[nl:Kortstepad-algoritme]] |
|||
[[no:Dijkstras algoritme]] |
|||
[[pl:Algorytm Dijkstry]] |
|||
[[pt:Algoritmo de Dijkstra]] |
|||
[[ro:Algoritmul lui Dijkstra]] |
|||
[[ru:Алгоритм Дейкстры]] |
|||
[[sk:Dijkstrov algoritmus]] |
|||
[[sl:Dijkstrov algoritem]] |
|||
[[sr:Дајкстрин алгоритам]] |
|||
[[sv:Dijkstras algoritm]] |
|||
[[uk:Алгоритм Дейкстри]] |
|||
[[vi:Thuật toán Dijkstra]] |
|||
[[zh:迪科斯彻算法]] |
Revisi terkini sejak 11 Januari 2022 04.46
Artikel ini perlu diterjemahkan dari bahasa Inggris ke bahasa Indonesia. Artikel ini ditulis atau diterjemahkan secara buruk dari Wikipedia bahasa Inggris. Jika halaman ini ditujukan untuk komunitas bahasa Inggris, halaman itu harus dikontribusikan ke Wikipedia bahasa Inggris. Lihat daftar bahasa Wikipedia. Artikel yang tidak diterjemahkan dapat dihapus secara cepat sesuai kriteria A2. Jika Anda ingin memeriksa artikel ini, Anda boleh menggunakan mesin penerjemah. Namun ingat, mohon tidak menyalin hasil terjemahan tersebut ke artikel, karena umumnya merupakan terjemahan berkualitas rendah. |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Dijkstra_Animation.gif/220px-Dijkstra_Animation.gif)
Algoritme 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 bernilai nonnegatif, . Input algoritme ini adalah sebuah graf berarah yang berbobot (weighted directed graph) dan sebuah titik asal dalam himpunan garis .
Misalnya, bila titik dari sebuah graf melambangkan kota-kota dan bobot garis melambangkan jarak antara kota-kota tersebut, algoritme Dijkstra dapat digunakan untuk menemukan jarak terpendek antara dua kota.
Biaya (cost) dari sebuah garis dapat dianggap sebagai jarak antara dua simpul, yaitu jumlah jarak semua garis dalam jalur tersebut. Untuk sepasang titik dan dalam , algoritme ini menghitung jarak terpendek dari ke .
Kode semu[sunting | sunting sumber]
1 fungsi Dijkstra(Graf, asal): 2 Q adalah himpunan titik 3 4 untuk setiap titik v dalam Graf: 5 jarak[v] ← tak hingga 6 sebelum[v] ← kosong 7 tambahkan v ke dalam Q 8 jarak[asal] ← 0; 9 10 selama Q tidak kosong: 11 u ← titik dalam Q dengan nilai jarak[u] terkecil 12 hapus u dari Q 13 14 untuk setiap tetangga v dari u: // hanya v yang masih dalam Q 15 alt ← jarak[u] + jarak_antara(u, v) 16 jika alt < jarak[v]: 17 jarak[v] ← alt 18 sebelum[v] ← u 19 20 kembalikan jarak[], sebelum[]
Rujukan[sunting | sunting sumber]
- 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–601.
Lihat pula[sunting | sunting sumber]
Pranala luar[sunting | sunting sumber]
- Teori Jalan Terpendek Dijkstra oleh Jeremy Siek, dari Universitas Indiana
- Animation of Dijkstra's algorithm
- The Boost Graph Library (BGL)
- JavaScript Dijkstra's Algorithm Diarsipkan 2006-07-02 di Wayback Machine.
- Interactive Implementation of Dijkstra's Algorithm
- Shortest Path Problem: Dijkstra's Algorithm Diarsipkan 2007-09-27 di Wayback Machine.
- Dijkstra's Algorithm Applet