Tgo kelas d_tugas01_140-145-147-150 - copy

Post on 31-Jul-2015

94 views 1 download

Transcript of Tgo kelas d_tugas01_140-145-147-150 - copy

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