Post on 31-Jul-2015
Awalia Harfiani (5110100140)
Anita Susanti (5110100145)
Ika Astutik (5110100147)
Luluk Eko Mawati (5110100150)
AnggotaKelompok
KELASD
Djikstra Algorithm
PENGERTIAN
Algoritma Djikstra ditemukan oleh Edgsger Djikstra pada 1956 dan dipublikasikan pada tahun 1959. Algoritma ini merupakan algoritma pencari yang menyelesaikan permasalahan jarak terpendek (shortest path problem) untuk graf berarah dengan bobot-bobot sisi yang bernilai tidak negatif
Algoritma Dijkstra merupakan salah satu varian bentuk algoritma populer dalam pemecahan persoalan yang terkait dengan masalah optimasi. Sifatnya sederhana dan lempang (straightforward). Sesuai dengan arti greedy yang secara harafiah berarti rakus algoritma greedy ini hanya memikirkan solusi terbaik yang akan diambil pada setiap langkah tanpa memikirkan konsekuensi ke depan. Prinsipnya, ambillah apa yang bisa Anda dapatkan saat ini (take what you can get now!), dan keputusan yang telah diambil pada setiap langkah tidak akan bisa diubah kembali.
PENGERTIAN
KONSEP DASAR
Memecahkan permasalahan jarak terpendek (shortest path problem)
Algoritma rakus (greedy algorithm Digunakan untuk sebuah graf berarah
(directed graph) dengan bobot-bobot sisi (edge weights) yang bernilai tak-negatif
Terdapat vertex sebagai start dan ad vertex sebagai tujuan
Menggunakan metode spanning-tree
Melibatkan pemasangan label untuk setiap vertex
Pada setiap pembahasan, beberapa verteks mempunyai label sementara dan yang lain mempunyai label tetap.
KONSEP DASAR
LANGKAH-LANGKAH
Menentukan vertex mana yang merupakan start dan vertex mana yang merupakan finish.
Memberikan label permanen 0 pada vertex start
Memberi label temporer sesuai bobot sisi berarah yang berasal dari start untuk simpul yang bertetangga dan memberi label temporer ∞ pada vertex lainnya.
Memberikan label permanen pada vertex yang mempunyai label permanen terkecil.
Memperhatikan vertex terakhir yang diberi label permanen, semua simpul yang bertetangga dengan vertex ini diberi label dengan Min{(label permanen+jarak antara vertex tersebut dengan label permanen), label simpul sebelumnya}.
Jika vertex akhir sudah memiliki label permanen, maka selesai.
LANGKAH-LANGKAH
CONTOH PERMASALAHAN
9
Untuk bepergian dari satu lokasi ke lokasi lain, seringkali kita dihadapkan pada pemilihan alternatif rute perjalanan.
Rangkaian alternatif rute perjalanan dapat dipandang sebagai sebuah graph dengan setiap edge-nya memiliki bobot berupa jarak, waktu atau biaya. Graph semacam ini disebut weighted graph. Dan banyak permasalahan dalam dunia nyata yang dapat dimodelkan dengan weighted graph.
Isu permasalahan pada weighted graph umumnya berupa pencarian jarak/waktu/biaya minimal atau maksimal.
start finish
Cara 1 Cara 2 Cara 3
Cara 1
0*∞
∞
∞
∞∞
∞
∞
∞∞
∞
0*∞
∞
∞
∞
∞
∞
∞
1
2
8
Cara 1
0*∞
∞
∞
∞
∞
∞
∞
1*
2
8
Cara 1
0*∞
∞
∞
∞
∞
∞
1*
2
8
10
Cara 1
0*∞
∞
∞
∞
∞
∞
1*
2
8
10*
Cara 1
0*∞
∞∞
∞
1*
2
8
10* 11
13
Cara 1
0*∞
∞∞
∞
1*
2
8
10* 11*
13
Cara 1
0*∞
∞∞
1*
2
8
10* 11*
13 15
Cara 1
0*∞
∞∞
1*
2
8
10* 11*
13 15*
Cara 1
0*∞
∞
∞
∞∞
∞
∞
∞∞
∞
Cara 2
0*∞
∞
∞
∞
∞
∞
∞
1
2
8
Cara 2
0*∞
∞
∞
∞
∞
∞
∞
1
2*
8
Cara 2
0*∞
∞∞
∞
∞
∞
1
2*
8
3
Cara 2
0*∞
∞∞
∞
∞
∞
1
2*
8
3*
Cara 2
0*∞
∞∞
∞
1
2*
8
3*
12
5
Cara 2
0*∞
∞∞
∞
1
2*
8
3*
12
5*
Cara 2
0*∞
∞∞1
2*
8
3*
12
5*
14
Cara 2
0*∞
∞∞1
2*
8
3*
12
5*
14*
Cara 2
0*∞
∞
∞
∞∞
∞
∞
∞∞
∞
Cara 3
0*∞
∞
∞
∞
∞
∞
∞
1
2
8
Cara 3
0*∞
∞
∞
∞
∞
∞
∞
1*
2
8
Cara 3
0*∞
∞
∞
∞
∞
∞
1*
2
8
10
Cara 3
0*∞
∞
∞
∞
∞
∞
1*
2
8*
10
Cara 3
0*
∞
∞
∞
∞
1*
14
8*
10
9
13
Cara 3
0*
∞
∞
∞
∞
1*
14
8*
10
9*
13
Cara 3
0*
∞
∞
∞
1*
14
8*
13
9*
12
15
Cara 3
0*
∞
∞
∞
1*
14
8*
13
9*
12*
15
Cara 3
0*
∞
∞
1*
14
8*
13
9*
12*
21
14
Cara 3
0*
∞1*
14
8*
13
9*
12*
22
14*
23
Cara 3
0*
∞1*
14
8*
13
9*
12*
22*
14*
23
Cara 3
0*
1*
14
8*
13
9*
12*
22*
14*
23
23
Cara 3
0*
1*
14
8*
13
9*
12*
22*
14*
23
23*
Cara 3
0*
1*
14
8*
13
9*
12*
22*
14*
23
23*
Cara 3
0*
1*
14
8*
13
9*
12*
22*
14*
27*
23*
Cara 3
KESIMPULAN
• Di antara tiga cara yang dilakukan pada algoritma djikstra ini yang jarak terpendek ditemukan pada cara ke dua dimana hanya melewati 4 edge dan memiliki bobot paling sedikit yaitu 14,sehingga cara inilah yang disebut shortest path pada masalah ini.
KELEBIHAN
• Pada algoritma djikstra total biaya akan terus melakukan ekspansi sampai simpul tujuan tercapai.
• Algoritma Djikstra dijamin menemukan jalur terpendek asalkan tidak ada bobot negatif pada setiap sisi dalam graph pencariannya.
KEKURANGAN
• Dijkstra tidak dapat mengatasi nilai negatif sebagai solusi terpendek untuk mencapai node dan membuat path yang diambil semakin banyak.
• Algoritma Djikstra kemudian secara berulang memilih simpul-simpul terdekat dan menghitung total bobot semua sisi yang dilewati untuk mencapai simpul tujuan
KEKURANGAN
• Karena djikstra melakukan perulangan hingga menemukan jarak terpendek, maka waktu eksekusi algoritma djikstra mempunyai kompleksitas.
Bellman – Ford Algorithm
Hierarki
Algoritma Bellman-Ford menghitung satu sumber jalur terpendek dalam graf berarah berbobot . Bellman-Ford digunakan terutama untuk grafik dengan bobot tepi negatif. Algoritma ini dinamai oleh pengembangnya, Richard Bellman dan Lester Ford, Jr.
• Kita harus menghitung jalur-jalur terpendek ke semua node dan mengambil yang kita mau.
• Ada literatur yang menyatakan bahwa algoritma Bellman-Ford hanya digunakan jika ada sisi berbobot negatif, namun ada juga yang menyatakan bahwa algoritma ini juga bisa digunakan untuk edge berbobot positif meski tidak seefisien algoritma djikstra.
Konsep Dasar
• Memberi nilai jarak=0 pada node awal yang ingin dicari jalur terpendeknya ke node yang lain dan memberi nilai tak hingga untuk node-node lain.
• Tarik jalur node awal ke node-node yang berhubungan langsung dengan node tersebut.
• Melakukan proses relaxing(menghubungkan suatu node dengan node lainnya, mencari nilai jaraknya, jika nilai jarak baru lebih kecil dari nilai lama, maka yang digunakan adalah yang baru)
Langkah-Langkah
• Setelah proses relaxing selesai, nilai-nilai yang tertera di node-node adalah nilai jarak terpendek dari node awal.
• Memilih node mana yang ingin dihubungkan dengan node sebelumnya.
Langkah-Langkah
Contoh Implementasi
Aplikasi Permasalahan
Aplikasi Permasalahan
0* ∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
Aplikasi Permasalahan
0* ∞
∞
∞
∞
∞
∞
∞1
8
2
Aplikasi Permasalahan
0* ∞
∞
∞
∞
1
8
2
10
3
Aplikasi Permasalahan
0* ∞
∞
∞
∞
1
8
2
10
10
9
Aplikasi Permasalahan
0*
∞
∞
1
8
2
10
3
6
5
12
Lewat atas
Aplikasi Permasalahan
0*
1
8
2
10
3
6
5
12 14
12
Lewat atas
Aplikasi Permasalahan
0*
1
8
2
10
3
6
19
12 14
13
Lewat atas
Aplikasi Permasalahan
0*
1
8
2
10
3
6
5
12 14
12
Lewat atas
Aplikasi Permasalahan
0*
∞
∞
1
8
2
10
3
14
11
13
Lewat bawah
Aplikasi Permasalahan
0*
∞
∞
1
8
2
10
3
14
11
13
Lewat bawah
Aplikasi Permasalahan
0*
∞
1
8
2
10
3
14
11
12 15
Lewat bawah
Aplikasi Permasalahan
0*
∞
1
8
2
10
3
14
11
12 15
Lewat bawah
Aplikasi Permasalahan
0*
∞
1
8
2
10
3
14
11
12 14
Lewat bawah
• Algoritma bellman ford juga bisa digunakan untuk mencari shortest path dalam graf yang hanya memiliki posotife edges, akan tetapi tidak akan seefisien algortima djikstra.
• Algoritma Bellman-Ford dapat dipergunakan dalam Graph yang memiliki edge negatif, tidak seperti Algoritma Djikstra
Kelebihan & Kekurangan
• Algoritma Bellman-Ford kurang efisien jika digunakan dalam graph yang tidak mempunyai sisi negatif.
Kelebihan & Kekurangan
A* Search Algorithm
A* search algorithm adalah jaringan pencarian algoritma yang mengambil jarak terpendek dari node awal ke node saat ini ditambah jarak node saat ini ke tujuan.Cara penghitungan algoritma adalah
f(x)=g(x)+f(x)Dimana :
f(x)=jumlah g(x) dan h(x)
g(x)=jarak terpendek yang sebenarnya dari node awal ke node saat ini
h(x)=jarak node saat ini ke tujuan.
konsep
1. Dimulai dari node awal,mempertahankan
prioritas antrian node yang akan dilalui.Semakin
rendah f(x) untuk node x tertentu,maka
semakin tinggi prioritasnya.
2. Pada setiap langkah algoritma,node dengan nilai
terendah dihapus dari antrian maka f dan h dari
node tetangga diperbarui dan node ini
ditambahkan ke antrian.Algoritma berlanjut
sampai node goal (tujuan ).
langkah penyelesaian
Implementasi Soal
Menentukan posisi awal dan tujuan serta masing masing node ke tujuan (h(x))
h(x)=10,5 h(x)=9,5 h(x)=9
h(x)=9 h(x)=8 h(x)=2)
h(x)=12 h(x)=4,5 h(x)=4
1
Cek nilai f(x) untuk posisi awal dengan tetangganya kemudian ambil nilai f(x) yang terkecil
h(x)=10,5 h(x)=9,5 h(x)=9
h(x)=9 h(x)=8 h(x)=2)
h(x)=12 h(x)=4,5 h(x)=4
awaltujuan
2
kelebihan
• Tidak perlu memeriksa node yang berada
jauh dari node saat ini, jadi dalam
pengecekan pemilihan node hanya
membutuhkan node tetangga saja.
kekurangan
• Memerlukan operasi matematika yang
cukup rumit untuk memperoleh node yang
dituju (node dengan f(x) yang paling
rendah)
Floyd – Warshall’sAlgorithm
• Suatu algoritma yang efisien untuk menemukan semua-pasangan jalur terpendek pada grafik. Artinya, dijamin untuk menemukan jalan terpendek antara setiap pasang simpul di dalam grafik.
• Algoritma ini juga dapat digunakan untuk mendeteksi keberadaan negatif siklus grafik-memiliki satu jika pada akhir algoritma, jarak dari simpul v ke dirinya sendiri adalah negatif.
definisi
Algoritma Floyd-Warshall menghitung jalur
terpendek dari setiap node terhadap setiap
node yang lain dari sebuah grafik dalam O
(V3)waktu.
Algoritma ini akan menelusuri semua jalur
yang mungkin dan memilih jalur yang dengan
nilai jarak terkecil.
konsep
Untuk setiap node, tentukan shortest path ke
semua node yang lain.
Untuk setiap shortest path ke sebuah node
tertentu, tentukan solusi optimal.
Node yang paling banyak memiliki solusi
optimal adalah node dengan tingkat closeness
tertinggi.
Algoritma ini bekerja dengan iteratif memilih
vertek di grafik sebagai titik arah.
langkah penyelesaian
Jika dibuat dalam pseudocode, maka algoritma
Floyd-Washall akan bekerja dalam tahapan
sebagai berikut:
Floyd-Warshall (W)
1 n rows[W]
2 D(0) W
3 for k 1 to n
4 do for i 1 to n
5 do for j1 to n
6 do dij(k) min ( dij(k-1), dik(k-1)+dkj(k-1) )
7 return D(n)
Tidak ada nilai loop yang bernilai negatif,
akan tetapai edge dengan nilai negatif
diperbolehkan.
Penyelesaian biasanya dalam bentuk
matriks nxn
ketentuan
shortestPath(i,j,k) =
min(shortestPath(i,j,k1),
shortestPath(i,k,k-1) +
shortestPath(k,j,k-1))
rumus baku
Implementasi Soal
0 2 8 1 999 999 999 999 999 999 999
2 0 6 999 1 999 999 999 999 999 999
8 6 0 7 7 1 2 999 999 999 999
1 999 7 0 999 999 9 999 999 999 999
999 1 7 999 0 3 999 2 9 999 999
999 999 1 999 3 0 4 999 6 999 999
999 999 2 9 999 4 0 999 3 1 999
999 999 999 999 2 999 999 0 7 999 9
999 999 999 999 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(0)
0 2 8 1 999 999 999 999 999 999 999
2 0 6 3 1 999 999 999 999 999 999
8 6 0 7 7 1 2 999 999 999 999
1 3 7 0 999 999 9 999 999 999 999
999 1 7 999 0 3 999 2 9 999 999
999 999 1 999 3 0 4 999 6 999 999
999 999 2 9 999 4 0 999 3 1 999
999 999 999 999 2 999 999 0 7 999 9
999 999 999 999 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(1)
0 2 8 1 999 999 999 999 999 999 999
2 0 6 3 1 999 999 999 999 999 999
8 6 0 7 7 1 2 999 999 999 999
1 3 7 0 999 999 9 999 999 999 999
999 1 7 999 0 3 999 2 9 999 999
999 999 1 999 3 0 4 999 6 999 999
999 999 2 9 999 4 0 999 3 1 999
999 999 999 999 2 999 999 0 7 999 9
999 999 999 999 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(2)
0 2 8 1 999 999 999 999 999 999 999
2 0 6 3 1 999 999 999 999 999 999
8 6 0 7 7 1 2 999 999 999 999
1 3 7 0 999 999 9 999 999 999 999
999 1 7 999 0 3 999 2 9 999 999
999 999 1 999 3 0 4 999 6 999 999
999 999 2 9 999 4 0 999 3 1 999
999 999 999 999 2 999 999 0 7 999 9
999 999 999 999 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(3)
0 2 8 1 3 9 10 999 999 999 999
2 0 6 3 1 7 8 999 999 999 999
8 6 0 7 7 1 2 999 999 999 999
1 3 7 0 4 8 9 999 999 999 999
5 1 7 4 0 3 9 2 9 999 999
9 7 1 8 3 0 3 999 6 999 999
10 8 2 9 9 3 0 999 3 1 999
999 999 999 999 2 999 999 0 7 999 9
999 999 999 999 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(4)
0 2 8 1 3 6 10 5 12 999 999
2 0 6 3 1 4 8 3 10 999 999
8 6 0 7 7 1 2 9 16 999 999
1 3 7 0 4 7 9 6 13 999 999
5 1 7 4 0 3 9 2 9 999 999
8 4 1 7 3 0 3 5 6 999 999
10 8 2 9 9 3 0 11 3 1 999
7 3 9 6 2 5 11 0 7 999 9
14 10 16 13 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(5)
0 2 8 1 3 6 10 5 12 999 999
2 0 6 3 1 4 8 3 10 999 999
8 6 0 7 7 1 2 9 16 999 999
1 3 7 0 4 7 9 6 13 999 999
5 1 7 4 0 3 9 2 9 999 999
8 4 1 7 3 0 3 5 6 999 999
10 8 2 9 9 3 0 11 3 1 999
7 3 9 6 2 5 11 0 7 999 9
14 10 16 13 9 6 3 7 0 1 2
999 999 999 999 999 999 1 999 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(6)
0 2 7 1 3 6 9 5 12 10 999
2 0 5 3 1 4 7 3 10 8 999
8 5 0 7 4 1 2 6 7 3 999
1 3 7 0 4 7 9 6 13 10 999
5 1 4 4 0 3 6 2 9 7 999
8 4 1 7 3 0 3 5 6 4 999
10 7 2 9 6 3 0 8 9 1 999
7 3 6 6 2 5 8 0 7 9 9
13 10 5 12 9 6 3 7 0 1 2
11 8 3 10 7 4 1 9 1 0 4
999 999 999 999 999 999 999 9 2 4 0
D(7)
0 2 7 1 3 6 9 5 12 10 14
2 0 5 3 1 4 7 3 10 8 12
8 5 0 7 4 1 2 6 7 3 15
1 3 7 0 4 7 9 6 13 10 15
5 1 4 4 0 3 6 2 9 7 11
8 4 1 7 3 0 3 5 6 4 14
10 7 2 9 6 3 0 8 9 1 17
7 3 6 6 2 5 8 0 7 9 9
13 10 5 12 9 6 3 7 0 1 2
11 8 3 10 7 4 1 9 1 0 4
16 12 15 15 11 14 17 9 2 4 0
D(8)
0 2 7 1 3 6 9 5 12 10 14
2 0 5 3 1 4 7 3 10 8 12
8 5 0 7 4 1 2 6 7 3 15
1 3 7 0 4 7 9 6 13 10 15
5 1 4 4 0 3 6 2 9 7 11
8 4 1 7 3 0 3 5 6 4 14
10 7 2 9 6 3 0 8 9 1 17
7 3 6 6 2 5 8 0 7 9 9
13 10 5 12 9 6 3 7 0 1 2
11 8 3 10 7 4 1 9 1 0 4
16 12 15 15 11 14 17 9 2 4 0
D(9)
0 2 7 1 3 6 9 5 12 10 14
2 0 5 3 1 4 7 3 10 8 12
8 5 0 7 4 1 2 6 7 3 15
1 3 7 0 4 7 9 6 13 10 15
5 1 4 4 0 3 6 2 9 7 11
8 4 1 7 3 0 3 5 6 4 14
10 7 2 9 6 3 0 8 9 1 17
7 3 6 6 2 5 8 0 7 9 9
13 10 5 12 9 6 3 7 0 1 2
11 8 3 10 7 4 1 9 1 0 4
16 12 15 15 11 14 17 9 2 4 0
D(10)
0 2 7 1 3 6 9 5 11 10 13
2 0 5 3 1 4 7 3 9 8 11
8 5 0 7 4 1 2 6 4 3 6
1 3 7 0 4 7 9 6 11 10 13
5 1 4 4 0 3 6 2 8 7 10
8 4 1 7 3 0 3 5 5 4 7
10 7 2 9 6 3 0 8 6 1 4
7 3 6 6 2 5 8 0 7 8 9
12 9 4 11 8 5 2 7 0 1 2
11 8 3 10 7 4 1 8 1 0 3
14 11 6 13 10 7 4 9 2 3 0
D(11)
• D(11) merupakan hasil akhir
yang menunjukkan panjang
jalur terpendek dari setiap
kombinasi verteks.
Floyd-Warshall lebih efektif digunakan
untuk menentukan panjang lintasan
terpendek dari semua kemungkinan
pasangan verteks sumber dan tujuan
dengan sekali jalan
Algoritma unntuk digunakan pada code
cukup mudah (dengan nested loop
bertumpuk tiga)
Running time (V^3) yang lebih efektif jika
digunakan pada dense graph.
kelebihan
Kurang efektif jika digunakan pada sparse
graph (graph dengan sedikit edge),
karena running time-nya tidak berkurang
walaupun jumlah edge berkurang.
Hanya bisa digunakan untuk graph yang
memiliki arah (karena diperlukan untuk
penyusunan matriks).
Running time lambat
kekurangan
JOHNSON ALGORITHM
dipaparkan pertama kali oleh Donald B. Johnson pada tahun
1977.
Algoritma Johnson merupakan algoritma untuk
menyelesaikan ‘Shortest Path Problem’ dengan orientasi
mencari jarak terdekat sekaligus bobot paling sedikit.
Merupakan perpaduan antara Algoritma Bellman Ford dan
Algoritma Dijkstra.
konsep (ide dasar)
1. Tambahkan sebuah vertex baru sebagai sumber, misalkan p.2. Hubungkan p dengan tiap-tiap vertex lain dan isi bobot masing-masing edge yang
terbentuk dengan nilai 0.3. Hitung Shortest Path menggunakan algoritma Bellman Ford*, dari vertex p ke
semua vertex yang terhubung dengan vertex p. Langkah ini berfungsi untuk memeriksa beban yang bernilai negatif dari graph.
4. Temukan h(v) yaitu beban terkecil suatu path dari vertex p (sumber) ke vertex(v) menggunakan algoritma Bellman (h(v)=(s,v) )
5. Kemudian dilakukan pembobotan ulang setiap edge, menggunakan nilai dari vertex h(v). Pembobotan ulang ini dapat dinotasikan sebagai W(u,v) = w(u,v) + h(u) - h(v)
6. Sehingga pada akhirnya, dijalankan algoritma Dijkstra untuk menemukan (s,v) .7. Tempatkan bobot terkecil yang dihasilkan dari masing-masing perhitungan ke
vertex-vertex yang lain.8. Pembobotan ulang menggunakan nilai dari vertex h(v) sebagai bobot akhir.
Sehingga untuk masing-masing vertex dapat dinyatakan dengan D|u||v| = δ(u,v) + h(v) - h(u)
langkah-langkah penyelesaian
Implementasi Soal
P
0
0
0
0
0 0 0 0
0
0
0
1IMPLEMENTASI SOAL
2IMPLEMENTASI SOAL
h(1) = 0
h(2) = 0
h(3) = 0
h(4) = 0
h(5) = 0
h(6) = 0
h(7) = 0
h(8) = 0
h(9) = 0
h(10) = 0
h(11) = 0
Digunakan Algoritma Bellman untuk memeriksa beban
negatif. Dikarenakan tidak terdapat beban negatif, maka
dicari jarak terdekat dari vertex p ke vertex lain yaitu bobot
edge buatan.
P
0
0
0
0
0 0 0 0
00
0
3W(u,v) = w(u,v) + h(u) - h(v)W(1,2) = w(1,2) + h(1) - h (2) = 2 + 0 – 0 = 2W(1,3) = w(1,3) + h(1) - h (3) = 8 + 0 – 0 = 8W(1,4) = w(1,4) + h(1) - h (4) = 1 + 0 – 0 = 1W(3,2) = w(3,2) + h(3) - h (2) = 6 + 0 – 0 = 6W(4,3) = w(4,3) + h(4) - h (3) = 7 + 0 – 0 = 7W(2,5) = w(2,5) + h(2) - h (5) = 1 + 0 – 0 = 1W(3,5) = w(3,5) + h(3) - h (5) = 5 + 0 – 0 = 5W(3,6) = w(3,6) + h(3) - h (6) = 1 + 0 – 0 = 1W(3,7) = w(3,7) + h(3) - h (7) = 2 + 0 – 0 = 2W(4,7) = w(4,7) + h(4) - h (7) = 9 + 0 – 0 = 9W(6,5) = w(6,5) + h(6) - h (5) = 3 + 0 – 0 = 3W(7,6) = w(7,6) + h(7) - h (6) = 4 + 0 – 0 = 4W(5,8) = w(5,8) + h(5) - h (8) = 2 + 0 – 0 = 2W(5,9) = w(5,9) + h(5) - h (9) = 9 + 0 – 0 = 9W(6,9) = w(6,9) + h(6) - h (9) = 6 + 0 – 0 = 6W(7,9) = w(7,9) + h(7) - h (9) = 3 + 0 – 0 = 3W(7,10) = w(7,10) + h(7) - h (10) = 1 + 0 – 0 = 1W(9,8) = w(9,8) + h(9) - h (8) = 7 + 0 – 0 = 7W(10,9) = w(10,9) + h(10) - h (9) = 1 + 0 – 0 = 1W(8,11) = w(8,11) + h(8) - h (11) = 9 + 0 – 0 = 9W(9,11) = w(9,11) + h(9) - h (11) = 2 + 0 – 0 = 2W(10,11) = w(10,11) + h(10) - h (11) = 4 + 0 – 0 = 4
Pembobotan Ulang
W(u,v) = w(u,v) + h(u) - h(v)
sehingga menjadi,
(u,v)
IMPLEMENTASI SOAL
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (2) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 1
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (2+1) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 1
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (2+1+2) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 1
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (2+1+2+9) + 0 - 0= 14
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 1
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (8) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 2
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (8+1) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 2
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (8+1+6) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 2
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (8+1+6+2) + 0 - 0= 17
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 2
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (1) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 3
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (1+9) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 3
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (1+9+1) + 0 - 0
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 3
4Penghitungan dengan Algoritma Dijkstra dari v1 ke v11
IMPLEMENTASI SOAL
(1,11) = (1,11) + h(11) - h(1)= (1+9+1+4) + 0 - 0= 15
D|u||v| = δ(u,v) + h(v) - h(u)
jalur 3
Jarak yang dihasilkan merupakan path terdekat dengan bobot
paling kecil.
Karena digunakan algoritma Bellman untuk mendeteksi bobot
negatif, sehingga dapat dilakukan pembobotan ulang yang
menyebabkan bobot edge dapat menyusut.
Penggunaan algoritma Dijkstra semakin membuat path yang
akan dilewati mempunyai akumulasi bobot yang paling kecil.
kelebihan
Proses yang dilakukan terlau lama, contohnya harus membuat
vertex baru sebagai sumber terlebih dahulu.
Dan penghitungan dalam pembobotan ulang.
kekurangan
PERTURBATION ALGORITHM
Mencari jarak terdekat dan bobot terkecil, dengan
memilih lintasan lokal terdekat.
Dari semua edge yang melekat pada sebuah
vertex, maka akan selalu dipilih edge yang
berbobot rendah.
Berlaku untuk bobot negatif maupun positif.
konsep (ide dasar)
1. Ditentukan vertex mana yang sebagai sumber dan
vertex mana sebagai finish.
2. Dimulai dari memilih edge yang berbobot paling
sedikit dari semua edge yang melekat pada vertex
sumber.
3. Proses diatas akan terus berulang, hingga
mencapai finish. (setelah berpindah ke vertex
baru, dilakukan seleksi bobot lagi dan berulang)
langkah-langkahpenyelesaian
Implementasi Soal
1IMPLEMENTASI SOAL
start
finish
2IMPLEMENTASI SOAL
start finish
jarak = 1 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1 + 3 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1 + 3 + 2 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1 + 3 + 2 + 7 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1 + 3 + 2 + 7 + 1 +
2IMPLEMENTASI SOAL
start finish
jarak = 1 + 7 + 1 + 3 + 2 + 7 + 1 + 4 = 26
Dalam beberapa graph sederhana, algoritma ini
dapat memberikan jarak terpendek karena
setiap edge yang dilewati merupakan edge yang
berbobot paling sedikit, sehingga akan
mempunyai bobot akumulasi paing minimum.
kelebihan
Dari keenam yang dibahas, Algoritma Perturbation
merupakan algoritma yang paling beresiko, karena
pengambilan edge selalu yang berbobot sedikit,
walaupun pada awalnya terlihat sedikit, namun
algoritma ini tidak memperhitungkan edge-edge
selanjutnya.
Sehingga sering bobot akumulasi bukan
merupakan bobot paling minimum.
kekurangan
sekian