struktur data - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... ·...

41
STRUKTUR DATA Struktur Data Graph

Upload: others

Post on 27-Jan-2020

44 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

STRUKTUR DATA

Struktur Data Graph

Page 2: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

GRAPH

• Graph adalah kumpulan dari simpul dan busur yang secara matematis dinyatakan sebagai :

G = (V, E)Dimana

G = GraphV = Simpul atau Vertex, atau Node, atau TitikE = Busur atau Edge, atau arc

Page 3: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Contoh graph :

B

A C

D E

Undirected graph

vertex

edge

e1 e3e4

e7e5e2

e6

v1

v2

v4 v5

v3

V terdiri dari v1, v2, …, v5

E terdiri dari e1, e2, … , e7

Page 4: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

• Sebuah graph mungkin hanya terdiri dari satu simpul

• Sebuah graph belum tentu semua simpulnya terhubung dengan busur

• Sebuah graph mungkin mempunyai simpul yang tak terhubung dengan simpul yang lain

• Sebuah graph mungkin semua simpulnya saling berhubungan

Page 5: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Graph Berarah dan Graph Tak Berarah :

B

A C

D E

B

A C

D E

Directed graph Undirected graph

e1 e3

e4

e7e5e2

e6

v1

v2

v4 v5

v3v1

v2

v3

v5v4

e1

e2

e3e4

e5

e6

e7

e8 e9

e10

Dapat dilihat dari bentuk busur yang artinya urutan penyebutan pasangan 2 simpul.

Page 6: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

• Graph tak berarah (undirected graph atau non-directed graph) :• Urutan simpul dalam sebuah busur tidak

dipentingkan. Mis busur e1 dapat disebut busur AB atau BA

• Graph berarah (directed graph) :• Urutan simpul mempunyai arti. Mis busur AB

adalah e1 sedangkan busur BA adalah e8.

Page 7: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

• Graph Berbobot (Weighted Graph)• Jika setiap busur mempunyai nilai yang

menyatakan hubungan antara 2 buah simpul, maka busur tersebut dinyatakan memiliki bobot.

• Bobot sebuah busur dapat menyatakan panjang sebuah jalan dari 2 buah titik, jumlah rata-rata kendaraan perhari yang melalui sebuah jalan, dll.

Page 8: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Graph Berbobot :

B

A C

D E

B

A C

D E

Directed graph Undirected graph

5 3

12

684

3

v1

v2

v4 v5

v3v1

v2

v3

v5v4

5

e2

312

8

3

6

4 7

10

Panjang busur (atau bobot) mungkin tidak digambarkan secara panjang yang proposional dengan bobotnya. Misal bobot 5 digambarkan lebih panjang dari 7.

Page 9: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Istilah pada graph

Incident Jika e merupakan busur dengan simpul-simpulnya adalah v dan w yang ditulis e=(v,w), maka v dan w disebut “terletak” pada e, dan e disebut incident dengan v dan w.

Degree (derajat), indegree dan outdegreeDegree sebuah simpul adalah jumlah busur yang incident dengan simpul tersebut.

Page 10: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Indegree sebuah simpul pada graph berarah adalah jumlah busur yang kepalanya incident dengan simpul tersebut, atau jumlah busur yang “masuk” atau menuju simpul tersebut.

Outdegree sebuah simpul pada graph berarah adalah jumlah busur yang ekornya incident dengan simpul tersebut, atau jumlah busur yang “keluar” atau berasal dari simpul tersebut.

Page 11: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

3. Adjacent Pada graph tidah berarah, 2 buah simpul disebut adjacent bila ada busur yang menghubungkan kedua simpul tersebut. Simpul v dan w disebut adjacent.

Pada graph berarah, simpul v disebut adjacent dengan simpul w bila ada busur dari w ke v.

we

v

v

e w

Page 12: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

4. Successor dan PredecessorPada graph berarah, bila simpul v adjacent dengan simpul w, maka simpul v adalah successor simpul w, dan simpul w adalah predecessor dari simpul v.

5. PathSebuah path adalah serangkaian simpul-simpul yang berbeda, yang adjacent secara berturut-turut dari simpul satu ke simpul berikutnya.

1

43

2

4

2

4

2

4

21

3

1

3

1

3

Page 13: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Representasi Graph dalam bentuk matrix• Adjacency Matrix Graph tak berarah

B

A C

D E

Graph

0 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 10 1 1 1 0

A B

A

0

B

C

1 2 43C D E

D

E

0

1

2

4

3

Urut abjad

Degree simpul : 3

Page 14: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Representasi Graph dalam bentuk matrix• Adjacency Matrix Graph berarah

Graph

0 1 0 1 01 0 1 0 10 1 0 1 10 0 1 0 10 0 0 0 0

A B

A

0

B

C

1 2 43C D E

D

E

0

1

2

4

3

B

A C

D E

kedari

out

in

Page 15: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

• Adjency List graph tak berarah• Digambarkan sebagai sebuah simpul yang

memiliki 2 pointer. • Simpul vertex : Simpul edge :

Representasi Graph dalam bentuk Linked List

info info

Menunjuk ke simpul vertex berikutnya,

dalam untaian simpul yang ada.

Menunjuk ke simpul edge pertama Menunjuk ke

simpul edge berikutnya, bila

masih ada.Menunjuk ke simpul vertex tujuan yang

berhubungan dengan simpul vertex asal.

left right left right

Page 16: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

• Define struct untuk sebuah simpul yang dapat digunakan sebagai vertex maupun edge.

typedef struct tipeS {

tipeS *Left;

int INFO;

tipeS *Right;

};

tipeS *FIRST, *PVertex, *PEdge;

Page 17: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Contoh : untuk vertex A, memiliki 2 edge yang terhubung yaitu e1 dan e2.

A

C

D

B

E

e2

Graph

e1B

A C

D E

e1e3

e4

e7e5e2

e6

Urut abjad

Page 18: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Gambar di atas dapat disusun dengan lebih sederhana, sbb :

A

C

D

B

E

D

A

B

A

B

C E

D E

C

C D

B

A C

D E

Graph

B

E

Page 19: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Adjency List graph berarah

A

C

D

B

E

D

A

B

C

E

C

B

E

B

A C

D E

Page 20: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Graph berarah dan berbobot

B

A C

D E

53

2

14

12

6

7

12

0 5 0 2 06 0 3 0 00 0 0 0 120 0 12 0 70 14 0 0 0

A

A

0

B

C

1 2 43

D

E

0

1

2

4

3

B C D E

Perhatikan pemilihan nilai 0.

Page 21: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Penyelesaian kasus Graph halaman sebelumnya :

• Define simpul untuk vertex dan edge• Mengidentifikasi Simpul pertama sebagai

vertex yang pertama• Tambahkan vertex sisanya• Tambahkan edge pada masing-masing

vertex yang telah terbentuk• Tampilkan representasi graph berikut

bobotnya

Page 22: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)
Page 23: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)
Page 24: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)
Page 25: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Hasil :

Page 26: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

ALGORITMA DIJKSTRA

• Algoritme Dijkstra, (sesuai penemunya Edsger Dijkstra), adalah sebuah algoritma yang dipakai dalam memecahkan permasalahan jarak terpendek (shortest path problem) untuk sebuah graf berarah (directed graph).

• Algoritma ini dioublikasikan pada tahun 1959 jurnal Numerische Mathematik yang berjudul “A Note on Two Problems in Connexion with Graphs” dan dianggap sebagai algoritma greedy.

• Permasalahan rute terpendek dari sebuah titik ke akhir titik lain adalah sebuah masalah klasik optimasi yang banyak digunakan untuk menguji sebuah algoritma yang diusulkan. Permasalahan rute terpendek dianggap cukup baik untuk mewakili masalah optimisasi, karena permasalahannya mudah dimengerti (hanya menjumlahkan seluruh edge yang dilalui) namun memiliki banyak pilihan solusi.

• Menurut Andrew Goldberg peneliti Microsoft Research Silicon Valley, mengatakan ada banyak alasan mengapa peneliti terus mempelajari masalah pencarian jalan terpendek. “Jalan terpendek adalah masalah optimasi yang relevan untuk berbagai macam aplikasi, seperti jaringan routing, game, desain sirkuit, dan pemetaan”.

Page 27: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

ContohSebagai contoh hitunglah Jarak terdekat dari V1 ke V7 pada gambar berikut ini.

Page 28: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

jawaban

Dengan demikian jarak terpendek dari V1 ke V7 adalah 16dengan jalur V1->V2->V3->V5->V6->V7

Page 29: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

GRAPH vs TREE

• Sebuah Graph memiliki ciri berbeda dengan Tree• Dalam Graph, edge bebas menghubungkan node-node mana pun.• Dalam Tree, satu node hanya boleh terhubung ke satu parent dan

beberapa child, tidak boleh ke beberapa parent.• Dalam sebuah Graph bisa dirunut jalur edge yang membentuk jalur

putaran dari 1 node kembali ke node semula; ini tidak boleh terjadi dalam Tree

[buku utama, bab 6.5]

Page 30: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

SPANNING TREE

• Spanning Tree adalah sebuah Tree yang dibuat darisebuah Graph dengan menghilangkan beberapa edge-nya. Tree ini harus mengandung semua node yangdimiliki Graph.

[buku utama, ilustrasi 6.3]

Page 31: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

MINIMUM SPANNING TREE

• Jika Weighted Graph diubah menjadi Spanning Tree, tiap kombinasi Tree yang dapat dibuat memiliki total weight yang berbeda-beda.

• Problem Minimum Spanning Tree (MST) berusaha mencari Tree seperti apa yang bisa dibuat dari sebuah Weighted Graph dengan total weight seminimal mungkin.

Page 32: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

MST DENGAN METODE GREEDY

• Algoritma Prim-Dijkstra• Ditemukan oleh Robert C. Prim di tahun 1957

dan oleh Edsger Dijkstra di tahun 1959.• Algoritma Kruskal

• Ditemukan oleh Joseph Kruskal di tahun 1956.

Page 33: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

ALGORITMA PRIM-DIJKSTRA

• Langkah-langkah algoritma Prim-Dijkstra :1. Tentukan node awal, asumsikan semua edge berwarna hitam2. Dari semua edge yang terhubung ke node awal tersebut, pilih

edge dengan bobot terkecil3. Tandai edge yang dipilih dengan warna hijau4. Apabila ada edge yang kedua node-nya sudah terkena jalur

hijau, tandai edge tersebut dengan warna merah (karena jika dipilih akan membentuk jalur putaran à melanggar syarat tree)

5. Tentukan node-node yang berada di jalur hijau sebagai node aktif

6. Bandingkan semua edge yang terhubung ke node aktif (hanya edge hitam), pilih yang bobotnya terkecil

7. Tandai edge yang dipilih dengan warna hijau8. Ulangi dari langkah ke-4 hingga semua node terlewati jalur

hijau9. Ketika semua node telah dilewati jalur hijau, maka jalur hijau

yang terbentuk adalah MST yang dicari

Page 34: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

ALGORITMA KRUSKAL

• Langkah-langkah algoritma Kruskal :1. Asumsikan semua edge berwarna hitam2. Bandingkan bobot semua edge hitam, pilih edge dengan bobot

terkecil3. Tandai edge yang dipilih dengan warna hijau4. Apabila ada edge yang kedua node-nya sudah terkena jalur

hijau, tandai edge tersebut dengan warna merah (karena jika dipilih akan membentuk jalur putaran à melanggar syarat tree)

5. Ulangi dari langkah ke-2 hingga semua node terlewati jalur hijau

6. Ketika semua node telah dilewati jalur hijau, maka jalur hijau yang terbentuk adalah MST yang dicari

Page 35: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

CONTOH PROBLEM MST

• Pelajari langkah-langkah algoritma pada :• bab 6.5.1 (algoritma Prim-Dijkstra)• bab 6.5.2 (algoritma Kruskal)

Page 36: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

SHORTEST PATH

• Dalam sebuah Graph yang setiap edge yang memiliki weight (bobot), jarak terpendek (shortest path) antara 2 node dapat dicari dengan Metode Greedy

• Misal kita hendak mencari jalur terpendek (shortest path) dari node A ke node F, bagaimana cara menghitungnya dengan Metode Greedy?

[buku utama, bab 6.7]

Page 37: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

METODE GREEDY SHORTEST PATH

• Langkah-langkah Metode Greedy1.Berangkat dari node awal2.Pilih edge yang memiliki bobot terkecil dari

node tersebut3.Maju ke node yang dituju4.Ulangi dari langkah ke-2 hingga mencapai

node tujuan

Page 38: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

CONTOH PROBLEM SHORTEST PATH

[buku utama, bab 6.7]

Page 39: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

SOLUSI OPTIMAL?

• Benarkah solusi yang didaptkan dari Metode Greedy untuk Shortest Path problem adalah benar-benar solusi terbaik?

• Coba bandingkan solusi berikut :

• Metode Greedy menghasilkan solusi yang cukup baik, tapi bukan yang paling baik

• Diskusikan mengapa bisa begitu?

Page 40: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

LATIHAN• Buatlah Minimum Spanning Tree menggunakan

algoritma Prim-Dijkstra dan algoritma Kruskal

• Carilah Shortest Path dari node A ke node F dengan Metode Greedy!

• Diskusikan mengapa kadang Metode Greedy gagal menghasilkan solusi terbaik!

Page 41: STRUKTUR DATA - rizkimuliono.blog.uma.ac.idrizkimuliono.blog.uma.ac.id/wp-content/uploads/... · dengan Metode Greedy • Misal kita hendak mencari jalur terpendek (shortest path)

Bina Nusantara

REVIEW

• Apa yang sudah dipahami?• Apa yang akan dibahas selanjutnya?