My first Magazine pemrograman-kompetitif-dasar | Page 130
11
Algoritma Graf
Setelah Anda memahami cara merepresentasikan dan menyelesaikan persoalan graf seder-
hana, kini waktunya untuk mempelajari algoritma graf yang lebih rumit. Algoritma yang akan
dipelajari pada bab ini adalah penyelesaian untuk permasalahan yang klasik pada graf, yaitu
pencarian shortest path dan Minimum Spanning Tree (MST).
Untuk memulai pembahasan tentang algoritma graf, asumsikan:
•
•
•
•
•
V menyatakan banyaknya node .
E menyatakan banyaknya edge .
w[a][b] menyatakan bobot edge yang menghubungkan node a dengan node b.
Node pada graf dinomori dari 1 sampai dengan V .
ad j(x) menyatakan himpunan node yang merupakan tetangga dari node x.
11.1
Shortest Path
Salah satu persoalan umum yang dihadapi pada permasalahan graf adalah pencarian shortest
path (jalur terpendek). Definisi masalah yang diberikan adalah: diberikan graf, cari serangkaian
edge yang perlu dilalui mulai dari suatu node menuju suatu node lainnya, sedemikian sehingga
jumlah bobot dari edge yang dilalui sekecil mungkin. Pada kasus graf tidak berbobot, kita dapat
mengasumsikan bobot setiap edge adalah 1.
Definisi bobot dan jalur terpendek bergantung pada masalah yang dihadapi. Misalnya bobot
edge pada suatu graf yang merepresentasikan kota dan jalan menyatakan waktu tempuh, berarti
shortest path menyatakan total waktu tempuh paling sedikit yang diperlukan untuk berpindah
dari suatu kota ke kota lainnya.
Terdapat beberapa algoritma yang menyelesaikan masalah shortest path . Apabila kita
diberikan graf yang tidak berbobot, pencarian shortest path dapat menggunakan penelusuran
graf secara BFS. Untuk graf berbobot, diperlukan algoritma yang lebih kompleks. Pada bab
ini, kita akan mempelajari algoritma Dijkstra, Bellman—Ford, dan Floyd—Warshall. Nama ketiga
algoritma tersebut berasal dari nama pencipta-penciptanya.
11.1.1
Dijkstra
Konsep
Algoritma Dijkstra menggunakan konsep greedy untuk menemukan shortest path dari suatu
node , misalnya s, ke semua node lainnya. Untuk setiap tahapan, diperlukan pencatatan informasi
berikut untuk seluruh node :
• dist[x]: jarak terpendek yang sejauh ini ditemukan untuk mencapai node x dari node s.
120