makalah graph

28
RESUME “ GRAPH ” Disusun oleh : Nama : Roji Muhidin NIM : 1202080 Mata Kuliah : Logika Matematika Dosen : Ridha Endarani, S.pd STMIK MUHAMMADIYAH BANTEN 2013

Upload: rozygynaga-xavierra-lummina

Post on 19-Jun-2015

4.442 views

Category:

Design


1 download

DESCRIPTION

Makalah graph

TRANSCRIPT

Page 1: Makalah graph

RESUME

“ GRAPH ”

Disusun oleh :Nama : Roji MuhidinNIM : 1202080Mata Kuliah : Logika MatematikaDosen : Ridha Endarani, S.pd

STMIK MUHAMMADIYAH BANTEN

2013

Page 2: Makalah graph

i

KATA PENGANTAR

Puji Syukur khadirat Allah Yang Maha Kuasa karena atas Rahmat dan

Hidayah-Nyalah kami dapat menyelesaikan Tugas Tengah Semester ini.

Resume ini merupkan salah satu bagian dalam Tugas kami yang berjudul

“GRAPH”.

Resume ini berisi tentang Pembelajaran mengenai “GRAPH” di dalam

Struktur Data. Tentunya kami sangat berharap Makalah ini dapat berguna bagi

siapapun yang membacanya.

Masih banyak kekurangan dalam resume ini . Selain itu dalam

penyusunan tugas atau materi ini, tidak sedikit hambatan yang penulis hadapi.

Namun penulis menyadari bahwa kelancaran dalam penyusunan materi ini tidak

lain berkat bantuan, dorongan dan bimbingan orang tua, sehingga kendala-

kendala yang penulis hadapi teratasi

Lebak, 16 Desemberber 2013

Penyusun

Page 3: Makalah graph

ii

DAFTAR ISI

KATA PENGANTAR .......................................................................................... i

DAFTAR ISI ........................................................................................................ ii

I. PENDAHULUAN.............................................................................................. 1

II. TEORI GRAPH ............................................................................................... 3

A. Definisi Graph .......................................................................................... 3

B. Istilah dalam Graph .................................................................................. 6

C. Jenis – jenis Graph .................................................................................. 7

D. Konektivitas Tiap Jenis Graph..................................................................9

E. Metode Pencarian Vertex.........................................................................10

a. Depth First Search (DFS).....................................................................11

b. Breadth First Search (BFS) ..................................................................11

F. Shortest Path ........................................................................................... 14

a. Graph Berbobot (Weighted Graph) ...................................................... 14

b. Algoritma Dijkstra’s ..............................................................................15

c. Dinamic Programming..........................................................................15

G. Minimum Spanning Tree ..........................................................................18

H. Algoritma Menentukan Minimum Spanning Tree (MST) .......................... 19

III. GRAPH PADA JAVA ..................................................................................... 22

IV. KESIMPULAN ............................................................................................... 24

DAFTAR PUSTAKA............................................................................................ 25

Page 4: Makalah graph

1

I. PENDAHULUAN

Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan,

pengorganisasian dan pengaturan data di dalam media penyimpanan komputer sehingga

data tersebut dapat digunakan secara efisien. Dalam tehnik pemrograman, struktur data

berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh

pengguna (user) ataupun kolom yang hanya digunakan untuk keperluan pemrograman

yang tiadak tampak oleh pengguna.

Graph merupakan struktur data yang paling umum. Jika struktur linear

memungkinkan pendefinisian keterhubungan sikuensial antara entitas data, struktur data

tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph

memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.

Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah

memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian. Contoh:

informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini kota x bisa

berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk memeriksa

keterhubungan dan jarak tidak langsung antara dua kota dapat diperoleh berdasarkan data

keterhubungan-keterhubungan langsung dari kota-kota lainnya yang memperantarainya.

Representasi data dengan struktur data linear ataupun hirarkis pada masalah ini

masih bisa digunakan namun akan membutuhkan pencarian-pencarian yang kurang

efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga

pencariannya langsung (straightforward) dilakukan pada strukturnya sendiri.

Graf adalah salah satu jenis struktur data yang terdiri dari titik (vertex) dan garis

(edge), dimana dalam graf tersebut, vertex - vertex yang ada dihubungkan oleh edge,

hingga menjadi suatu kesatuan yang disebut graf. Sebagai contoh dari pemodelan graf

adalah peta kota kota, dimana kota disini sebagai vertex dan jalur yang

menghubungkannya berlaku sebagai edge.

Agar lebih jelas perhatikan gambar dibawah ini :

Page 5: Makalah graph

2

Dalam gambar tersebut, terdapat beberapa kota yang berada dipulau jawa dimana

kota - kota tersebut dihubungkan oleh beberapa jalur jalur yang ada. Untuk contoh diatas

kita bisa menganggap bawah kota-kota yang ada merupakan vertex, dan jalur-jalur yang

menghubungkan kota-kota tersebut sebagai edge. Sehingga secara keseluruhan peta

diatas dapat dibuat pemodelannya sebagai sebuah graf.

Ada terdapat beberapa jenis graf yang bisa kita gunakan, yaitu beberapa

diantaranya adalah sebagai berikut :

• Graf Berarah : adalah graf yang edge-nya memiliki arah, sebagai contoh edge AB

menghubungkan vertex A ke B, dimana hubungan vertex B ke A, harus diperoleh dari

edge lain, yaitu edge BA, dan jika edge BA tidak ada, maka vertex B ke A tidak memiliki

hubungan, meski vertex A ke B memiliki hubungan

• Graf Tak Berarah : adalah graf yang edge-nya tidak memiliki arah, sehingga jika edge

AB menghubungkan vertex A ke B, maka secara otomatis juga menghubungkan vertex B

ke A.

• Graf Berbobot : adalah suatu graf dimana edge dari graf tersebut memiliki bobot atau

nilai tertentu.

• Graf Tidak Berbobot : adalah suatu graf dimana edge dari graf tersebut tidak memiliki

bobot atau nilai. Untuk merepresentasikannya dalam pemrograman komputer, graf dapat

disusun dari LinkedList yang berada dalam LinkedList.

Page 6: Makalah graph

3

II. TEORI GRAPH

A. Definisi Graph

Suatu graph didefinisikan oleh himpunan verteks dan himpunan sisi (edge).

Verteks menyatakan entitas-entitas data dan sisi menyatakan keterhubungan antara

verteks. Biasanya untuk suatu graph G digunakan notasi matematis.

G = (V, E)

Dimana : G = Graph

V = Simpul atau Vertex, atau Node, atau Titik

E = Busur atau Edge, atau arc

V adalah himpunan verteks dan E himpunan sisi yang terdefinisi antara pasangan-

pasangan verteks. Sebuah sisi antara verteks x dan y ditulis {x, y}. Suatu graph H = (V1,

E1) disebut subgraph dari graph G jika V1 adalah himpunan bagian dari V dan E1

himpunan bagian dari E.

Cara pendefinisian lain untuk graph adalah dengan menggunakan himpunan

keterhubungan langsung Vx. Pada setiap verteks x terdefinisi Vx sebagai himpunan dari

verteks-verteks yang adjacent dari x. Secara formal:

Vx = {y | (x,y) -> E}

Dalam digraph didefinisikan juga terminologi-terminologi berikut ini. Predesesor

dari suatu verteks x (ditulis Pred(x)) adalah himpunan semua verteks yang adjacent ke x.

Suksesor dari verteks x (ditulis Succ(x)) adalah himpunan semua verteks yang adjacent

dari x, yaitu adjacenct set di atas.

Struktur data yang berbentuk network/jaringan, hubungan antar elemen adalah

many-to-many. Contoh dari graph adalah informasi topologi jaringan dan keterhubungan

antar kota-kota. Keterhubungan dan jarak tidak langsung antara dua kota sama dengan

data keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Penerapan

struktur data linear atau hirarkis pada masalah graph dapat dilakukan tetapi kurang

Page 7: Makalah graph

4

efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga

pencariannya langsung (straight forward) dilakukan pada strukturnya sendiri.

1. Struktur Data Linear = keterhubungan sekuensial antara entitas data

2. Struktur Data Tree = keterhubungan hirarkis

3. Struktur Data Graph = keterhubungan tak terbatas antara entitas data.

Representasi Graph dalam Bentuk Matrik

a. Graph Tak Berarah

Graf tersebut dapat direpresentasikan dalam sebuah matrik 5x5 , dimana baris dan

kolom di matriks tersebut menunjukan vertex yang ada.

Page 8: Makalah graph

5

b. Graph Berarah

Dalam matrik diatas dapat kita lihat bahwa kotak yang berisi angka satu

menunjukan bahwa dalam dua vertex tersebut terdapat edge yang menghubungkannya.

Dan jika dalam kotak terdapat angka nol, maka hal tersebut menandakan tidak ada edge

yang mengubungkan secara langsung dua vertex tersebut.

Untuk representasi dalam pemorgraman komputer, graf tersebut dapat

digambarkan seperti dibawah ini :

Page 9: Makalah graph

6

B. Istilah Dalam Graph

1. 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.

2. Degree

Didalam Graph ada yang disebut dengan Degree, Degree mempuyai 3

jenis antara lain :

Degree dari suatu verteks x dalam undigraph adalah jumlah busur yang

incident dengan simpul tersebut.

Indegree dari suatu verteks x dalam digraph adalah jumlah busur yang

kepalanya incident dengan simpul tersebut, atau jumlah busur yang

“masuk” atau menuju simpul tersebut..

Outdegree dari suatu verteks x dalam digraph adalah jumlah busur yang

ekornya incident dengan simpul tersebut, atau jumlah busur yang “keluar”

atau berasal dari simpul tersebut.

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.

Page 10: Makalah graph

7

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

dari w ke v.

4. Successor dan Predecessor

Pada 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. Path

Sebuah path adalah serangkaian simpul-simpul berbeda yang adjacent

secara berturut-turut dari simpul satu ke simpul berikutnya.

C. Jenis - Jenis Graph

1. Directed Graph (Digraph)

Jika sisi-sisi graph hanya berlaku satu arah. Misalnya : {x,y} yaitu arah x ke y,

bukan dari y ke x, x disebut origin dan y disebut terminus. Secara notasi sisi digraph

ditulis sebagai vektor (x, y).

Contoh Digraph G = {V, E} :

V = {A, B, C, D, E, F, G, H, I,J, K, L, M}

E = {(A,B), (A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I), (D,E), (D,F),

(D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M), (J,K), (J,M), (L,K), (L,M)}.

Page 11: Makalah graph

8

2. Graph Tak Berarah (Undirected Graph atau Undigraph)

Setiap sisi {x, y} berlaku pada kedua arah: baik x ke y maupun y ke x. Secara

grafis sisi pada undigraph tidak memiliki mata panah dan secara notasional menggunakan

kurung kurawal.

Contoh Undigraph G = {V, E}

V = {A, B, C, D, E, F, G, H, I,J, K, L, M}

E = { {A,B},{A,C}, {A,D}, {A,F}, {B,C}, {B,H}, {C,E}, {C,G}, {C,H}, {C,I}, {D,E},

{D,F}, {D,G}, {D,K}, {D,L}, {E,F}, {G,I}, {G,K}, {H,I}, {I,J}, {I,M}, {J,K}, {J,M},

{L,K}, {L,M}}.

Page 12: Makalah graph

9

Khusus graph, undigraph bisa sebagai digraph (panah di kedua ujung edge

berlawanan) Struktur data linear maupun hirarkis adalah juga graph. Node-node pada

struktur linear ataupun hirarkis adalah verteks-verteks dalam pengertian graph dengan

sisi-sisinya menyusun node-node tersebut secara linear atau hirarkis.

Struktur data linear adalah juga tree dengan pencabangan pada setiap node hanya

satu atau tidak ada. Linear 1-way linked list (digraph), linear 2- way linked list

(undigraph).

D. Konektivitas Tiap Jenis Graph

a. Konektivitas pada Undigraph

Adjacency: Dua verteks x dan y yang berlainan disebut berhubungan langsung

(adjacent) jika terdapat sisi {x, y} dalam E.

Path: Sederetan verteks yang mana setiap verteks adjacent dengan verteks yang tepat

berada disebelahnya.

Panjang dari path: jumlah sisi yang dilalui path.

Siklus: suatu path dengan panjang lebih dari satu yang dimulai dan berakhir pada suatu

verteks yang sama.

Siklus sederhana: dalan undigraph, siklus yang terbentuk pada tiga atau lebih verteks-

verteks yang berlainan yang mana tidak ada verteks yang dikunjungi lebih dari satu

kali kecuali verteks awal/akhir.

Dua verteks x dan y yang berbeda dalam suatu undigraph disebut berkoneksi

(connected) apabila jika terdapat path yang menghubungkannya.

Himpunan bagian verteks S disebut terkoneksi (connected) apabila dari setiap verteks

x dalam S terdapat path ke setiap verteks y (y bukan x) dalam S.

Suatu komponen terkoneksi (connected components) adalah subgraph (bagian dari

graph) yang berisikan satu himpunan bagian verteks yang berkoneksi.

Suatu undigraph dapat terbagi atas beberapa komponen yang terkoneksi; jika terdapat

lebih dari satu komponen terkoneksi maka tidak terdapat path dari suatu verteks dalam

satu komponen verteks di komponen lainnya.

Page 13: Makalah graph

10

Pohon bebas (free tree): suatu undigraph yang hanya terdapat satu komponen

terkoneksi serta tidak memiliki siklus sederhana.

b. Konektivitas pada Digraph

Terminologi di atas berlaku juga pada Digraph kecuali dalam digraph harus

dikaitkan dengan arah tertentu karena pada arah yang sebaliknya belum tentu terdefinisi.

Adjacency ke / dari: Jika terdapat sisi (x,y) maka dalam digraph dikatakan bahwa x

"adjacent ke" y atau y "adjacent dari" x. Demikian pula jika terdapat path dari x ke y

maka belum tentu ada path dari y ke x Jadi dalam digraph keterkoneksian didefinisikan

lebih lanjut lagi sebagai berikut.

Terkoneksi dengan kuat: Himpunan bagian verteks S dikatakan terkoneksi dengan

kuat (strongly connected) bila setiap pasangan verteks berbeda x dan y dalam S, x

berkoneksi dengan y dan y berkoneksi dengan x (dpl., ada path dari x ke y dan

sebaliknya dari y ke x).

Terkoneksi dengan Lemah: Himpunan bagian verteks S dikatakan terkoneksi dengan

lemah (weakly connected) bila setiap pasangan verteks berbeda x dan y dalam S, salah

satu: x berkoneksi dengan y (atau y berkoneksi dengan x) dan tidak kebalikan arahnya

(dpl., hanya terdefinisi satu path: dari x ke y atau sebaliknya dari y ke x).

E. Metode Pencarian Vertex

Pencarian vertex adalah proses umum dalam graph. Terdapat 2 metoda pencarian,

yakni Depth First Search (DFS) dan Breadth First Search (BFS).

a. Depth First Search (DFS)

Pencarian dengan metode ini dilakukan dari node awal secara mendalam hingga

yang paling akhir (dead-end) atau sampai ditemukan. Dengan kata lain, simpul cabang

atau anak yang terlebih dahulu dikunjungi.

Page 14: Makalah graph

11

Proses pencarian dilakukan dengan mengunjungi cabang terlebih dahulu hingga

tiba di simpul terakhir. Jika tujuan yang diinginkan belum tercapai maka pencarian

dilanjutkan ke cabang sebelumnya, turun ke bawah jika memang masih ada

cabangnya. Begitu seterusnya hingga diperoleh tujuan akhir (goal). Depth First Search,

memiliki kelebihan diantaranya adalah cepat mencapai kedalaman ruang pencarian. Jika

diketahui bahwa lintasan solusi permasalahan akan panjang maka Depth First Search

tidak akan memboroskan waktu untuk melakukan sejumlah besar keadaan dangkal

dalam permasalahan graf. Depth First Search jauh lebih efisien untuk ruang pencarian

dengan banyak cabang karena tidak perlu mengeksekusi semua simpul pada suatu

level tertentu pada daftar open. Selain itu, Depth First Search memerlukan memori

yang relatif kecil karena banyak node pada lintasan yang aktif saja yang Selain

kelebihan, Depth First Search juga memiliki kelemahan di antaranya adalah

memungkinkan tidak ditemukannya tujuan yang diharapkan dan hanya akan

mendapatkan satu solusi pada setiap pencarian.

b. Breadth First Search (BFS)

Prosedur Breadth First Search (BFS) merupakan pencarian yang dilakukan

dengan mengunjungi tiap-tiap node secara sistematis pada setiap level hingga keadaan

tujuan (goal state) ditemukan. Atau dengan kata lain, penulusuran yang dilakukan

adalah dengan mengunjungi tiap-tiap node pada level yang sama hingga ditemukan goal

state-nya.

Page 15: Makalah graph

12

Implementasi algoritma BFS :

Pengimplementasian BFS dapat ditelusuri dengan menggunakan daftar (list), open, dan

closed, untuk menelusuri gerakan pencarian di dalam ruang keadaan. Prosedur untuk

Breadth First Search dapat dituliskan sebagai berikut:

Pada diatas, state 21 merupakan tujuannya (goal) sehingga bila ditelusuri menggunakan

prosedur Breadth First Search, diperoleh:

1) Open = [1]; closed = [ ].

2) Open = [2, 3, 4]; closed = [1].

3) Open = [3, 4, 5, 6]; closd = [2, 1].

4) Open = [4, 5, 6, 7, 8]; closed = [3, 2, 1].

5) Open = [5, 6, 7, 8, 9, 10]; closed = [4, 3, 2, 1].

6) Open = [6, 7, 8, 9, 10, 11, 12]; closed = [5, 4, 3, 2, 1].

7) Open = [7, 8, 9, 10, 11, 12, 13] (karena 12 telah di-open);

Page 16: Makalah graph

13

closed = [6, 5, 4, 3, 2, 1].

8) Open = [8, 9, 10, 11, 12, 13, 14]; closed = [7, 6, 5, 4, 3, 2, 1].

9) Dan seterusnya sampai state 21 diperoleh atau open = [ ].

Ada beberapa keuntungan menggunakan algoritma Breadth First Search ini,

diantaranya adalah tidak akan menemui jalan buntu dan jika ada satu solusi maka

Breadth First Search akan menemukannya, dan jika ada lebih dari satu solusi maka

solusi minimum akan ditemukan.

Namun ada tiga persoalan utama berkenaan dengan Breadth First Search ini

yaitu :

1) Membutuhkan memori yang lebih besar, karena menyimpan semua node dalam

satu pohon.

2) Membutuhkan sejumlah besar pekerjaan, khususnya jika lintasan solusi

terpendek cukup panjang, karena jumlah node yang perlu diperiksa bertambah

secara eksponensial terhadap panjang lintasan.

3) Tidak relevannya operator akan menambah jumlah node yang harus diperiksa.

Oleh karena proses Breadth First Search mengamati node di setiap level

graf sebelum bergerak menuju ruang yang lebih dalam maka mula-mula semua

keadaan akan dicapai lewat lintasan yang terpendek dari keadaan awal. Oleh sebab

itu, proses ini menjamin ditemukannya lintasan terpendek dari keadaan awal ke

keadaan tujuan (akhir). Lebih jauh karena mula-mula semua keadaan ditemukan

melalui lintasan terpendek sehingga setiap keadaan yang ditemui pada kali kedua

didapati pada sepanjang sebuah lintasan yang sama atau lebih panjang. Kemudian, jika

tidak ada kesempatan ditemukannya keadaan yang identik pada sepanjang lintasan

yang lebih baik maka algoritma akan menghapusnya

Page 17: Makalah graph

14

F. Shortest Path

Pencarian shortest path (lintasan terpendek) adalah masalah umum dalam suatu

weighted, connected graph. Misal : Pencarian jaringan jalan raya yang menghubungkan

kota-kota disuatu wilayah.

1. Lintasan terpendek yag menghubungkan antara dua kota berlainan tertentu

(Single-source Single-destination Shortest Path Problems)

2. Semua lintasan terpendek masing-masing dari suatu kota ke setiap kota lainnya

(Single-source Shortest Path problems)

3. Semua lintasan terpendek masing-masing antara tiap kemungkinan pasang kota

yang berbeda (All-pairs Shortest Path Problems)

Untuk memecahkan masing-masing dari masalah-masalah tersebut terdapat sejumlah

solusi.

Dalam beberapa masalah graph lain, suatu graph dapat memiliki bobot negatif dan

kasus ini dipecahkan oleh algoritma Bellman-Ford. Yang akan dibahas di sini adalah

algoritma Dijkstra yaitu mencari lintasan terpendek dari suatu verteks asal tertentu vs ke

setiap verteks lainnya.

a. Graph berbobot (weighted graph)

Apabila sisi-sisi pada graph disertai juga dengan suatu (atau beberapa) harga yang

menyatakan secara unik kondisi keterhubungan tersebut maka graph tersebut disebut

graph berbobot. Biasanya dalam masalah-masalah graph bobot tersebut merupakan

"harga" dari keterhubungan antar vertex. Pengertian "harga" ini menggeneralisasikan

banyak aspek, biaya ekonomis dari proses/aktifitas, jarak geografis/tempuh, waktu

tempuh, tingkat kesulitan, dan lain sebagainya.

Dalam beberapa masalah lain bisa juga bobot tersebut memiliki pengertian "laba"

yang berarti kebalikan dari "biaya" di atas. Dalam pembahasan algoritma-algoritma graph

nanti pengertian bobot akan menggunakan pengertian biaya sehingga apabila

diaplikasikan pada masalah yang berpengertian laba maka kuantitas-kuantitas terkait

Page 18: Makalah graph

15

adalah kebalikannnya. Misalnya mencari jarak tempuh minimum digantikan dengan

mencari laba maksimum.

b. Algoritma Dijkstra’s

Algoritma Dijkstra's :

1. Menyelesaikan problem single-source shortest-path ketika semua edge memiliki

bobot tidak negatif.

2. Algoritma greedy mirip ke algoritma Prim's.

3. Algoritma di awali pada vertex sumber s, kemudian berkembang membentuk

sebuah tree T, pada akhirnya periode semua vertex dijangkau dari S. Vertex di

tambah ke T sesuai urutan

Misalnya :

Pertama S, kemudian vertex yang tepat ke S, kemudian yang tepat berikutnya dan

seterusnya.

c. Dynamic Programming

Terdiri dari sederetan tahapan keputusan. Pada setiap tahapan berlaku prinsip

optimality (apapun keadaan awal dan keputusan yang diambil, keputusan berikutnya

harus memberikan hasil yang optimal dengan melihat hasil keputusan sebelumnya.

Misalnya : Multistage Graph

Page 19: Makalah graph

16

Dimana : Cost (i,j) = Min(C(j,l) + Cost(i+1,l)}

Dengan : C(j,l) = Bobot edge j dan l

l = Elemen Vi+1 Dan <j,l> eemen E

i=stage ke-I dan j = node dalam V

Proses dimulai dari k-2, dimana k adalah banyak stage.

Perhatikan contoh untuk menentukan biaya termurah dari 1 hingga 12.

Diketahui graph dengan stage sebagai berikut :

Maka langkah-langkah yang dilakukan adalah :

K=5, sehingga dimulai dari S3

Cost(3,6) = Min{6+Cost(4,9); 5+Cost(4,10)} = Min{6+4;5+2} = 7

Cost(3,7) = Min{4+Cost(4,9); 3+Cost(4,10)} = Min{4+4;3+2} = 5

Cost(3,8) = Min{5+Cost(4,10); 6+Cost(4,11)} = Min(5+2;6+5} = 7

Cost(2,2) = Min{4+Cost(3,6);2+Cost(3,7);1+Cost(3,8)}

= Min{4+7;2+5;1+7} = 7

Cost(2,3) = Min{2+Cost(3,6); 7+Cost(3,7)} = Min(2+7; 7+5) = 9

Cost(2,4) = Min{11+Cost(3,8)} = 18

Cost(2,5) = Min{11+Cost(3,7); 8+Cost(3,8)} = Min(11+5;8+7} = 15

Cost(1,1) = Min{9+Cost(2,2);7+Cost(2,3);3+Cost(2,4),2+Cost(2,5)}

= Min{9+7;7+9;3+18;2+15} = 16

Page 20: Makalah graph

17

Shorthest Path menjadi :

1 -> 3 -> 6-> 10-> 12 Atau 1 -> 2-> 7-> 10-> 12

Jika ada dua atau lebih shorthest path maka total biaya harus sama.

Shortest Path Pertama adalah :

Shortest Path Kedua adalah :

Page 21: Makalah graph

18

G. Minimum Spanning Tree

Definisi Pohon rentangan atau spanning tree dari suatu connected graph

didefinisikan sebagai free-tree yang terbentuk dari subset sisi-sisi serta menghubungkan

setiap verteks dalam graph tersebut. Minimum Spanning Tree (MST) adalah pohon

rentangan dengan total bobot dari sisi-sisinya adalah minimal. Dalam penelusuran vertex

tidak diperkenankan terbentuk siklus (cycle).

Diketahui sebuah graph tak berarah dan tak berbobot sebagai berikut :

Kemungkinan Spanning Tree :

Bila jalur (edge) mempunyai biaya (cost) maka yang dicari adalah minimum

cost spanning tree.

Page 22: Makalah graph

19

H. Algoritma Menentukan Minimum Spanning Tree (MST)

Dua algoritma populer untuk menentukan minimum spanning tree (MST) adalah

Kruskal Algorithm dan Prim’s Algorithm.

1. Algoritma Kruskal

Algoritma ini lebih sederhana jika dilihat dari konsepnya namun lebih sulit dalam

implementasinya. Idenya adalah mendapatkan satu demi satu sisi mulai dari yang

berbobot terkecil untuk membentuk tree, suatu sisi walaupun berbobot kecil tidak akan

diambil jika membentuk siklik dengan sisi yang sudah termasuk dalam tree. Yang

menjadi masalah dalam implementasinya adalah keperluan adanya pemeriksaan kondisi

siklik tersebut.Salah satu pemecahaannya adalah dengan subsetting yaitu pembentukan

subset-subset yang disjoint dan secara bertahap dilakukan penggabungan atas tiap dua

subset yang berhubungan dengan suatu sisi dengan bobot terpendek. Algoritma

lengkapnya:

Tahap pertama, jika dalam V terdapat n verteks maka diinisialisasi n buah subset

yang disjoint, masing-masing berisi satu verteks, sebagai subset-subset awal.

Tahap berikutnya, urutkan sisi-sisi dengan bobot yang terkecil hingga terbesar.

Mulai dari sisi dengan bobot terkecil hingga terbesar lakukan dalam iterasi: jika

sisi tsb. menghubungkan dua vertex dalam satu subset (berarti membentuk siklik)

maka skip sisi tersebut dan periksa sisi berikutnya jika tidak (berarti membentuk

siklik) maka kedua subset dari verteks-verteks yang bersangkutan digabungkan

menjadi satu subset yang lebih besar. Iterasi akan berlangsung hingga semua sisi

terproses.

MST_KRUSKAL (G)

{ For setiap vertex v dalam V[G] Do

{ set S(v) ← {v} }

Inisialisasi priority queue Q yang berisi semua edge dari G,

gunakan bobot sebagai keys.

Page 23: Makalah graph

20

A ← { } // A berisi edge dari MST

While A lebih kecil dari pada n-1 edge Do

{ set S(v) berisi v dan S(u) berisi u }

IF S(v) != S(u) Then

{ Tambahkan edge (u, v) ke A

Merge S(v) dan S(u) menjadi satu set

}

Return A

}

2. Algoritma Prim

Algoritma dimulai dari suatu verteks awal tertentu dan bisa ditentukan oleh

pemanggil atau dipilih sembarang oleh algoritma. Misalnya verteks awal tersebut adalah

v. Pada setiap iterasi terdapat kondisi di mana himpunan vertex V terbagi dalam dua:

W yaitu himpunan verteks yang sudah dievaluasi sebagai node di dalam pohon,

serta (V-W) yaitu himpunan verteks yang belum dievaluasi.

Di awal algoritma W diinisialisasi berisi verteks awal v. Selanjutnya, di dalam iterasinya:

Pada setiap adjacency dari tiap verteks dalam W dengan verteks dalam (V-W)

dicari sisi dengan panjang minimal. setelah diperoleh, sisi tersebut ditandai

sebagai sisi yang membentuk tree dan verteks adjacent sisi tersebut dalam (VW)

dipindahkan ke W (menjadi anggota W).

Jika sisi tersebut tidak ada maka proses selesai.

Dari contoh di atas misalnya dilakukan pencarian mulai dari verteks A Maka

algoritma ini menghasilkan tahapan-tahapan iterasi pencarian sbb.:

Page 24: Makalah graph

21

MST_PRIM (G, w, v)

{ Q ← V[G]

for setiap u dalam Q do key [u] ← ∞

key [r] ← 0

π[r] ← NIl

while queue tidak kosong do

{ u ← EXTRACT_MIN (Q)

for setiap vertex v dalam Adj[u] do

{ if v ada dalam Q dan w(u, v) < key [v] then

{ π[v] ← w(u, v)

key [v] ← w(u, v)

}

}

}

Page 25: Makalah graph

22

III. GRAPH PADA JAVA

Pada Project ini, kita lakukan pengaplikasian dari teori Graph pada program Java.

Software yang kita gunakan adalah Eclipse.

Didalam Project ini terdapat 5 package Java. Dan yang akan kita bahas disini

adalah Package GRAPH_BASIC. Package GRAPH_BASIC, berisi 5 file berextensi .java

yang saling berhubungan satu sama lain. Untuk detail File bisa di lihat di gambar di

bawah ini.

Untuk melakukan Logika Aplikasi Graph terdapat pada File Main.java

Page 26: Makalah graph

23

Tampilan Scriptnya seperti gambar di bawah ini.

Dapat Kita lihat dari gambar diatas, logika Graph di mulai dari penambahan Vertex/Node,dengan memanggil fungsi “AddVertex” pada file Graph.java. Setelah vertex tercipta,dilakukan penambahan Edge/Busur dan terakhir memanggil fungsi untuk menghasilkanoutput.

Untuk Output yang di hasilkan bisa di lihat gambar di bawah ini.

Page 27: Makalah graph

24

IV. KESIMPULAN

Mengenal Graph :

Terdiri dari node dan terdiri dari link (busur)

Node disebut vertex dan Link disebut edge

Informasi penting dalam graph adalah koneksi antar vertex

Pada undirected graph, tidak terdapat directions (arah), Edge dari v0 ke v1 adalah

sama dengan edge dari v1 ke v0

Jika sebuah masalah dapat direpresentasikan ke dalam bentuk kgraph maka solusi

dari masalah tersebut bisa dicari dengan bantuan graph

Setiap vertex mewakili sebuah kondisi (state) dan edge mewakili transisi antar

state

Analogi Graph dalam Kehidupan Sehari-Hari

Graph dalam kehidupan sehari-hari dapat dianalogikan sebagai suatu jaringan satu

dengan jaringan lainnya yang saling terhubung. Misal seperti negara Indonesia

yang memiliki banyak kota seperti: Jakarta, Bandung, Surabaya, Yogyakarta.

Kota-kota itulah yang tergabung dalam negara Indonesia dan kota-kota itulah

yang saling berhubungan.

Page 28: Makalah graph

25

DAFTAR PUSTAKA

Undip, BFS dan DFS,http://eprints.undip.ac.id/5202/2/BAB_I_dan_II.pdf,Tanggal Akses : 10 November 2010

Rachmat Antonius, Struktur Datahttp://lecturer.ukdw.ac.id/anton/download/TIstrukdat11.pptTanggal Akses : 10 November 2010

AlpenYap, Struktur Data Hirarkishttp://alpz.files.wordpress.com/2007/12/tree-btree-graph.pdfTanggal Akses : 2 November 2010

Ciptarjo Imam, Pengantar Graphhttp://134738.yolasite.com/resources/17782333-Struktur-Data-Graph-wwwaloneareacom.pdfTanggal Akses : 2 November 2010