You are on page 1of 36

8.

Graf, Diagram Pohon dan Aplikasinya


Pengantar
Definisi. Suatu graf sederhana G=(V,E) terdiri dari himpunan tak kosong dari simpul (vertex) V, dan himpunan pasangan tak berurut anggota berlainan dari V yang disebut sebagai garis hubung (edge) E.

Graf sederhana mirip seperti graf berarah, tetapi arah garis hubungnya tidak ditentukan (tidak memiliki arah). Kadangkala kita ingin memodelkan berbagai hubungan antar simpul yang tidak mungkin dilakukan dengan graf sederhana. multigraf. Pada kasus ini, kita harus memakai

Definisi. Suatu multigraf G=(V,E) terdiri dari himpunan simpul V, himpunan garis hubung E, dan sebuah fungsi f dari E ke {{u, v} | u, v V, u v}.

Garis hubung e1 dan e2 disebut garis hubung ganda atau garis hubung sejajar jika f(e1)=f(e2). Catatan: Garis hubung dalam multigraf tidak perlu didefinisikan sebagai pasangan, tapi bisa berjenis apapun. Loop tidak diperbolehkan di dalam multigraf (u v).

Contoh 8.1: Suatu multigraf G dengan simpul V={a, b, c, d}, garis hubung {1, 2, 3, 4, 5} dan fungsi f dengan f(1)={a, b}, f(2) = {a, b}, f(3) = {b, c}, f(4) = {c, d} dan f(5) = {c, d} dapat digambarkan sebagai berikut.

1 a 2 b 3 c

4 d

8. Graf, Diagram Pohon dan Aplikasinya - 1

Untuk mengantisipasi keberadaan loop didalam graf, kita perlu mendefinisikan graf berjenis berikut ini.

Definisi. Suatu pseudograf G=(V, E) terdiri dari himpunan simpul V, himpunan garis hubung E, dan fungsi f dari E ke {{u, v} | u, v V}.

Suatu garis hubung disebut loop jika f(e) = {u, u} untuk suatu uV.

Definisi. Suatu graf berarah G=(V, E) terdiri dari himpunan simpul V dan himpunan garis hubung E yaitu pasangan berurut anggota V.

Definisi. Suatu multigraf berarah G=(V, E) terdiri dari himpunan simpul V, himpunan garis hubung E, dan fungsi f dari E ke {(u, v) | u, v V}.

Garis hubung e1 dan e2 disebut sebgai garis hubung ganda jika f(e1) = f(e2). Contoh 8.2: Suatu multigraf berarah G dengan simpul V={a, b, c, d}, garis hubung {1, 2, 3, 4, 5} dan fungsi f dimana f(1) = (a, b), f(2) = (b, a), f(3) = (c, b), f(4) = (c, d) dan f(5) = (c, d) digambarkan sebagai berikut.

1 a 2 b 3 c

4 d

Risalah dari beberapa jenis graf dan sifat-sifatnya diiberikan pada tabel berikut ini.

No 1 2 3 4 5

Jenis Graf Sederhana Multigraf Pseudograf Graf Berarah Multigraf Berarah

Garis hubung? Tak berarah Tak berarah Tak berarah Berarah Berarah

Ada Grs. Hub. Ganda? Tidak Ya Ya Tidak Ya

Ada Loop? Tidak Tidak Ya Ya Ya

8. Graf, Diagram Pohon dan Aplikasinya - 2

Model dari Graf


Contoh 8.3: Bagaimana cara menyatakan jaringan (dua arah) Kerta Api yang menghubungkan sekumpulan kota? Kita harus memakai graf sederhana dengan garis hubung {a, b} merupakan jalur langsung yang menghubungkan kota a dengan kota b.

Cirebon

Jakarta Ponorogo Bandung Madiun

Tasikmalaya

Contoh 8.4: Di dalam suatu turnamen sepakbola, setiap tim bertanding dengan tim lain tepat satu kali. Bagaimana cara merepresentasikan hasil turnamen (suatu tim mengalahkan tim lain)? Kita harus menggunakan graf berarah dengan garis hubung (a, b) menunjukkan tim a mengalahkan tim b.

Juventus

Real Madrid

AC Milan

Persib

Beberapa Terminologi dalam Graf


Definisi. Dua buah simpul, u dan v, dalam graf tak berarah G disebut berdekatan (atau bertetangga) dalam G jika {u, v} adalah suatu garis hubung dalam G.

8. Graf, Diagram Pohon dan Aplikasinya - 3

Jika e = {u, v}, garis hubung e disebut sebagai incident dengan simpul u dan v, atau disebut juga menghubungkan u dengan v. Simpul u dan v disebut juga titik ujung (endpoints) dari garis hubung {u, v}.

Definisi. Derajat dari suatu simpul pada graf tak berarah adalah banyaknya garis hubung yang berasal dari- /berakhir ke- simpul tersebut, kecuali loop di dalam simpul yang menyumbang derajat simpul sebanyak dua.

Dengan kata lain, derajat dari simpul dapat ditentukan secara sederhana, yaitu dengan menghitung banyaknya garis yang menyentuh simpul tersebut. Derajat dari suatu simpul v dituliskan sebagai deg(v). Simpul dengan derajat nol disebut sebagai simpul yang terisolasi, karena tidak terhubung (adjacent) dengan simpul lain manapun.

Catatan: Suatu simpul yang memiliki loop setidaknya akan berderajat 2 dan, perdefinisi, tidak terisolasi, meski dia tidak terhubung ke simpul yang lain. Simpul berderajat satu disebut sebagai simpul yang tergelantung (pendant). Simpul ini terhubung dengan tepat satu buah simpul lainnya.

Contoh 8.5: Diantara graf berikut, manakah simpul yang terisolasi, yang tergelantung, dan berapakah derajat maksimumnya? Tentukan juga jenis dari graf?

i d a f e g b c j

Jawab: Simpul f terisolasi, dan simpul a, d, dan j tergelantung. Derajat maksimum adalah deg(g)=5. Graf tersebut merupakan pseudograf (tak berarah, loop).

Contoh 8.6: Amati graf yang sama dan tentukan banyaknya garis hubung dan jumlah dari derajat semua simpulnya.

8. Graf, Diagram Pohon dan Aplikasinya - 4

Jawab : Ada 9 garis hubung, dan jumlah seluruh derajat simpulnya adalah 18. Penjelasannya: setiap garis hubung baru menambah hasil penjumlahan derajat sebanyak dua (29=18).

Teorema Handshaking. Misalkan G = (V, E) suatu graf tak berarah dengan garis hubung e. Maka 2e = deg ( v )
vV

Catatan: Teorema ini tetap berlaku meskipun pada graf terdapat garis hubung ganda maupun loop ganda.

Contoh 8.7: Ada berapa garis hubungkah dalam suatu graf yang memiliki 6 simpul, yang masing-masing simpulnya berderajat 10?

Jawab: Jumlah seluruh derajat simpul adalah 610=60. Menurut teorema handshaking, maka 2e=60 sehingga e = 30. Jadi akan ada 30 buah garis hubung.

Teorema. Suatu graf yang tak berarah, akan selalu memiliki simpul berderajat ganjil dengan jumlah genap.

Ide: Ada tiga kemungkinan untuk menambahkan garis hubung untuk menyambung dua simpul dalam graf, yakni.

Sebelum Kedua simpul berderajat genap Kedua simpul berderajat ganjil Satu simpul berderajat ganjil, yang lainnya berderajat genap

Sesudah Kedua simpul berderajat ganjil Kedua simpul berderajat genap Satu simpul berderajat genap, yang lainnya berderajat ganjil

Ada dua kemungkinan menambahkan suatu loop ke simpul dalam graf , yakni

8. Graf, Diagram Pohon dan Aplikasinya - 5

Sebelum Simpul berderajat genap Simpul berderajat ganjil

Sesudah Simpul berderajat genap Simpul berderajat ganjil

Jadi, jika dalam graf ada sejumlah genap simpul berderajat ganjil, hasil penambahan garis hubung masih saja menghasilkan simpul berjumlah genap. Maka, karena suatu graf tak berarah tanpa garis hubung memiliki sejumlah genap simpul berderajat ganjil (nol), hal yang sama berlaku untuk sebarang graf tak berarah. Bukti dapat dipelajari dari buku referensi.

Definisi. Jika (u, v) suatu garis hubung dari graf dengan garis hubung berarah G, u disebut terhubung ke (adjacent to) v, dan v dikatakan terhubung dari (adjacent from) u.

Simpul u disebut sebagai simpul awal (initial vertex) dari (u,v), dan v disebut sebagai simpul akhir (terminal vertex) dari (u,v). Simpul awal dan simpul akhir dari suatu loop adalah sama.

Definisi. Dalam graf dengan garis hubung berarah, derajat kedalam (in-degree) dari simpul v, dituliskan sebagai deg-(v), adalah banyaknya garis hubung dengan v sebagai simpul akhirnya. Derajat keluar (out-degree) dari v, dituliskan sebagai deg+(v), adalah banyaknya garis hubung dengan v sebagai simpul awalnya.

Bagaimana perubahan derajat keluar dan kedalam suatu simpul terhadap penambahan suatu loop ke simpul tsb? Penambahan ini meningkatkan baik derajat keluar maupun kedalam dari simpul yang bersangkutan sebesar satu.

Contoh 8.8: Berapakah derajat keluar dan kedalam dari simpul a, b, c, d pada graf berikut?

deg-(a) = 1 a deg+(a) = 2

deg-(b) = 4 deg+(b) = 2

deg-(d) = 2 deg+(d) = 1 d

deg-(c) = 0 deg+(c) = 2

8. Graf, Diagram Pohon dan Aplikasinya - 6

Teorema. Misalkan G = (V, E) graf dengan garis hubung berarah, maka:

deg ( v ) = deg ( v ) = E
+ vV vV

Ini mudah diperiksa, sebab setiap penambahan garis hubung baru akan meningkatkan baik derajat kedalam maupun derajat keluar sebanyak satu.

Graf-Graf Khusus
Definisi: Graf lengkap (complete graph) pada n buah simpul, dituliskan sebagai Kn, adalah graf sederhana yang mengandung tepat satu garis hubung antara dua simpul yang berbeda.

K1

K2

K3

K4

K5

Definisi. Siklus (cycle) Cn, n3, terdiri atas n buah simpul v1, v21, , vn dan garis hubung {v1,v2}, { v1, v3}, , { vn-1, vn}, { vn, v1}.

C3

C4

C5

C6

Definisi. Pemberian satu simpul tambahan pada suatu siklus Cn, n 3, dan lalu menghubungkan simpul tsb ke setiap simpul pada Cn dengan garis hubung baru akan menghasilkan roda (wheel).

8. Graf, Diagram Pohon dan Aplikasinya - 7

W3

W4

W5

W6

Definisi. Kubus-n (n-cube) dituliskan sebagai Qn adalah graf yang simpulnya merepresentasikan string 2n bit sepanjang n. Dua simpul terhubung jika dan hanya jika bit string yang direpresentasikannya berbeda tepat satu bit.

110 10 0 Q1 1 11 100 010 00 Q2 01 000 Q3 001 101

111

011

Definisi. Suatu graf sederhana G disebut

bipartite jika himpunan simpul V-nya dapat

dipartisi menjadi dua himpunan tak kosong yang tak beririsan V1 dan V2 sedemikian hingga setiap garis hubung dalam graf menghubungkan suatu simpul di V1 dengan simpul di V2 (sedemikian hingga tak ada garis hubung di dalam G menghubungkan dua simpul di V1 maupun di V2). Sebagai conoth, tinjau suatu graf yang merepresen-tasikan setiap penduduk di suatu desa dengan simpul dan setiap pernikahan dengan garis hubung. Graf ini bipartite, karena setiap garis hubung menghubungkan simpul dalam himpunan bagian penduduk pria dengan simpul didalam himpunan bagian penduduk wanita (dalam pernikahan tradisional).

8. Graf, Diagram Pohon dan Aplikasinya - 8

v1

Contoh 8.9: Apakah C3 bipartite? Tidak, sebab tidak ada cara mem-partisi simpul menjadi dua

v2

v3

himpunan sedemikian hingga tidak ada garis hubung dengan kedua titik akhir di himpunan yang sama.

v1 v2 v3

v6 v5 v4

v1
Contoh bipartite? 8.10: Apakah C6

v6 v2 v4

v5 v3

Ya, sebab C6 bisa ditampilkan sebagai berikut:

Definisi. Graf bipartite lengkap Km,n adalah graf yang himpunan simpulnya dipartisi kedalam dua himpunan bagian, masing-masing dengan m dan n buah simpul. Dua simpul terhubung jika dan hanya jika mereka berada di himpunan bagian yang berbeda.

K3,2

K3,4

Operasi Pada Graf


Definisi. Suatu subgraf dari graf G = (V, E) adalah graf H = (W, F) dimana WV dan FE. Catatan: Tentu saja H adalah graf yang valid, sehingga kita tidak bisa membuang titik ujung dari garis hubung yang tersisa saat kita membentuk H.

8. Graf, Diagram Pohon dan Aplikasinya - 9

Contoh 8.11

subgraf dari K5 K5
Definisi. Gabungan dari dua graf sederhana G1 = (V1, E1) dan G2 = (V2, E2) adalah graf sederhana dengan himpunan simpul V1V2 dan himpunan garis hubung E1E2. Gabungan dari G1 dan G2 dituliskan sebagai G1G2.

G1

G2

G1 G2 = K5

Representasi Graf
Perhatikan dua graf berikut ini. Simpula awal, tetangga dan simpul akhir didaftarkan pada tabel di bawahnya.

a d b c

a d c b

8. Graf, Diagram Pohon dan Aplikasinya - 10

Simpul a b c d

Simpul tetangga b, c, d a, d a, d a, b, c

Simpul a b c d

Simpul akhir c a a, b, c

Definisi: Misalkan G = (V, E) adalah sebuah graf sederhana dengan |V| = n. Anggap simpul pada G disusun dengan urutan v1, v2 , vn Matriks kedekatan (Adjacency matrix) dari graf G, AG, yang berkaitan dengan simpul-simpul, adalah sebuah matriks boolean nn dengan elemen ke (i, j) berharga 1 jika vi dan vj bertetangga, dan selainnya itu berharga 0. Dengan kata lain, untuk sebuah matriks kedekatan A = aij , maka berlaku

1, jika {vi , v j } adalah sebuah garis hubung dari G ai , j = 0, jika bukan garis hubung dari G

a d b

Contoh 8.12 Tentukan matriks kedekatan AG untuk graf di


samping berdasarkan urutan simpul a, b, c, dan d !

Jawab: 0 1 AG = 1 1
1 0 0 1 1 0 0 1 1 1 1 0

Catatan: Matriks kedekatan dari graf tak berarah selalu simetris

Untuk representasi graf dengan garis hubung ganda (multiple edge), matriks boolean tidak bisa dipakai dan sebagai gantinya dipergunakan matriks bilangan cacah. Elemen ke (i, j) dari matriks tersebut sama dengan jumlah garis hubung yang terdapat pada kedua simpul {vi, vj}.

8. Graf, Diagram Pohon dan Aplikasinya - 11

a b c

Contoh 8.13 Tentukan matriks kedekatan AG untuk graf di


samping berdasarkan urutan simpul a, b, c, dan d !

Jawab: 0 1 AG = 1 2
1 1 0 1 1 0 0 3 2 1 3 0

Definisi. Misalkan G = (V, E) sebuah graf tak berarah dengan |V| = n. Anggap simpul dan
garis hubung pada G disusun dengan urutan seperti v1, v2, , vn dan e1, e2, , em. Matriks insiden (Incidence matrix) dari G yang berkaitan dengan simpul dan garis hubung adalah matriks boolean nm dengan elemen ke (i, j) =1 jika garis ej terhubung dengan simpul vi, dan selain itu berharga 0.

Dengan kata lain , untuk sebuah incidence matrix M = [mij], maka berlaku
1, jika garis e j terhubung dengan vi mi , j = 0,selain itu

a 2 d 3 4

Contoh 8.14: Tentukan

matriks insiden M untuk graf

berikut berdasarkan urutan simpul a, b, c, d dan urutan garis

b 5

hubung 1, 2, 3, 4, 5, 6!

Jawab: 1 1 M = 0 0
1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 1 0

Catatan : Matriks insiden dari graf tidak berarah, setiap kolomnya akan berisi 2 buah nilai 1 jika garis hubung menghubungkan dua buah simpul dan berisi 1 buah nilai 1 untuk loop.

Graf-Graf yang Isomorfis


Definisi. Graf sederhana G1 = (V1, E1) dan G2 = (V2, E2) disebut isomorfis jika ada sebuah
fungsi bijektif (satu-ke-satu dan onto) dari V1 ke V2 dengan sifat bahwa a bertetangga dengan

8. Graf, Diagram Pohon dan Aplikasinya - 12

b pada G1 jika dan hanya jika f(a) bertetangga dengan f(b) pada G2, untuk seluruh a dan b
pada V1. Fungsi f seperti itu disebut isomorfisme. Dengan kata lain, G1 dan G2 adalah isomorfis jika simpul-simpulnya dapat diurutkan dengan suatu cara sedemikian rupa sehingga matriks kedekatan M G1 dan M G2 adalah identik. Secara visual, dua buah graf, G1 dan G2, isomorfis jika graf-graf tersebut dapat disusun dengan suatu cara sedemikian rupa sehingga tampilannya identik (tentu tanpa merubah ketetanggaan).

Menentukan dua buah graf tidak isomorfis lebih mudah dibandingkan dengan menentukan apakah dua buah graf isomorfis. Untuk dua buah graf sederhana dengan masing-masing simpulnya berjumlah n buah, maka akan ada n! kemungkinan isomorfisme yang harus diperiksa. Untuk itu kita dapat memeriksa invarian, yaitu, sifat yang harus dimiliki oleh dua buah graf sederhana yang isomorfis. Keduanya haruslah memiliki jumlah simpul yang sama, dan jumlah garis hubung yang sama , dan derajat dari simpul-simpulnya sama.

Perhatikan bahwa dua graf yang salah satu dari invarian di atas berbeda pasti menyebabkan kedua graf tersebut tidak isomorfis, tetapi jika seluruhnya sesuai, belum tentu graf tersebut isomorfis.

Contoh 8.15: Apakah kedua graf berikut isomorfis ?

a a c b d e c e b d

Jawab : Ya, keduanya isomorfis karena dapat disusun sehingga terlihat identik. Dapat
diamati, jika pada graf sebelah kanan kita gerakkan simpul b kesebelah kiri garis hubung

8. Graf, Diagram Pohon dan Aplikasinya - 13

{a,c}. Maka fungsi isomorfis f dari graf kiri ke graf sebelah kanan adalah: f(a) = e, f(b) = a,

f(c) = b, f(d) = c, f(e) = d.

Contoh 8.16: Apakah kedua graf berikut isomorfis ?

b c

a e d

a e b c d

Jawab : Tidak, karena derajat dari simpul-simpulnya berlainan. Simpul d pada graf dikanan
berderajat satu, tetapi tidak ada satupun simpul pada graf dikiri yang berderajat 1.

Konektivitas Graf
Definisi. Sebuah lintasan (path) dengan panjang n dari u ke v, dimana n adalah bilangan bulat
positif dalam sebuah graf tidak berarah adalah sebuah urutan garis hubung e1, e2, , en dari graf sehingga f(e1)={x0, x1}, f(e2) = {x1, x2}, f(en) = {xn-1, xn}, dgn x0= u dan xn = v. Jika graf tersebut adalah sebuah graf sederhana, kita menuliskan lintasan tersebut dengan urutan/ deretan simpul x0, x1, , xn, karena secara unik dapat menentukan lintasan. Lintasan adalah sebuah sirkit jika dimulai dan diakhiri pada simpul yang sama, yaitu jika u = v.

Definisi (Lanjutan). Lintasan atau sirkit ini disebut melalui (pass through/ traverse) x0, x1,
, xn-1. Lintasan atau sirkit disebut sederhana jika tidak mengandung garis yang sama lebih dari sekali.

Definisi. Graf tak berarah disebut terhubung (connected) jika ada lintasan diantara setiap
pasangan dari simpul yang berbeda dalam graf

8. Graf, Diagram Pohon dan Aplikasinya - 14

b c

a e

b c

d
tak terhubung

a e

terhubung

b c

a d
terhubung

b e c

a d f

tak terhubung

Sebagai contoh, setiap dua komputer dalam jaringan dapat berkomunikasi jika dan hanya jika graf dari jaringan tersebut terhubung. [Catatan: sebuah graf yang mengandung hanya satu simpul selalu terhubung karena tidak berisi suatu pasangan simpul yang berbeda]. Gambar di atas menunjukkan contoh-contoh graf yang terhubung dan yang tak-terhubung.

Teorema. Selalu ada lintasan sederhana antara setiap pasangan simpul yang berbeda dari
suatu graf-tak-berarah yang terhubung

Definisi. sebuah graf yang tidak terhubung adalah gabungan dari dua atau lebih subgraf yang
terhubung dengan masing-masing pasangan darinya tidak memiliki simpul bersama (disjoint). Subgraf-subgraf yang terhubung tetapi disjoint ini disebut komponen-komponen terhubung dari graf.

Contoh 8.17: tentukan komponen-komponen terhubung dari graf berikut ini?

g a d e i b c f j h

8. Graf, Diagram Pohon dan Aplikasinya - 15

Jawab: Komponen-komponen terhubung adalah graf dengan simpul-simpul {a, b, c, d}, {e},
{f}, dan {g, h, i, j}.

Definisi. Sebuah graf berarah disebut terhubung kuat (strongly connected) jika ada sebuah
lintasan dari a ke b dan dari b ke a untuk semua pasangan simpul a, b pada graf.

Definisi. Sebuah graf berarah disebut terhubung lemah (weakly connected) jika hanya ada
sebuah lintasan diantara dua simpul dalam graf tidak berarahnya. ( Ada lintasan dari a ke b, tetapi tidak dari b ke a, atau sebaliknya)

Contoh 8.18: Apakah graf berarah berikut ini terhubung kuat atau lemah?

a b d c d

a b c

Terhubung lemah, karena (misalnya) Terhubung kuat, karena ada lintasan diantara tidak ada lintasan dari b ke d. seluruh kemungkinan pasangan simpul.

Jumlah dan ukuran dari komponen dan sirkit terhubung merupakan invarian berkaitan dengan isomorfisme dari graf sederhana

Contoh 8.19: Apakah dua graf berikut ini isomorfis ?

8. Graf, Diagram Pohon dan Aplikasinya - 16

Jawab: tidak , karena graf sebelah kanan berisi sirkit dengan panjang 3 , sedangkan pada graf
sebelah kiri tidak ada sirkit yang demikian.

Masalah Lintasan Terpendek


Kita dapat memberikan bobot pada garis dari graf, sebagai contoh, untuk merepresentasikan jarak antara kota dalam jaringan jalan kereta, seperti dilukiskan pada graf berikut ini.

Bo go r 25 Jakarta 600 180 400 Bandung

Yogyakarta

Pembobotan graf dapat juga dipakai untuk memodelkan jaringan komputer dengan response

time atau biaya sebagai bobotnya. Satu pertanyaan yang sangat penting yang dapat kita
selidiki pada graf seperti ini adalah: Yang manakah lintasan terpendek antara dua simpul
dalam graf, yaitu, lintasan dengan jumlah bobot minimal sepanjang jalannya? Hal ini

misalnya berkaitan dengan koneksi tercepat pada jaringan komputer atau hubungan lintasan kereta terpendek

Algoritma Dijkstra
Algoritma Dijkstra adalah sebuah prosedur iteratif untuk mencari lintasan terpendek antara dua simpul, a dan z, di dalam graf dengan pembobot. Prosedur ini dilaksanakan dengan cara mencari panjang lintasan terpendek dari sebuah simpul pendahulu dan menambahkan simpulsimpul tersebut ke himpunan simpul S. Algoritma berhenti setelah simpul z tercapai.

Pseudocode dari algoritma Dijkstra dapat dilihat di bawah ini.

8. Graf, Diagram Pohon dan Aplikasinya - 17

procedure

Dijkstra(G:

graf

sederhana

yang

terhubung

dan

dengan pembobot, dengan simpul a = v0, v1, , vn = z dan bobot positif w(vi, vj), dimana w(vi, vj) = jika {vi, vj} bukan garis hubung pada G) for i := 1 to n L(vi) := L(a) := 0 S := {label-label sekarang diinisialisasi sehingga label dari a adalah nol dan label yang lainnya adalah , dan set S adalah kosong} while zS begin u := simpul tidak pada S dengan minimal L(u) S := S{u} for seluruh simpul v tidak pada S if L(u) + w(u, v) < L(v) then L(v) := L(u) + w(u, v) { ini menjumlahkan sebuah simpul ke S dengan label minimal dan memperbaharui label-label simpul yang tidak di S}

end {L(z) = panjang jalur terpendek dari a ke z}

Contoh 8.20: Tentukan lintasan terpendek dari graf berikut ini dengan menggunakan
algoritma Dijkstra.

STEP-0

STEP-1

b a 0 2 c 4 1

5 8

6 z 0 a 4 1 2

b 4(a) 5 8

d 6 2 e 3 z

2 e 3

10

c 2(a) 10

8. Graf, Diagram Pohon dan Aplikasinya - 18

STEP-2

STEP-3

b 3 (a, c) 5 a 0 4 1 2 c 2(a) 10 8

d 8(a, c,b) 6 2 e 12 (a, c) 3 z a 0 4 1 2

b 3 (a, c) 5 8

d 10 (a, c, b) 6 2 e 12 (a, c) 3 z

c 2(a) 10

STEP-4

STEP-5

b 3 (a, c) 5 a 0 4 1 2 c 2(a) 10 8

d 10 (a, c, b) 6 2 e z 3
14 (a, c, b, d)

b 3 (a, c) 5 a 0 4 1 2 c 2(a) 10 8

d 10 (a, c, b) 6 2 e 3 z
13 (a, c, b, d, e)

e 10(a, c, b, d)

10(a, c, b, d)

STEP-6:

b 3 (a, c) 5 a 0 4 1 2 c 2(a) 10 8

d 10 (a, c, b) 6 2 e 3 z
13 (a, c, b, d, e)

10(a, c, b, d)

Teorema. Algoritma Dijkstra akan mencari panjang lintasan terpendek antara dua simpul
dalam graf yang terhubung, sederhana, tidak berarah, dengan pembobot.

8. Graf, Diagram Pohon dan Aplikasinya - 19

Teorema. Algorithm Dijkstra menggunakan O(n2) operasi (penjumlahan dan perbandingan)


untuk mencari panjang lintasan terpendek antara dua simpul dalam graf yang terhubung, sederhana, tidak berarah, dengan pembobot.

Traveling Salesman Problem (TSP)


TSP adalah salah satu masalah klasik dalam ilmu komputer. Permasalahan ini dapat dilukiskan sebagai berikut: Seorang traveling salesman ingin mengunjungi sejumlah kota dan kembali ke titik awal mula pemberangkatan. Tentunya ia ingin menghemat waktu dan energi, sehingga ia ingin mementukan lintasan terpendek dalam perjalanannya.

Kita dapat merepresentasikan kota-kota dan jarak nya dengan sebuah graf dengan pembobot, lengkap, tidak berarah. Masalahnya adalah menentukan sirkit dengan total bobot yang minimum dan setiap simpul dikunjungi tepat satu kali.

Contoh 8.21: Lintasan mana yang akan diambil oleh traveling salesman untuk mengunjungi
kota-kota berikut? (Jarak dinyatakan dalam kilometer).

Jo r o n g 650 700 550 Jogja 200 Semarang

Jakarta

700 600

Jawab: Lintasan terpendek adalah Jogja, Semarang, Jakarta, Jorong, Jogja (2,000 Km).

Contoh8.22: Diberikan n buah simpul, berapa banyak siklis Cn berbeda, yang dapat kita
bentuk dengan menghubungkan simpul-simpul tersebut dengan garis hubung?

8. Graf, Diagram Pohon dan Aplikasinya - 20

Jawab: Pertama kita pilih titik awal. Kemudian kita memiliki (n1) pilihan untuk simpul ke
dua dalam siklis, (n2) untuk simpul ketiga, dst, sehingga ada (n1)! Buah pilihan untuk seluruh siklis. Akan tetapi,jumlah ini termasuk siklis yang identik yang dibentuk dalam arah kebalikannya. Oleh karena itu jumlah siklis yang berbeda sesungguhnya adalah

Cn = (n 1)!/2.
Sampai saat ini belum ada algoritma yang dapat menyelesaikan masalah TSP dengan kompleksitas polynomial worst-case time complexity .Ini artinya, untuk jumlah simpul yang banyak, penyelesaian TSP (secara analitik) tidak praktis. Dalam kasus ini, kita dapat menggunakan algoritma pendekatan yang efisien dalam menentukan sebuah lintasan, dimana lintasan yang diperoleh mungkin sedikit lebih panjang dibanding lintasan traveling salesman yang seharusnya tetapi dengan kompleksitas perhitungan polinomial, misalnya dengan algoritma jaringan syaraf tiruan.

Diagram Pohon (Tree)


Definisi. Diagram pohon (tree) adalah sebuah graf tak berarah yang terhubung (connected),
yang tidak mengandung sirkit sederhana.

Karena tree tidak mempunyai sirkit sederhana, maka tidak akan ada garis-hubung paralel atau loop didalam sebuah tree. Oleh karena itu, tree haruslah sebuah graf yang sederhana.

Teorema. Sebuah graf tidak berarah adalah tree jika dan hanya jika ada sebuah lintasan
sederhana yang unik antara simpul-simpulnya.

Gambar berikut ini menunjukkan graf yang berupa tree dan yang bukan tree.

t re e

bukan tree

8. Graf, Diagram Pohon dan Aplikasinya - 21

bukantree

t re e

Definisi. Sebuah graf tidak berarah yang tidak berisi sirkit sederhana dan tidak perlu
terhubung disebut sebuah forest.

Secara umum, kita menggunakan tree untuk merepresentasikan struktur bertingkat (hierarchical structures). Kita sering memilih simpul tertentu dari tree sebagai akarnya (root). Sebuah tree bersama-sama dengan root-nya menghasilkan sebuah graf berarah yang disebut sebuah rooted-tree. Beberapa istilah dalam tree:

Parent dari simpul v (selain root) adalah simpul u yang unik sedemikian sehingga ada
sebuah garis-hubung berarah dari u ke v. Jika u parent dari v maka v adalah child dari u

Siblings adalah simpul-simpul dengan parent yang sama Ancestors dari suatu simpul (selain root) adalah simpul-simpul pada lintasan dari root ke
simpul tersebut, diluar simpul itu sendiri dan termasuk root.

Descendants dari simpul v adalah simpul-simpul dengan v sebagai ancestor-nya.


Sebuah simpul dari sebuah tree disebut sebagai leaf jika ia tidak memiliki children.

Level dari simpul v adalah panjang dari lintasan yang unik dari root ke simpul tersebut. Level dari root didefinisikan = 0. Height dari rooted tree adalah level maksimum dari simpul

Sebuah tree bias menggambarkan silsilah keturunan dari sebuah keluarga, atau direktori dalam sebuah komputer seperti yang dilukiskan pada gambar berikut ini.

8. Graf, Diagram Pohon dan Aplikasinya - 22

Uwes Tini B o no usr

/ bin temp

Franky

Jo n i

Petra

bin

spool

ls

Tree di samping menyatakan ekspresi aritmatika

+ z x y

(y + z)(x - y)

Definisi. Rooted-tree disebut sebuah m-ary tree jika setiap simpul internal tidak memiliki
lebih dari m children. Sebuah tree disebut full m-ary tree jika setiap simpul internal memiliki tepat m children. Khususnya, m-ary tree dengan m = 2 disebut sebagai binary tree.

Teorema. Tree dengan n simpul memiliki (n 1) buah garis hubung. Teorema. Full m-ary tree dengan i-buah simpul internal mengandung n = mi + 1 simpul.

Pohon Pencari Biner (Binary Search Tree)


Binary search tree (BST) berguna untuk melakukan pencarian besar-besaran pada daftar item
tertentu. BST adalah sebuah binary tree yang masing-masing child dari simpul ditentukan sebagai child kanan atau kiri, dan masing-masing simpul dilabeli dengan sebuah key. Saat membuat tree tersebut, simpul-simpul diberi kunci sedemikian hingga kunci pada suatu simpul lebih besar daripada kunci lain pada subtree kiri dan sekaligus lebih kecil daripada semua simpul pada subtree kanan. Sebagai contoh, BST untuk string math, computer, power,

north, zoo, dentist, book diberikan pada diagram berikut.

8. Graf, Diagram Pohon dan Aplikasinya - 23

math

computer

power

book

dentist

no rth

zoo

Untuk melakukan pencarian sebuah item x pada BST, kita dapat memulai dari root dan membandingkan key-nya dengan x. Jika x lebih kecil dari key, kita teruskan ke child kiri dari simpul tersebut, dan jika x lebih besar dari key, kita teruskan ke sebelah kanan. Prosedur tersebut diulang terus sampai kita menemukan item yang kita cari atau kita tidak dapat meneruskannya lebih lanjut lagi. Untuk n item, pencarian dapat dibentuk dengan jumlah langkah maksimumsebesar log(n + 1)

Aplikasi dari Tree


Ada sejumlah aplikasi penting dari tree, diantaranya :

Optimasi jaringan dengan pohon pembentang minimum (minimum spanning trees) Penyelesaian masalah dengan proses lacak-balik pada pohon keputusan (backtracking

in decision trees)
Kompresi data dengan pohon pengkode Huffman (Huffman coding trees)

Definisi. Misalkan G sebuah graf sederhana. Pohon pembentang (spanning tree) dari G
adalah sebuah sub-graf dari G yang merupakan tree yang berisi setiap simpul dari G.

Catatan: Pohon pembentang dari G=(V, E) adalah graf terhubung pada V dengan jumlah
garis minimum = (|V| - 1).

Contoh 8.23: Ketika musim dingin, suhu di Boston bisa menjadi sangat dingin, sehingga
keenam buah universitas di wilayah ini memutuskan untuk membangun sistem terowongan yang akan menghubungkan seluruh perpustakaan di universitas yang ada di Boston. Berikut ini adalah graf lengkap dari rancangan (awal) terowongan tersebut.

8. Graf, Diagram Pohon dan Aplikasinya - 24

Brandeis Univ

Harvard Univ

MIT Boston Univ

Tufts Univ

Univ Mass

Akan ada suatu pohon pembentang dari graf ini yang menghubungkan seluruh perpustakaan dengan jumlah terowongan yang minimum. Sebagai contoh, pohon pembentang berikut ini yang menyatakan lima buah terowongan sudah cukup untuk menghubungkan ke enam buah perpustakaan.

Brandeis Univ

Harvard Univ

MIT Boston Univ

Tufts Univ

Univ Mass

Masalah berikutnya adalah bagaimana cara menentukan sistem terowongan tersebut dengan biaya semurah mungkin. Inilah yang disebut sebagai masalah pohon pembentang minimum (MST-Minimum Spanning Tree). MST pada graf terhubung dan dengan pembobot adalah sebuah pohon pembentang yang mempunyai jumlah bobot paling kecil. Jika diberikan sebuah
8. Graf, Diagram Pohon dan Aplikasinya - 25

grf terbobot, bagaimana cara menentukan MST? Berikut ini graf seperto contoh diatas tetapi dengan bobot yang menyatakan biaya pembangunan terowongan dalam Milyar rupiah.

Brandeis Univ

7 8 9

Harvard Univ 4 2

3 6 Boston Univ 9 4 6

MIT 5 4 5 4

Tufts Univ

Univ Mass

Dengan melihat graf diatas, diperoleh bahwa biaya termurah adalah 20 Milyar rupiah.

Untuk graf dengan ukuran besar, diperlukan algoritma untuk mencari MST. Dua diantaranya yang akan kita bahas adalah algoritma Prim dan algoritma Kruskal.

Algoritma Prim
Berikut ini langkah-langkah dalam algoritma Prim : Mulai dengan memilih suatu garis dengan bobot terkecil, dan letakkan pada pohon pembentang, Secara berurutan tambahkan pada garis-hubung dengan bobot minimum yang terhubung pada simpul yang telah ada pada tree dan tidak membentuk sirkit sederhana dengan garis-garis yang telah ada pada tree Berhenti saat (n 1) buah garis-hubung telah ditambahkan.

Algoritma Kruskal
Algoritma Kruskal identik dengan algoritma Prim, kecuali bahwa algoritma ini tidak membutuhkan garis-hubung baru untuk dihubungkan ke simpul yang telah ada pada tree.

8. Graf, Diagram Pohon dan Aplikasinya - 26

Kedua algoritma dijamin dapat menghasilkan pohon pembentang yang minimum dari graf terhubung dan terboboti.

Lacak Balik Pada Pohon Keputusan


Pohon keputusan adalah suatu rooted-tree dimana masing-masing simpul internal berkaitan dengan keputusan/tindakan, dengan sub-tree pada simpul-simpul tersebut adalah semua hasil dari keputusan yang mungkin. Pohon keputusan dapat dipakai untuk memodelkan suatu pengambilan keputusan terhadap masalah tertentu, dimana rangkaian keputusan membawa kepada suatu solusi. Kemungkinan solusi dari masalah berkaitan dengan lintasan dari root ke

leaf dari pohon keputusan.

Terdapat sekelompok masalah yang memerlukan exhaustive search

dari seluruh

kemungkinan rangkaian keputusan guna mendapatkan pemecahan. Kita dapat menyelesaikan masalah yang demikian dengan membuat pohon keputusan yang lengkap dan kemudian menentukan lintasan dari root ke leave yang berkorespondensi dengan solusi dari masalah tersebut. Dalam beberapa kasus, efisiensi dari prosedur ini dapat meningkat secara dramatis dengan tenik lacak balik (backtracking).

Idenya: Kita mulai pada root dari pohon keputusan, lalu bergerak turun, yakni, membuat rangkaian keputusan, sampai tercapai solusi atau sampai pada situasi dimana tidak ada solusi yang didapatkan. Dalam kasus terakhir, lacak-balik ke parent dari simpul terkini dan ambil lintasan lain turun darinya. Jika seluruh lintasan dari simpul ini telah dikaji, lacak-balik ke

parent-nya. Teruskan prosedur sampai kita mendapatkan solusi atau tidak terdapat solusi
(tidak ada lagi lintasan yang dapat dicoba).

Contoh 8.24 : [Masalah n-queen] Bagaimana cara menempatkan n buah queen pada papan
catur berukuran nn sedemikian hingga tidak ada dua queen dapat saling menangkap/ memakan?

8. Graf, Diagram Pohon dan Aplikasinya - 27

Sebuah queen dapat bergerak dalam sejumlah petak secara horizontal, vertikal, dan X X X Disini petak target yang mungkin dari queen Q ditandai dengan X. X X X X X X X X X X X X X X X X X X X X

diagonal.

Q
X X X X

Jelaslah bahwa pada suatu solusi dari masalah n-queen, akan ada tepat satu queen pada masing-masing kolom dari papan. Oleh karena itu, kita dapat menggambarkan solusi dari masalah ini sebagai rangkaian dari n buah keputusan : Keputusan 1: Tempatkan queen pada kolom ke-1 Keputusan 2: Tempatkan queen pada kolom ke-2 . Keputusan n: Tempatkan queen pada kolom ke-n Kita sekarang akan menyelesaikan masalah 4-queens menggunakan metoda backtracking.

8. Graf, Diagram Pohon dan Aplikasinya - 28

Papan Kosong

Q Q

Tempat queen ke-1


Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q

Tempat queen ke-2

Tempat queen ke-3

Tempat queen ke-4


Kita dapat juga menggunakan metoda backtracking untuk menuliskan program pintar yang dapat memainkan suatu game anatara komputer dengan manusia sebagai lawannya.

Contoh 8.25: Pada permulaan permainan, ada 7 buah koin diatas meja. Pemain pertama
mendapat giliran pertama, kemudian pemain ke-2, dst, bergantian. Setiap mendapat giliran, pemain mengambil 1, 2, atau 3 koin. Pemain yang dapat mengambil seluruh koin tersisa adalah yang keluar sebagai pemenangnya

Marilah kita asumsikan bahwa komputer (C) merupakan pemain pertama yang harus melakukan pergerakan pertama. Kemudian permainan dapat gambarkan sebagai rangkaian dari keputusan, dimana keputusan pertama oleh komputer, ke-2 oleh manusia, ke-3 oleh komputer , dst. Sampai seluruh koin habis diambil. Komputer ingin membuat keputusan yang

8. Graf, Diagram Pohon dan Aplikasinya - 29

menjamin bahwa kemenangan selalu ada ditangannya. Asumsikan bahwa pemain manusia (H) selalu mencari pergerakan yang optimal.

C H C H C 4
1 3 2 2 1 3 1

6
1 2 1

5
1 3 3

4
2 2 1 3

5
1 3

4
2 2 1 3 1 3

4
2 2 1

3 2 1

3 2 1

3 2

C C C

3 2

H H H H H H

C C C
Komputer harus mulai dengan mengambil 3 buah koin agar terjamin dia akan selalu menang . Untuk permainan lain yang lebih kompleks dan menarik seperti catur, tidak mungkin memeriksa setiap kemungkinan urutan pergerakan. Pemain komputer hanya melihat beberapa jumlah pergerakan tertentu ke depan dan memperkirakan peluang dari kemenangan.

Pohon Pengkode Huffman


Kita biasanya mengkodekan suatu string dengan menggunakan kode yang panjangnya tetap (fixed-length codes) pada seluruh alfabet (mis. 8 bit untuk ASCII). Akan tetapi, jika karakter yang berbeda muncul dengan frekuensi yang berbeda, kita dapat menghemat memori dan mereduksi waktu transmisi dengan cara menggunakan kode yang panjangnya dapt diubah (VLC-variable length codes). Ide dasar dari teknik pengkodean ini adalah nya adalah memakai kode terpendek untuk karakter yang paling sering muncul.

Ada beberapa hal yang harus diperhatikan ketika menggunakan VLC. Misalnya, kita ingin mengkodekan karakter e dengan bit 0, a dengan 1, dan t dengan 01. Bagaimana

8. Graf, Diagram Pohon dan Aplikasinya - 30

kemudian kita mengkodekan kata tea? Dari system ini, maka kodenya adalah 0101. Kalau dilihat lebih cermat, kode tersebut rancu, karena kode tersebut bisa juga dihasilkan dari kata eat, eaea, atau tt. Tentu saja kode yang demikian tidak dapat diterima karena dapat menyebabkan kesalahan/ kehilangan informasi.

Untuk menghindari kerancuan ini, kita dapat menggunakan kode prefiks (prefix code). Pada kode prefiks, bit string untuk sebuah karakter tidak pernah akan menjadi prefiks (bagian pertama) dari bit string karakter lainnya. Sebagai contoh, pengkodean e dengan 0, a dengan 10, dan t dengan 11 adalah kode prefiks. Maka, kata tea akan dikodekan sebagai 11010. Bit string ini adalah unik karena hanya kata tea dan tidak ada kata lain yang dapat dikodekan dengan hasil yang sama.

Kode prefiks dapat disusun dengan bantuan pohon biner, dimana karakter adalah label dari

leaf dalam pohon biner tersebut. Garis dari tree dilabeli sedemikian hingga garis ke child kiri
diberi bit 0 dan ke ichild kanan dengan bit 1. Bit string yang dipakai untuk mengkodekan karakter adalah rangkaian label dari garis dalam lintasan yang unik dari root ke leaf yang dilabeli dengan karakter tersebut. Maka, pohon biner untuk contoh pengkodean tea yang telah dibahas adalah sebagai berikut.

1
Pada pohon biner ini tidak ada leaf yang dapat menjadi ancestor

dari leaf lainnya. Sehingga, tidak ada kode dari karakter dapat menjadi prefix dari kode karakter lainnya. Inilah yang dimaksud

dengan kore prefiks.

Untuk menentukan kode yang optimal (terpendek) dari suatu string, pertama kita harus mencari frekuensi karakter dalam string tersebut. Ambil contoh string

eeadfeejjeggebeeggddehhhececddeciedee

8. Graf, Diagram Pohon dan Aplikasinya - 31

String ini berisi 1a, 1b, 3c, 6d, 15e, 1f, 4g, 3h, 1i, dan 2j. Kita sekarang dapat menggunakan algoritma Huffman untuk membuat coding tree yang optimal.

Untuk alfabet berisi n huruf, algoritma Huffman mulai dengan n simpul, satu untuk masingmasing huruf, dilabeli dengan huruf dan frekuensinya. Kita kemudian menentukan 2 buah simpul yang paling kecil frekuensinya dan gantikan mereka dengan tree dimana root dilabeli dengan jumlah dari kedua frekuensi tersebut dan yang dua childrennya adalah dua simpul yang kita gantikan. Pada langkah berikutnya, kita menentukan 2 frekuensi terendah antara simpul-simpul tunggal dan root-root dari tree-tree yang telah kita buat. Ini diulang sehingga kita dapatkan tree tunggal.

STEP-1

1 a
STEP-2

1 b

1 f

1 i

2 j

3 c

3 h

4 g

6 d

15 e

2 1 a
STEP-3

1 1 b f

1 i

2
j

3 c

3 h

4 g

6 d

15 e

2 1 a 1 b 1 f

2 1 i

2
j

3 c

3 h

4
g

6 d

15 e

8. Graf, Diagram Pohon dan Aplikasinya - 32

STEP-4

2 1 a 1 b 1 f
STEP-5

4 2 1 i 2 j

3 c

3 h

4 g

6 d

15 e

5 2 1 a 1 b 3 c 1 f 2

4 2 j 1 i

3 h

4 g

6 d

15 e

STEP-6

5 2 1 a 1 b 3 c 1 f 2

4 2 j 1 i 3 h

7 4 g

6 d

15 e

8. Graf, Diagram Pohon dan Aplikasinya - 33

STEP-7

9 5 2 1 a 1 b 3 c 1 f 2 1 i 4 2 j 3 h

7 4 g

6 d

15 e

STEP-8

9 5 2 1 a 1 b 3 c 1 f 2 1 i 4 2 j 3 h 7

13 6 4 g d

15 e

8. Graf, Diagram Pohon dan Aplikasinya - 34

STEP-9

22 9 5 2 1 a 1 b 3 c 1 f 2 1 i 4 2 j 3 h 7 4 g 13 6 d

15 e

STEP-10

37 22 9 5 2 1 a 1 b 3 c 1 f 2 1 i 4 2
j

15 13 7 3 h 4
g

6 d

8. Graf, Diagram Pohon dan Aplikasinya - 35

Akhirnya kita bisa mengubahnya menjadi kode prefiks sebagai berikut:

0 0 0 0 0 a 1 1 c 0 b f 1 0 1 1 j i 0 h 0

1 1 e 1 1 d g

VLC-nya adalah:

a (freq. 1): 00000 b (freq. 1): 00001 c (freq. 3): 0001 d (freq. 6): e (freq. 15): 011 1

f (freq. 1): 00100 g (freq. 4): 0101 h (freq. 3): 0100 i (freq. 1): 00101 j (freq. 2): 0011

Sehingga, string asal eeadfeejjeggebeeggddehhhececddeciedee menggunakan kode dengan panjang tetap, kita memerlukan 4 bit setiap karakternya (ada 10 karakter yang berbeda). Sehingga, panjang kode dari seluruh string adalah 437 = 148 bit. Tetapi dengan VLC, kita hanya membutuhkan 15 +15 + 34 + 63 + 151 + 15 + 44 + 34 + 15 + 24 = 101 bit.

Dapat diperlihatkan bahwa untuk setiap string yang diberikan, pohon pengkode Huffman selalu menghasilkan VLC dengan panjang deskripsi yang minimum untuk string tersebut.

8. Graf, Diagram Pohon dan Aplikasinya - 36

You might also like