Download - Tgo kelas d_tugas01_140-145-147-150 - copy

Transcript
Page 1: Tgo kelas d_tugas01_140-145-147-150 - copy

Awalia Harfiani (5110100140)

Anita Susanti (5110100145)

Ika Astutik (5110100147)

Luluk Eko Mawati (5110100150)

AnggotaKelompok

KELASD

Page 2: Tgo kelas d_tugas01_140-145-147-150 - copy

Djikstra Algorithm

Page 3: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 4: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 5: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 6: Tgo kelas d_tugas01_140-145-147-150 - copy

Melibatkan pemasangan label untuk setiap vertex

Pada setiap pembahasan, beberapa verteks mempunyai label sementara dan yang lain mempunyai label tetap.

KONSEP DASAR

Page 7: Tgo kelas d_tugas01_140-145-147-150 - copy

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.

Page 8: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 9: Tgo kelas d_tugas01_140-145-147-150 - copy

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.

Page 10: Tgo kelas d_tugas01_140-145-147-150 - copy

start finish

Cara 1 Cara 2 Cara 3

Page 11: Tgo kelas d_tugas01_140-145-147-150 - copy

Cara 1

0*∞

∞∞

∞∞

Page 12: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1

2

8

Cara 1

Page 13: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8

Cara 1

Page 14: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8

10

Cara 1

Page 15: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8

10*

Cara 1

Page 16: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1*

2

8

10* 11

13

Cara 1

Page 17: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1*

2

8

10* 11*

13

Cara 1

Page 18: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1*

2

8

10* 11*

13 15

Cara 1

Page 19: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1*

2

8

10* 11*

13 15*

Cara 1

Page 20: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

∞∞

Cara 2

Page 21: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1

2

8

Cara 2

Page 22: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1

2*

8

Cara 2

Page 23: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1

2*

8

3

Cara 2

Page 24: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1

2*

8

3*

Cara 2

Page 25: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1

2*

8

3*

12

5

Cara 2

Page 26: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

1

2*

8

3*

12

5*

Cara 2

Page 27: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞1

2*

8

3*

12

5*

14

Cara 2

Page 28: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞1

2*

8

3*

12

5*

14*

Cara 2

Page 29: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

∞∞

∞∞

Cara 3

Page 30: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1

2

8

Cara 3

Page 31: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8

Cara 3

Page 32: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8

10

Cara 3

Page 33: Tgo kelas d_tugas01_140-145-147-150 - copy

0*∞

1*

2

8*

10

Cara 3

Page 34: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

10

9

13

Cara 3

Page 35: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

10

9*

13

Cara 3

Page 36: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12

15

Cara 3

Page 37: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

15

Cara 3

Page 38: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

21

14

Cara 3

Page 39: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

∞1*

14

8*

13

9*

12*

22

14*

23

Cara 3

Page 40: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

∞1*

14

8*

13

9*

12*

22*

14*

23

Cara 3

Page 41: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

22*

14*

23

23

Cara 3

Page 42: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

22*

14*

23

23*

Cara 3

Page 43: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

22*

14*

23

23*

Cara 3

Page 44: Tgo kelas d_tugas01_140-145-147-150 - copy

0*

1*

14

8*

13

9*

12*

22*

14*

27*

23*

Cara 3

Page 45: Tgo kelas d_tugas01_140-145-147-150 - copy

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.

Page 46: Tgo kelas d_tugas01_140-145-147-150 - copy

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.

Page 47: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 48: Tgo kelas d_tugas01_140-145-147-150 - copy

KEKURANGAN

• Karena djikstra melakukan perulangan hingga menemukan jarak terpendek, maka waktu eksekusi algoritma djikstra mempunyai kompleksitas.

Page 49: Tgo kelas d_tugas01_140-145-147-150 - copy

Bellman – Ford Algorithm

Page 50: Tgo kelas d_tugas01_140-145-147-150 - copy

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.

Page 51: Tgo kelas d_tugas01_140-145-147-150 - copy

• 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

Page 52: Tgo kelas d_tugas01_140-145-147-150 - copy

• 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

Page 53: Tgo kelas d_tugas01_140-145-147-150 - copy

• 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

Page 54: Tgo kelas d_tugas01_140-145-147-150 - copy

Contoh Implementasi

Page 55: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

Page 56: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0* ∞

Page 57: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0* ∞

∞1

8

2

Page 58: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0* ∞

1

8

2

10

3

Page 59: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0* ∞

1

8

2

10

10

9

Page 60: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

6

5

12

Lewat atas

Page 61: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

6

5

12 14

12

Lewat atas

Page 62: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

6

19

12 14

13

Lewat atas

Page 63: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

6

5

12 14

12

Lewat atas

Page 64: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

14

11

13

Lewat bawah

Page 65: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

14

11

13

Lewat bawah

Page 66: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

14

11

12 15

Lewat bawah

Page 67: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

14

11

12 15

Lewat bawah

Page 68: Tgo kelas d_tugas01_140-145-147-150 - copy

Aplikasi Permasalahan

0*

1

8

2

10

3

14

11

12 14

Lewat bawah

Page 69: Tgo kelas d_tugas01_140-145-147-150 - copy

• 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

Page 70: Tgo kelas d_tugas01_140-145-147-150 - copy

• Algoritma Bellman-Ford kurang efisien jika digunakan dalam graph yang tidak mempunyai sisi negatif.

Kelebihan & Kekurangan

Page 71: Tgo kelas d_tugas01_140-145-147-150 - copy

A* Search Algorithm

Page 72: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 73: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 74: Tgo kelas d_tugas01_140-145-147-150 - copy

Implementasi Soal

Page 75: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 76: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 77: Tgo kelas d_tugas01_140-145-147-150 - copy

kelebihan

• Tidak perlu memeriksa node yang berada

jauh dari node saat ini, jadi dalam

pengecekan pemilihan node hanya

membutuhkan node tetangga saja.

Page 78: Tgo kelas d_tugas01_140-145-147-150 - copy

kekurangan

• Memerlukan operasi matematika yang

cukup rumit untuk memperoleh node yang

dituju (node dengan f(x) yang paling

rendah)

Page 79: Tgo kelas d_tugas01_140-145-147-150 - copy

Floyd – Warshall’sAlgorithm

Page 80: Tgo kelas d_tugas01_140-145-147-150 - copy

• 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

Page 81: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 82: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 83: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 84: Tgo kelas d_tugas01_140-145-147-150 - copy

Tidak ada nilai loop yang bernilai negatif,

akan tetapai edge dengan nilai negatif

diperbolehkan.

Penyelesaian biasanya dalam bentuk

matriks nxn

ketentuan

Page 85: Tgo kelas d_tugas01_140-145-147-150 - copy

shortestPath(i,j,k) =

min(shortestPath(i,j,k1),

shortestPath(i,k,k-1) +

shortestPath(k,j,k-1))

rumus baku

Page 86: Tgo kelas d_tugas01_140-145-147-150 - copy

Implementasi Soal

Page 87: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 88: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 89: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 90: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 91: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 92: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 93: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 94: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 95: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 96: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 97: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 98: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 99: Tgo kelas d_tugas01_140-145-147-150 - copy

• D(11) merupakan hasil akhir

yang menunjukkan panjang

jalur terpendek dari setiap

kombinasi verteks.

Page 100: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 101: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 102: Tgo kelas d_tugas01_140-145-147-150 - copy

JOHNSON ALGORITHM

Page 103: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 104: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 105: Tgo kelas d_tugas01_140-145-147-150 - copy

Implementasi Soal

Page 106: Tgo kelas d_tugas01_140-145-147-150 - copy

P

0

0

0

0

0 0 0 0

0

0

0

1IMPLEMENTASI SOAL

Page 107: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 108: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 109: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 110: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 111: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 112: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 113: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 114: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 115: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 116: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 117: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 118: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 119: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 120: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 121: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 122: Tgo kelas d_tugas01_140-145-147-150 - copy

Proses yang dilakukan terlau lama, contohnya harus membuat

vertex baru sebagai sumber terlebih dahulu.

Dan penghitungan dalam pembobotan ulang.

kekurangan

Page 123: Tgo kelas d_tugas01_140-145-147-150 - copy

PERTURBATION ALGORITHM

Page 124: Tgo kelas d_tugas01_140-145-147-150 - copy

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)

Page 125: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 126: Tgo kelas d_tugas01_140-145-147-150 - copy

Implementasi Soal

Page 127: Tgo kelas d_tugas01_140-145-147-150 - copy

1IMPLEMENTASI SOAL

start

finish

Page 128: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 +

Page 129: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 +

Page 130: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1

Page 131: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1 + 3 +

Page 132: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1 + 3 + 2 +

Page 133: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1 + 3 + 2 + 7 +

Page 134: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1 + 3 + 2 + 7 + 1 +

Page 135: Tgo kelas d_tugas01_140-145-147-150 - copy

2IMPLEMENTASI SOAL

start finish

jarak = 1 + 7 + 1 + 3 + 2 + 7 + 1 + 4 = 26

Page 136: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 137: Tgo kelas d_tugas01_140-145-147-150 - copy

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

Page 138: Tgo kelas d_tugas01_140-145-147-150 - copy

sekian