Greedy Method – Prims – Kruskal – Djikstra

Download Report

Transcript Greedy Method – Prims – Kruskal – Djikstra

Greedy Method
Oleh : Tuti Widya Lestari, S.Kom
Sub Topik
• Greedy Method
• Minimum Spanning Tree
– Prims
– Kruskal
• Sortest Path
– Dijktras
Pendahuluan
• Parameter algoritma di ukur dari performa
algoritma secara efektif dan efisien
• Pengambilan jalan tengah yaitu pencarian
solusi optimal
• Salah satu cara pencapaian solusi algoritma
optimal adalah dengan metode Greedy
• Greedy digunakan untuk penyelesaian
beberapa masalah antara lain :
a. TSP (Traveling Sallesperson Problem)
b. MST (Minimum spanning Tree)
c. Minimasi waktu dalam sistem (penjadwalan)
Algoritma Greedy
Memecahkan masalah dengan cara step by step,
langkahnya sebagai berikut :
a. Memilih langkah yang terbaik pada saat itu tanpa
memprediksi kedepanya
b. Memilih optimum lokal dan berakhir pada optimum
global
Secara umum algoritma greedy disusun oleh elemenelemen berikut :
a. Himpunan kandidat
b. Himpunan Solusi
c. Fungsi Seleksi (Selection Function)
d. Fungsi Kelayakan (feasible)
Minimum spanning Tree
Pencarian biaya yang minimum dari suatu graph
sehingga membentuk pohon .
Syarat Graph yang dapat dicari minimum spanning
treenya :
a. Graph harus terhubung
b. Ruasnya punya bobot
c. Graph tidak berarah
Algoritma yang dipakai untuk menentukan minimum
spanning tree :
a. Algoritma Kruskal
b. Algoritma Prim
Greedy Method
Jenis algoritma yang termasuk greedy method :
– Prims
– Kruskal
– Dijkstra
• Algoritma Prim dan Algoritma Kruskal dapat
menyelesaikan permasalahan pencarian pohon
merentang minimum dengan tepat.
• Algoritma Prim lebih efisien dibanding
algoritma Kruskal saat graf yang diberikan
memiliki banyak sisi dengan simpul yang sedikit
(graf lengkap).
• Algoritma Kruskal lebih efisien dibanding
algoritma Prim saat graf yang diberikan
memiliki banyak simpul dengan sisi yang sedikit.
Algoritma Dijkstra
• (dinamai menurut penemunya, seorang ilmuwan
komputer, Edsger Dijkstra),
• adalah sebuah algoritma rakus (greedy algorithm)
yang dipakai dalam memecahkan permasalahan
jarak terpendek (shortest path problem) untuk
sebuah graf berarah (directed graph) dengan
bobot-bobot sisi (edge weights) yang bernilai taknegatif.
Shortest Path
• Pencarian lintasan/jalur terpendek.
• Menggunakan Algoritma Djikstra.
• Graph yang diacu adalah graph berbobot
(weigth-graph).
• Lintasan terpendek berarti minimalisasi dari
bobot pda suatu lintasan dalam graph.
Implementasi Shortest Path
• Contoh 1 :
– Simpul pada graph merepresentasikan kota
sedangkan sisi/edge menyatakan jalan yang
menghubungkan dua buah kota. Bobot dapat
merepresentasikan jarak atau waktu tempuh antar
dua buah kota. Maka persoalan lintasan
terpendek disini adalah menentukan jarak
terpendek dan waktu tersingkat.
Jenis Shortest Path
• Beberapa jenis persoalan lintasan terpendek :
1. lintasan terpendek antara dua buah simpul
tertentu.
2. lintasan terpendek antara semua pasangan simpul.
3. lintasan terpendek dari simpul tertentu ke semua
simpul yg lain.
4. lintasan terpendek antara dua buah simpul yang
melalui beberapa simpul tertentu.
Uraian Persoalan
• Diberikan graph berbobot G = (V,E) dan
sebuah simpul 1. Tentukan lintasan terpendek
dari 1 ke setiap simpul lainnya di G.
asumsi : semua bobot sisi/edge bernilai
positif.
Uraian Persoalan
Uraian Persoalan
• Lintasan terpendek dari simpul 1 ke semua
simpul lain diberikan pada tabel dibawah ini
(terurut mulai dari lintasan terpendek
pertama dst.)
Uraian Persoalan
• Dari tabel sebelumnya dapat dilihat bahwa
lintasan terpendek dari 1 ke 2 berarti juga
melalui lintasan terpendek dari 1 ke 3 dan dari
1 ke 4.
• Algoritma lintasan terpendek yang paling
terkenal adalah algoritma dijkstra.
Algoritma Djikstra
• Digunakan untuk mencari lintasan dari simpul
a ke semua simpul lain.
• Input : vertex a
• Output : lintasan terpendek dari vertex a ke
vertex lain pada graph.
Algoritma Djikstra
Algoritma Djikstra
• a(-,0)
• b(a,3) c(-,∞) d(a,7) e(-, ∞)
Algoritma Djikstra
• b(a,3)
• c(b,3+4) d(b,3+2) e(-, ∞)
Algoritma Djikstra
• d(b,5)
• c(b,7) e(d, 5 + 4)
Algoritma Dijkstra
• c(b,7)
• e(d, 9)
Minimum Spanning Trees (MST)
• Menghubungkan jaringan kabel listrik yang
menghubungkan sejumlah lokasi dengan panjang
kabel yang digunakan sependek-pendeknya.
• Perencanaan jaringan transportasi/distribusi barang.
• Terdapat sejumlah algoritma, namun akan dibahas
hanya dua algoritma yang paling terkenal: algoritma
Prim dan Algoritma Kruskal.
Minimum Spanning Trees (MST)
Minimum Spanning Trees (MST)
Algoritma Prims
• Algoritma dimulai dari suatu verteks awal
tertentu: bisa ditentukan oleh pemanggil atau
dipilih sebarang oleh algoritma. Misalnya
verteks awal tersebut adalah v.
Algoritma Prims
Algoritma Prims
• a(-,-)
• b(a,3) c(-, ∞) d (-, ∞) e(a,6) f(a,5)
Algoritma Prims
• b(a,3)
• c(b,1) d(-, ∞) e(a,6) f(b,4)
Algoritma Prims
• c(b,1)
• d(c,6) e(a,6) f(b,4)
Algoritma Prims
• f(b,4)
• d(f,5) e(f,2)
Algoritma Prims
• e(f,2)
• d(f,5)
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Algoritma Kruskal
Pustaka
• Mitchell Waite, “Data Structures & Algorithms in
Java”, SAMS, 2001