Algoritma Bellman–Ford: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Wadaihangit (bicara | kontrib)
k Menambahkan foto ke halaman #WPWP
 
(14 revisi perantara oleh 11 pengguna tidak ditampilkan)
Baris 1:
{{rapikan}}
[[Berkas:Bellman–Ford algorithm example.gif|jmpl|Contoh algoritma Bellman – Ford yang digunakan pada graf 5 titik]]
'''Algoritme Bellman–Ford''' menghitung jarak terpendek (dari satu sumber) pada sebuah digraf berbobot.
Maksudnya dari satu sumber ialah bahwa ia menghitung semua jarak terpendek yang berawal dari satu titik node. Algoritma[[Algoritme Dijkstra]] dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi (edge) yang berbobot negatif. Maka AlgoritmaAlgoritme Bellman-Ford hanya digunakan jika ada sisi berbobot negatif.
 
AlgoritmaAlgoritme Bellman-Ford menghitungmenggunakan jarakwaktu terpendeksebesar O(dariV.E), satudi sumber)mana V dan E adalah padabanyaknya sebuahsisi digrafdan berbobottitik.
Maksudnya dari satu sumber ialah bahwa ia menghitung semua jarak terpendek yang berawal dari satu titik node. Algoritma Dijkstra dapat lebih cepat mencari hal yang sama dengan syarat tidak ada sisi (edge) yang berbobot negatif. Maka Algoritma Bellman-Ford hanya digunakan jika ada sisi berbobot negatif.
 
Dalam konteks ini, [[bobot ekivalen]] dengan jarak dalam sebuah sisi.
Algoritma Bellman-Ford menggunakan waktu sebesar O(V.E), di mana V dan E adalah banyaknya sisi dan titik.
 
Dalam konteks ini, bobot ekivalen dengan jarak dalam sebuah sisi.
 
''// Definisi tipe data dalam graf''
Baris 22:
'''function''' BellmanFord(''list'' semuatitik, ''list'' semuasisi, ''titik'' dari)
''// Argumennya ialah graf, dengan bentuk daftar titik ''
''// and sisi. AlgoritmaAlgoritme ini mengubah titik-titik dalam ''
''// semuatitik sehingga atribut ''jarak'' dan ''sebelum'' ''
''// menyimpan jarak terpendek.''
Baris 29:
'''for each''' titik v in semuatitik:
'''if''' v '''is''' dari '''then''' v.jarak = 0
'''else''' v.jarak := '''tak-hingga'''
v.sebelum := '''null'''
''// Perulangan relaksasi sisi''
'''for''' i '''from''' 1 '''to''' size(semuatitik):
'''for each''' sisi uv in semuasisi:
u := uv.dari
v := uv.ke ''// uv adalah sisi dari u ke v''
'''if''' v.jarak > u.jarak + uv.bobot
v.jarak := u.jarak + uv.bobot
v.sebelum := u
''// Cari sirkuit berbobot(jarak) negatif''
'''for each''' sisi uv in semuasisi:
u := uv.dari
v := uv.ke
'''if''' v.jarak > u.jarak + uv.bobot
'''error''' "Graph mengandung siklus berbobot total negatif"
 
Secara umum ''coding'' algoritmaalgoritme dapat juga menggunakan [[teknik]] ''coding'' pemrograman yang lain.
{{komputer-stub}}
 
{{komputer-stub}}
[[Kategori:Algoritma]]
 
[[Kategori:AlgoritmaAlgoritme]]
Secara umum coding algoritma dapat juga menggunakan teknik coding pemrograman yang lain.