BAB II TINJAUAN PUSTAKA 2.1 Graf (Graph) Graf G didefinisikan sebagai pasangan himpunan (V, E) yang dinotasikan dalam bentuk G = {V(G), E(G)}, dimana V(G) adalah himpunan vertex (simpul) yang tidak kosong dan jumlahnya berhingga, dan E(G) adalah himpunan edge (sisi) yang dapat merupakan himpunan kosong. Suatu graf dimungkinkan tidak memiliki sebuah sisi pun, namun minimal harus memiliki sebuah simpul. (Chartrand dan Ortrud, 1993) Gambar 2.1 Graf G Gambar 2.1 menunjukkan graf G dengan 4 buah vertex, yaitu: V1, V2, V3, V4 dan 4 buah edge, yaitu: e1, e2, e3, e4. 2.2 Upagraf (Subgraph) Graf H disebut upagraf, jika setiap vertex pada graf H juga merupakan vertex pada graf G, dan setiap edge pada graf H juga merupakan edge pada graf G. Yang 6
7 dinotasikan, H upagraf dari G jika V(H) ϲ V(G) dan E(H) ϲ E(G). (Chartrand dan Ortrud, 1993) Gambar 2.2 Graf G dan 3 Contoh Upagrafnya H 1, H 2, H 3 2.3 Terminologi dalam Graf Adapun beberapa terminologi atau istilah dasar dalam graf yang akan dibahas pada bab ini terkait dengan permasalahan penelitian, antara lain: 2.3.1 Ketetanggaan (Adjacent) Misalkan e = (u, v) menghubungkan vertex u dan v. Jika e = (u, v) adalah edge di graf G, maka u dan v disebut saling adjacent. (Santoso, 1993) 2.3.2 Keterkaitan (Incident) Misalkan e = (u, v) menghubungkan vertex u dan v. Jika e = (u, v) adalah edge di graf G, maka u dan e serta v dan e disebut saling incident. (Santoso, 1993) Gambar 2.3 Adjacent dan Incident
8 2.3.3 Derajat (Degree) Derajat adalah jumlah edge yang bersisian dengan suatu vertex. Derajat dinotasikan dengan d(v), yang menyatakan derajat vertex v. (Chartrand dan Lesniak, 1986) 2.3.4 Gelang (Loop) Loop adalah edge yang berawal dan berakhir pada suatu vertex yang sama. (Chartrand dan Lesniak, 1986) Gambar 2.4 Loop 2.3.5 Jalan (Walk) Walk dari vertex u menuju vertex v adalah urutan dari vertex-vertex dan edge-edge dari G yang dimulai dari vertex u dan berakhir pada vertex v, sehingga setiap edge incident dengan vertex yang terdahulu dan vertex yang berikutnya. (Roman, 1989) Contoh walk pada gambar 2.5 di bawah adalah: V1, e1, V2. 2.3.6 Lintasan (Path) Path dari vertex u menuju vertex v adalah walk dari vertex u menuju vertex v, dimana tidak ada vertex yang dilalui lebih dari satu kali. (Roman, 1989) Contoh path pada gambar 2.5 di bawah adalah: V1, e1, V2, e2, V3, e3, V4, e4, V5.
9 2.3.7 Jejak (Trail) Trail dari vertex u menuju vertex v adalah walk dari vertex u menuju vertex v, dimana tidak ada edge yang dilalui lebih dari satu kali. (Roman, 1989) Contoh trail pada gambar 2.5 di bawah adalah: V1, e1, V2, e2, V3, e3, V4, e4, V5. 2.3.8 Siklus (Cycle) Path tertutup disebut cycle. (Roman, 1989) Contoh cycle pada gambar 2.5 di bawah adalah: V1, e1, V2, e2, V3, e6, V1. 2.3.9 Sirkuit (Circuit) Trail tertutup disebut circuit. (Roman, 1989) Contoh circuit pada gambar 2.5 di bawah adalah: V1, e1, V2, e2, V3, e3, V4, e4, V5, e5, V3, e6, V1. Gambar 2.5 Walk, Path, Trail, Cycle, dan Circuit 2.4 Jenis-Jenis Graf Adapun beberapa dari jenis-jenis graf yang akan dibahas pada bab ini terkait dengan permasalahan penelitian, antara lain:
10 2.4.1 Berdasarkan Ada Tidaknya Sisi Ganda 2.4.1.1 Graf Sederhana (Simple Graph) Graf Sederhana adalah graf yang tidak mengandung sisi ganda maupun gelang. Pada graf ini, sisi adalah pasangan tak-terurut. Jadi, (u,v) = (v,u). Dapat pula didefinisikan, graf sederhana G = (V,E) terdiri dari himpunan tidak kosong simpulsimpul dan E adalah himpunan pasangan tak-terurut yang berbeda yang disebut sisi. (Munir, 2005) Gambar 2.6 Graf Sederhana 2.4.1.2 Graf Tak-Sederhana (Unsimple Graph) Graf Tak-Sederhana adalah graf yang mengandung sisi ganda maupun gelang. Graf tak-sederhana ada dua macam, yaitu: graf ganda dan graf semu. Graf Ganda adalah graf yang memiliki sisi ganda. Sisi ganda yang menghubungkan sepasang simpul tersebut bisa saja lebih dari dua buah. Sisi ganda dapat diasosiasikan sebagai pasangan tak-terurut yang sama. (Munir, 2005)
11 Gambar 2.7 Graf Tak-Sederhana (Graf Ganda) Graf Semu adalah graf yang tidak memiliki sisi ganda tetapi memiliki sisi semu. Sisi semu ini biasanya berbentuk gelang (loop). Jadi, graf semu dapat didefinisikan sebagai graf yang mengandung loop. (Munir, 2005) Gambar 2.8 Graf Tak-Sederhana (Graf Semu) 2.4.2 Berdasarkan Ada Tidaknya Orientasi Arah 2.4.2.1 Graf Berarah (Directed Graph) Graf berarah adalah graf yang setiap sisinya mempunyai orientasi arah. Pada graf berarah, urutan pasangan simpul yang dihubungkan oleh sisi diperhatikan, yaitu (u,v) (v,u). (Munir, 2005)
12 Gambar 2.9 Graf Berarah 2.4.2.2 Graf Tak-Berarah (Undirected Graph) Graf Tak-Berarah adalah graf yang sisi-sisinya tidak mempunyai orientasi arah. Pada graf tak-berarah, urutan pasangan simpul yang dihubungkan oleh sisi tidak diperhatikan, yaitu (u,v) = (v,u). (Munir, 2005) Gambar 2.10 Graf Tak-Berarah 2.4.3 Berdasarkan Ada Tidaknya Keterhubungan 2.4.3.1 Graf Terhubung (Connected Graph) 2.4.3.2 Graf Tak-Terhubung (Disconnected Graph) Graf G disebut graf terhubung jika untuk setiap pasang simpul u dan v di dalam himpunan V terdapat lintasan dari u ke v juga. Jika tidak, maka graf G disebut graf tak-terhubung. (Munir, 2005)
13 Gambar 2.11 Graf Terhubung Gambar 2.12 Graf Tak-Terhubung Selain graf-graf berdasarkan sifat-sifat di atas, beberapa jenis graf lainnya yang erat kaitannya dengan permasalahan penelitian ini, antara lain: 2.4.4 Graf Lingkaran (Circle Graph) Graf lingkaran adalah graf sederhana yang setiap simpulnya berderajat dua. Graf lingkaran dengan n buah simpul dinotasikan dengan Cn. Jika simpul-simpul pada Cn adalah V1, V2,, Vn, maka sisi-sisinya adalah (V1, V2), (V2, V3),, (Vn, V1). (Munir, 2005) Gambar 2.13 Graf Lingkaran C 6
14 2.4.5 Graf Lengkap (Complete Graph) Graf lengkap adalah graf sederhana yang setiap simpulnya mempunyai sisi ke semua simpul lainnya. Graf lengkap dengan n buah simpul dinotasikan dengan Kn. Dimana, setiap simpul pada Kn berderajat n-1. (Munir, 2005) Gambar 2.14 Graf Lengkap K 4 2.4.6 Graf Berbobot (Weighted Graph) Graf berbobot adalah graf yang setiap sisinya diberi sebuah bobot. Bobot pada setiap graf dapat berbeda-beda bergantung pada masalah yang dimodelkan dengan graf tersebut. Apabila terdapat sebuah fungsi bobot bernilai real W pada himpunan E, W : E R, maka nilai W(e) disebut bobot untuk sisi e, dengan e E. Graf berbobot dapat pula dinyatakan dengan G = (V, E, W). Dimana bobot yang terdapat pada edge merupakan suatu bilangan real tak-negatif. (Chartrand dan Lesniak, 1986) Gambar 2.15 Graf Berbobot
15 Berdasarkan gambar 2.15 di atas, dapat diketahui bobot dari masing-masing edge, adalah: (V1,V2) = 2 (V2,V3) = 1 (V1,V3) = 7 (V3,V4) = 4 (V1,V4) = 5 2.5 Representasi Graf Selain dengan gambar, suatu pemodelan graf juga dapat direpresentasikan dengan menggunakan matrik, yaitu: 2.5.1 Matrik Ketetanggaan (Adjacency Matrix) Matrik ketetanggaan adalah matrik yang menyatakan hubungan adjacency atau ketetanggaan dari setiap vertex yang terdapat pada graf tersebut. (Chartrand dan Lesniak, 1986). Misalkan diberikan graf G sebagai berikut, maka matriks ketetanggaannya adalah: Gambar 2.16 Matrik Ketetanggaan
16 2.5.2 Matrik Keterkaitan (Incidency Matrix) Matrik keterkaitan adalah matrik yang menyatakan hubungan incidency atau keterkaitan dari edge dan vertex yang terdapat pada graf tersebut. (Chartrand dan Lesniak, 1986). Misalkan diberikan graf G sebagai berikut, maka matrik keterkaitannya adalah: Gambar 2.17 Matrik Keterkaitan 2.6 Pohon (Tree) Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit. Dalam suatu pohon, simpul berderajat 1 dinamakan daun (leaf) atau simpul terminal (terminal vertex), sedangkan simpul yang berderajat lebih dari 1 dinamakan simpul cabang (branch vertex) atau simpul internal (internal vertex). (Munir, 2005) Gambar 2.18 Pohon
17 Gambar 2.18 menunjukkan G = {V(G), E(G)} dengan V(G) = {a, b, c, d, e, f, g, h} dan E(G) = {ab, bc, cd, cg, ch, de, df}. Dimana, simpul a, e, f, g, h adalah daun, sedangkan simpul b, c, d adalah cabang. 2.7 Sifat-Sifat Pohon (Tree s Properties) Misalkan G = (V, E) adalah graf tak-berarah sederhana dan jumlah simpulnya n. Maka, menurut Munir (2005) semua pernyataan di bawah ini adalah ekivalen: 1. G adalah pohon. 2. Setiap pasang simpul di dalam G terhubung dengan lintasan tunggal. 3. G terhubung dan memiliki m = n-1 buah sisi. 4. G tidak mengandung sirkuit dan memiliki m = n-1 buah sisi. 5. G tidak mengandung sirkuit dan penambahan satu sisi pada graf hanya akan membuat satu sirkuit. 6. G terhubung dan semua sisinya adalah jembatan (jembatan adalah sisi yang bila dihapus menyebabkan graf terpecah menjadi dua komponen). 2.8 Pohon Merentang (Spanning Tree) Misalkan G = (V, E) adalah graf tak-berarah terhubung yang bukan pohon, berarti di G terdapat beberapa sirkuit. G dapat diubah menjadi pohon T = (V1, E1) dengan cara memutuskan sirkuit-sirkuit yang ada. Mula-mula dengan memilih sebuah sirkuit, lalu hapus satu buah sisi dari sirkuit ini. G akan tetap terhubung dan jumlah sirkuitnya berkurang satu. Bila proses ini dilakukan berulang-ulang sampai semua
18 sirkuit di G hilang, maka graf G akan menjadi pohon T, yang dinamakan pohon merentang. (Munir, 2005) Gambar 2.19 Graf G dan 4 Contoh Pohon Merentangnya T 1, T 2, T 3, T 4 2.9 Pohon Merentang Minimum (Minimum Spanning Tree) Jika G adalah graf berbobot, maka bobot pohon merentang T dari G didefinisikan sebagai jumlah bobot semua sisi pada pohon merentang T tersebut. Pohon merentang yang berbeda memiliki bobot yang berbeda pula. Di antara semua pohon merentang di G, pohon merentang yang memiliki bobot paling minimum, dinamakan pohon merentang minimum. (Munir, 2005) Gambar 2.20 Graf dan Pohon Merentang Minimumnya
19 2.10 Hutan (Forest) Hutan adalah kumpulan pohon yang saling lepas. Dengan kata lain, hutan merupakan graf tak-terhubung yang tidak mengandung sirkuit, dimana setiap komponen dalam graf terhubung tersebut adalah pohon. (Munir, 2005) Gambar 2.21 Hutan 2.11 Algoritma (Algorithm) Algoritma merupakan kumpulan urutan logis pengambilan keputusan untuk memecahan suatu permasalahan. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir, dengan kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria. Algoritma seringkali memiliki langkah pengulangan (iterasi) yang memerlukan keputusan sampai tugasnya selesai. (id.wikipedia.org, 2010)
20 2.12 Algoritma Prim (Prim s Algorithm) 2.12.1 Sejarah Algoritma Prim Algoritma Prim adalah sebuah algoritma dalam teori graf untuk mencari pohon merentang minimum pada sebuah graf berbobot yang saling terhubung dengan mencari edge yang membentuk suatu pohon yang mengandung vertex, dimana bobot keseluruhan edge dalam pohon diminimumkan. Bila graf tidak terhubung, maka graf tersebut hanya memiliki satu pohon merentang minimum untuk satu komponen yang terhubung. Algoritma ini pertama kali ditemukan tahun 1930 oleh matematikawan Vojtěch Jarník, dan secara terpisah ditemukan kembali oleh ilmuwan komputer Robert C. Prim pada tahun 1957. (id.wikipedia.org, 2010) 2.12.2 Konsep Algoritma Prim Konsep dasar yang digunakan dalam algoritma Prim adalah pada setiap langkah, pilih sisi dari graf G yang berbobot minimum, yang terhubung dengan pohon merentang T, tetapi sisi tersebut tidak membentuk sirkuit di T. (Munir, 2005) Algoritma: 1. Ambil sisi pada graf G yang berbobot minimum dan masukkan ke dalam T. 2. Pilih sisi (u,v) yang memiliki bobot minimum dan bersisian dengan T, tetapi (u,v) tidak membentuk sirkuit di T. Lalu tambahkan (u,v) ke dalam T. 3. Ulangi langkah (2.) sampai pohon merentang minimum terbentuk, yaitu sebanyak n-2 kali (n adalah jumlah simpul dalam graf G). ( jumlah langkah seluruhnya: 1 + (n-2) = n-1 )
21 Penulisan algoritma Prim dalam bentuk notasi algoritmik (pseudocode): 2.13 Algoritma Kruskal (Kruskal s Algorithm) 2.13.1 Sejarah Algoritma Kruskal Algoritma Kruskal adalah suatu algoritma di dalam teori graf yang digunakan untuk mengkonstruksi pohon merentang minimum di dalam graf berbobot terhubung secara berurutan dari sisi yang berbobot terkecil hingga berbobot terbesar, namun tidak diperkenankan membentuk cycle. Ini berarti menemukan himpunan bagian dari edge yang membentuk sebuah pohon yang mencakup setiap vertex, dengan berat total dari semua edge pada pohon diminimumkan. Algoritma ini pertama kali muncul dalam Proceedings of The American Mathematical Society pada tahun 1956, yang ditulis oleh ilmuwan Joseph Kruskal. (id.wikipedia.org, 2010)
22 2.13.2 Konsep Algoritma Kruskal Konsep dasar yang digunakan dalam algoritma Kruskal adalah pada setiap langkah, pilih sisi dari graf G yang berbobot minimum, tetapi sisi tersebut tidak membentuk sirkuit di T. (Munir, 2005) Algoritma: 1. Lakukan pengurutan terhadap setiap sisi pada graf G, dimulai dari sisi dengan bobot terkecil hingga terbesar. 2. Pilih sisi (u,v) yang memiliki bobot minimum, tetapi (u,v) tidak membentuk sirkuit di T. Lalu tambahkan (u,v) ke dalam T. 3. Ulangi langkah (2.) sampai pohon merentang minimum terbentuk, yaitu sebanyak n-1 kali (n adalah jumlah simpul dalam graf G). Penulisan algoritma Kruskal dalam bentuk notasi algoritmik (pseudocode):
23 2.14 Optimasi Optimasi merupakan kata kerja yang berasal dari kata sifat yaitu optimal yang berarti terbaik. Dimana, optimasi itu sendiri berarti pencarian nilai terbaik dari yang tersedia. (Istijanto, 2005) 2.15 Pemecahan Masalah Optimasi Pemecahan masalah optimasi adalah pemecahan masalah yang bertujuan untuk memperoleh solusi terbaik dari semua solusi yang tersedia, yang berada dalam daerah yang mungkin (feasible region), yang memiliki nilai maksimum atau minimum dari fungsi objektif pada suatu konteks, sehingga dapat diperoleh keuntungan yang besar. (Istijanto, 2005)