dari elemen graf yang disebut verteks (node, point), sedangkan, atau biasa disebut (), adalah himpunan pasangan tak terurut yang menghubungkan dua elemen subset dari yang disebut sisi (edge, line). Setiap sisi {, } pada biasanya dinotasikan dengan atau. (Chartrand & Zhang 009) Definisi (Order dan size graf) Banyaknya verteks dari suatu graf disebut order dan banyaknya sisi pada suatu graf disebut size dari graf. : merupakan himpunan sisi-sisi tidak berarah pada. (Yaoyuenyong et al. 00) : 7 8 6 9 Gambar Graf campuran. Pada Gambar, sisi, 9, dan 6 merupakan sisi berarah, sisi,,, 7, dan 8 merupakan sisi yang tidak berarah. Gambar Graf = (, ). Pada Gambar diperlihatkan bahwa =,,, dan = {{, }, {, }, {, }}. Order dari graf pada Gambar ialah dan size-nya ialah. Definisi (Graf berarah/digraf) Graf berarah adalah pasangan terurut (, ) dengan himpunan takkosong yang hingga, dan himpunan pasangan terurut yang menghubungkan elemen-elemen di. Elemen-elemen dari disebut sisi berarah (arc). Sisi berarah (, ) dinyatakan dengan garis berarah dari ke. : (Chartrand & Zhang 009) Gambar Graf berarah = (, ). Pada Gambar diperlihatkan bahwa =,,, dan = {(, ), (, ), (, )}. Definisi (Graf campuran) Graf campuran = (, ) merupakan graf yang memiliki dua jenis sisi, yakni sisi yang berarah dan tidak berarah. merupakan himpunan sisi-sisi berarah pada dan Definisi (Graf/digraf berbobot) Suatu graf =, atau digraf =, dikatakan berbobot jika terdapat sebuah fungsi : atau : (dengan adalah himpunan bilangan real) yang memberikan sebuah bilangan real, disebut bobot, pada setiap sisi di atau sisi berarah di. Setiap bobot dengan atau dinotasikan dengan. : 8 7 0 Gambar Graf berbobot. (Foulds 99) Bobot tiap sisi untuk graf pada Gambar adalah = 8, =, = 7, = 0. Definisi 6 (Adjacent dan incident) Misalkan dan verteks pada graf. Verteks dikatakan tetangga (adjacent) dari jika ada sisi yang menghubungkan verteks dan, yaitu =. Himpunan semua tetangga dari verteks dinotasikan dengan (). Jika = adalah sisi pada graf maka dikatakan incident dengan verteks dan. (Chartrand & Zhang 009)
: 6 Gambar Adjacent dan incident. Ilustrasi adjacent dan incident diperlihatkan pada Gambar. Verteks adjacent dengan,, dan. Verteks incident dengan tetapi tidak incident dengan. Definisi 7 (Graf lengkap) Suatu graf yang ber-order dengan setiap verteks pada adjacent dengan verteks lainnya disebut graf lengkap, dinotasikan dengan. (Chartrand & Oellermann 99) Pada Gambar diperlihatkan bahwa setiap verteks adjacent dengan verteks lainnya, sehingga graf pada Gambar merupakan graf lengkap. Definisi 8 (Multigraf/multidigraf) Suatu graf/digraf dikatakan multigraf atau multidigraf bila graf/digraf tersebut memiliki lebih dari satu sisi/sisi berarah yang incident dengan satu pasang verteks. (Foulds 99) Ilustrasi multigraf dapat dilihat pada Gambar 6 berikut. : : Gambar 7 Multidigraf. Definisi 9 (Derajat/degree) Derajat suatu verteks adalah banyaknya sisi yang incident dengan verteks, dan dinotasikan dengan deg atau (). Jika banyaknya simpul yang incident dengan verteks adalah bilangan ganjil, maka dikatakan berderajat ganjil. Jika banyaknya simpul yang incident dengan verteks adalah bilangan genap, maka dikatakan berderajat genap. : Gambar 8 Ilustrasi derajat pada graf. Pada Gambar 8 terlihat bahwa verteks,, dan berderajat genap, sedangkan verteks dan berderajat ganjil. Definisi 0 (Graf genap) Suatu graf dikatakan graf genap, jika setiap verteksnya berderajat genap. (Eiselt et al. 99) : Gambar 9 Graf genap. Gambar 6 Multigraf. Gambar 6 merupakan contoh multigraf karena verteks dan dihubungkan oleh lebih dari satu sisi. Ilustrasi multidigraf bisa dilihat pada Gambar 7 berikut. Ilustrasi graf genap bisa dilihat pada Gambar 9, karena pada Gambar 9 setiap verteks berderajat genap. Definisi (Derajat masuk/in-degree) Pada graf berarah, in-degree suatu verteks, yang dinotasikan dengan ( ), adalah
banyaknya sisi berarah yang berakhir di verteks. Pada Gambar diperlihatkan derajat masuk tiap verteksnya = 0, =, =, =. Definisi (Derajat keluar/out-degree) Pada graf berarah, out-degree suatu verteks, yang dinotasikan dengan + ( ), adalah banyaknya sisi berarah yang dimulai pada verteks. Pada Gambar diperlihatkan derajat keluar tiap verteksnya + =, + = 0, + = 0, + =. Definisi (Digraf balans) Suatu digraf dikatakan balans jika setiap verteks pada digraf tersebut memiliki = 0, dengan adalah selisih dari derajat masuk dengan derajat keluar verteks. (Diestel 997) : Definisi (Graf campuran genap) Suatu graf campuran dikatakan graf genap jika underlying graph-nya berupa graf genap. (Assad & Golden 99) : Gambar Graf campuran. Pada Gambar, graf tersebut berupa graf genap dengan underlying graph-nya bisa dilihat pada Gambar 9. Definisi 6 (Jalan/walk) Walk pada suatu graf adalah barisan berhingga, = + + atau = + yang dimulai dari suatu verteks dan berakhir pada suatu verteks juga, sehingga setiap sisi di dalam barisan harus incident dengan verteks sebelum dan sesudahnya. (Chartrand & Zhang 009) Definisi 7 (Walk berarah) Walk berarah pada suatu digraf adalah walk yang sesuai dengan arah sisinya atau tidak berlawanan arah. : Gambar 0 Ilustrasi digraf balans. Digraf pada Gambar 0 adalah digraf balans karena setiap verteks memiliki = 0. Definisi (Underlying graph) Jika suatu graf didapat dengan cara menghapus semua arah dari sisi berarah pada digraf, maka graf tersebut adalah underlying graph dari digraf. Ilustrasi underlying graph bisa dilihat dari Gambar 9 dan Gambar 0. Graf pada Gambar 9 merupakan underlying graph dari digraf pada Gambar 0. Gambar Graf berarah. Ilustrasi walk berarah pada suatu digraf bisa dilihat pada Gambar. = adalah walk berarah. Definisi 8 (Trail) Trail pada suatu graf adalah walk dengan semua sisi dalam barisannya tidak berulang. (Chartrand & Zhang 009) Ilustrasi trail bisa dilihat pada Gambar, = adalah trail.
Definisi 9 (Path) Path pada suatu graf adalah walk yang setiap verteks pada barisannya hanya muncul satu kali. Ilustrasi path bisa dilihat pada Gambar, yaitu =. Definisi 0 (Path berarah) Path berarah pada suatu digraf adalah walk berarah dengan semua verteks dalam barisannya tidak berulang. Ilustrasi path berarah bisa dilihat pada Gambar. = adalah path berarah. Definisi (Sirkuit) Pada graf tidak berarah, sirkuit adalah trail tertutup yang takkosong. (Chartrand & Zhang 009) Ilustrasi sirkuit bisa dilihat pada Gambar, yaitu = 6. Definisi (Sirkuit berarah) Pada suatu digraf, sirkuit berarah adalah walk berarah yang tertutup sehingga barisannya dimulai dan diakhiri pada verteks yang sama dan tidak ada sisi yang diulang. Ilustrasi sirkuit berarah bisa dilihat pada Gambar, yaitu =. Definisi (Semisirkuit) Pada suatu digraf, semisirkuit adalah sirkuit pada underlying graph, tetapi bukan merupakan sirkuit berarah pada digraf tersebut. Ilustrasi semisirkuit bisa dilihat pada Gambar, yaitu =. Definisi (Cycle) Pada graf tidak berarah, cycle adalah path tertutup yang takkosong. (Chartrand & Zhang 009) Ilustrasi cycle bisa dilihat pada Gambar 8. Graf pada Gambar 8 memiliki cycle =. Definisi (Terhubung/connected) Suatu graf disebut terhubung (connected) jika untuk setiap verteks dari terhubung. Verteks dengan dikatakan terhubung jika ada setidaknya satu path dari verteks ke verteks. Definisi 6 (Digraf terhubung) Suatu digraf dikatakan terhubung (connected) jika underlying graph-nya terhubung. (Chartrand & Oellermann 99) Definisi 7 (Subgraf) Suatu graf dikatakan subgraf dari graf jika () () dan () (). (Chartrand & Oellermann 99) Graf pada Gambar merupakan subgraf dari graf pada Gambar 8. Definisi 8 (Spanning subgraph) Suatu subgraf dikatakan spanning subgraph jika subgraf tersebut mengandung semua verteks pada graf. Graf pada Gambar merupakan spanning subgraph dari graf pada Gambar. Definisi 9 (Tree pada graf) Suatu graf terhubung yang tidak memiliki cycle disebut tree. (Chartrand & Zhang 009) Graf pada Gambar merupakan tree. Definisi 0 (Tree pada digraf) Suatu digraf terhubung yang tidak memiliki cycle disebut tree pada digraf. (Chartrand & Zhang 009) Ilustrasi tree untuk digraf dapat dilihat pada Gambar.
6 Definisi (Spanning tree) Suatu spanning tree adalah spanning subgraph yang merupakan tree. : Gambar Graf berarah. merupakan spanning arborescence dari digraf pada Gambar 7, dengan akar arborescence-nya di. Definisi (Graf r-regular) Sebuah graf merupakan graf r-regular, atau graf regular berderajat r, jika setiap verteks pada memiliki derajat r. (Chartrand & Oellermann 99) : : Gambar 6 Graf -regular. Gambar Spanning tree. Digraf pada Gambar adalah spanning tree dari digraf pada Gambar. Definisi (Arborescence) Graf berarah disebut arborescence jika a. tidak memiliki sirkuit berarah maupun semisirkuit. b. Pada terdapat tepat satu verteks yang memiliki = 0. Verteks disebut akar arborescence. Definisi (Spanning arborescence) Spanning arborescence pada digraf adalah spanning tree yang berupa arborescence. : Pada Gambar 6, setiap verteks memiliki derajat atau graf regular berderajat. Definisi (Matching) Matching pada sebuah graf merupakan subgraf -regular, yaitu berupa himpunan sisi-sisi yang tidak adjacent. (Chartrand & Oellermann 99) : 6 7 Gambar 7 Graf untuk ilustrasi matching. = {,, } adalah salah satu matching pada graf di Gambar 7. Definisi 6 (Matching yang Perfect) Jika adalah sebuah graf ber-order yang memiliki matching berkardinalitas /, maka matching tersebut dikatakan matching yang perfect. (Chartrand & Oellermann 99) Gambar Spanning arborescence. Ilustrasi spanning arborescence bisa dilihat pada Gambar. Digraf pada Gambar
7 : pada, maka = (, ) = adalah kapasitas sisi berarah. (Chartrand & Oellermann 99) : Gambar 8 Graf untuk ilustrasi matching yang perfect. 6 Gambar 0 Network. Graf pada Gambar 8 ber-order 6 dan = {,, } merupakan matching yang berkardinalitas, sehingga adalah matching yang perfect. Definisi 7 (Matching berbobot minimum) Matching berbobot minimum merupakan matching dengan jumlah bobot pada sisinya adalah minimum. (Chartrand & Oellermann 99) : 6 Gambar 9 Graf berbobot. Matching yang perfect pada graf Gambar 9 hanya = {,,.,, } dengan bobot 0 dan = {,,,,, } dengan bobot 6. Jadi, adalah matching yang perfect dengan bobot minimum. Definisi 8 (Network) Secara umum, network merupakan sebuah digraf atau graf berarah = (, ) dengan dua verteks spesial yaitu verteks yang disebut source dan verteks yang disebut sink, serta memiliki fungsi pada yang bernilai integer taknegatif yang disebut kapasitas. Jika = (, ) adalah sebuah arc Network pada Gambar 0 menunjukkan bahwa, = dan, =. Source () pada Gambar 0 memiliki derajat masuk nol dan sink () pada Gambar 0 memiliki derajat keluar nol. Definisi 9 (Flow / arus) Suatu flow pada suatu network dengan digraf = (, ) adalah suatu pemadanan + {0} yang memadankan setiap sisi = (, ) dengan bilangan real taknegatif, sehingga memenuhi kondisi sebagai berikut :. () () untuk setiap sisi di yang dinamakan kendala kapasitas.. (, ) = (, ) { :(, )} { :(,)} untuk semua, yang dinamakan kendala konservasi. (Chartrand & Oellermann 99) Nilai = (, ) = pada sisi dapat dipandang sebagai banyaknya komoditas yang diangkut pada sisi tersebut, sedangkan kendala konservasi menyatakan bahwa total arus yang masuk ke suatu verteksantara (yaitu verteks selain verteks dan ) sama dengan total arus yang keluar dari verteks tersebut.
8 : Gambar (,) (,) (,) (,) (,) (6,) Network dengan kapasitas dan flow. Pada Gambar diberikan contoh network berikut kapasitas dan flow sisi berarah (, ). Sebagai contoh, sisi berarah (, ) memiliki kapasitas dan flow. Definisi 0 (Minimum Cost Flow) Diberikan network dengan digraf =,. Misalkan adalah biaya yang diperlukan yang melalui arc (, ) dan adalah kapasitas yang melalui arc (, ). Minimum cost flow merupakan suatu permasalahan dalam menentukan flow dengan biaya minimum pada suatu graf berarah. Formulasi matematikanya secara umum sebagai berikut Kendala { :(, )} min = (, ) { :(,)} = () 0 (, ) (Ahuja et al. 99) Nilai () menyatakan banyaknya penawaran (bila () > 0) atau permintaan (bila () < 0), dengan.. Graf Euler Leonhard Euler (707-78) adalah seorang peneliti yang lahir di Swiss. Ia dipandang sebagai salah satu matematikawan terbesar sepanjang masa. Leonhard Euler menyumbangkan berbagai penemuan penting di bidang yang beragam seperti kalkulus dan teori graf. Dalam penelitiannya di bidang teori graf, Euler mengenalkan penemuan yang paling terkenal yaitu graf Euler. Berikut ini akan dijelaskan beberapa definisi dan teorema yang berkaitan dengan graf Euler yang digunakan dalam karya ilmiah ini. Definisi (Sirkuit Euler) Sirkuit Euler adalah sirkuit yang melewati semua sisi pada graf tepat satu kali. : 6 Gambar Graf Euler. Ilustrasi sirkuit Euler bisa dilihat pada Gambar. Sirkuit Euler pada graf salah satunya = 6. Definisi (Graf/digraf Euler) Graf atau digraf yang memiliki sirkuit Euler disebut graf atau digraf Euler. Graf pada Gambar merupakan graf Euler, karena graf tersebut memiliki sirkuit Euler. Teorema (Graf Euler pada graf campuran) Misalkan diberikan graf campuran = (, ), dengan himpunan sisi tak berarah dan himpunan sisi berarah. Graf campuran memiliki sirkuit Euler jika dan hanya jika a. terhubung dan genap b. untuk setiap (), berlaku,,, dengan, adalah banyaknya sisi berarah yang berawal dari suatu verteks di dan berakhir di suatu verteks di, sedangkan, merupakan banyaknya sisi tidak berarah yang menghubungkan verteks di dengan verteks di, dan = \. (Assad & Golden 99) Graf pada Gambar berikut tidak memiliki sirkuit Euler, walaupun syarat (a) sudah terpenuhi, namun syarat (b) tidak terpenuhi.
9 Misalkan =, maka =,,,,6, sehingga nilai, = 0,, =,, = 0, dan,, = 0 > 0 =,, berarti terdapat (), sehingga berlaku,, >, Jadi syarat (b) tidak dipenuhi. : Gambar Graf campuran yang bukan graf Euler. Graf pada Gambar berikut merupakan graf terhubung dan genap (syarat (a) terpenuhi). : Gambar Graf Euler. Tabel Penentuan syarat (b) berdasarkan graf pada Gambar,,, {} {,} 0 {} {,} 0 {} {,} 0 {,} {} 0, {} 0 {,} {} 0 {,,} 0 0 0 {,,} 0 0 0 Dari Tabel, dapat disimpulkan bahwa untuk setiap (), berlaku,,,. Jadi kriteria (b) pada Teorema juga dipenuhi. Akibatnya mempunyai sirkuit Euler dan contoh sirkuit Eulernya adalah. 6. Algoritme van Aardenne-Ehrenfest & de Bruijn Banyak algoritme yang dapat digunakan dalam pencarian sirkuit Euler dalam suatu digraf. Salah satu dari algoritme itu adalah algoritme van Aardenne-Ehrenfest & de Bruijn (Balakrishnan 997). Berikut ini akan dibahas langkah-langkah algoritme tersebut. Langkah 0. Diberikan digraf. Langkah. Dibangun sebuah spanning arborescence dari digraf yang berakar di. Langkah. Sisi berarah yang keluar dari dan verteks-verteks lain diurutkan dan dilabeli sedemikian hingga sisi berarah terakhir yang dilabeli adalah sisi berarah pada arborescence. Langkah. Dimulai dari sembarang verteks, sisi berarah dengan label terendah yang belum dilewati dipilih untuk sampai ke verteks berikutnya. Prosedur ini dilanjutkan hingga semua sisi berarah telah dilewati. Berikut ini contoh sederhana untuk mengimplementasikan algoritme van Aardenne-Ehrenfest & de Bruijn pada sebuah digraf Euler. Langkah 0. Diberikan digraf Euler seperti pada Gambar. Gambar Digraf Euler. Langkah. Spanning arborescence dari graf pada Gambar yang berawal di verteks adalah sebagai berikut : Gambar 6 Spanning arborescence.
0 Langkah. Semua sisi berarah diurutkan dan dilabeli dimulai dari verteks secara sembarang dengan label terakhir adalah label untuk sisi berarah yang dipakai di arborescence, sehingga label digraf menjadi seperti berikut. L L L L L L L L L Gambar 7 Pelabelan pada sisi berarah. Langkah. Sirkuit Euler yang diperoleh, misalkan dimulai dari verteks, adalah :, dengan total bobot. Solusi sirkuit Euler yang diperoleh tidak hanya seperti di atas. Jika dimulai dari verteks lain, maka yang dilaluinya pun berbeda namun dengan total bobot yang sama.. Algoritme Dijkstra Algoritme ini bisa digunakan untuk mencari path terpendek atau jarak terpendek pada graf atau digraf atau graf campuran yang tidak berbobot maupun yang berbobot pada graf ber-order. Misalkan diberikan graf berbobot = (, ) dengan himpunan = {,,,. } dan bobot pada tiap verteksnya taknegatif. Pada setiap langkah dalam algoritme didefinisikan sebuah variabel PARENT(v) yang menyatakan verteks yang mendahului verteks v pada path terpendek yang telah diperoleh. Variabel PARENT(v) diperbaharui jika ditemukan path yang lebih pendek. Misalkan adalah himpunan semua verteks dari yang jaraknya dengan 0 sudah ditentukan. Langkah-langkah algoritme penentuan path terpendek yang dimulai dari verteks ialah sebagai berikut. a. inisialisasikan sebuah verteks awal 0 dengan jarak 0 = 0, ( 0), { 0 }, { 0 }, dan jarak verteks lainnya bernilai untuk semua { 0 }, PARENT 0 ; jika =, maka proses dihentikan; lainnya, proses dilanjutkan. b. untuk setiap, sehingga (), diperiksa: Jika + ( ), maka proses dilanjutkan; lainnya, + ( ) dan PARENT(), c. ditentukan = min{() }. Jika yang dipilih sebagai verteks dengan =, maka merupakan jarak antara 0 dengan, dan +, d. { + } dan { + }, e. +. Jika =, proses dihentikan; lainnya kembali ke langkah b. (Chartrand & Oellermann 99) Berikut ini diberikan contoh penggunaan algoritme Dijkstra pada graf tidak berarah. Diberikan graf berbobot berikut : : 6 8 8 6 6 Gambar 8 Graf contoh algoritme Dijkstra. Akan ditentukan jarak terpendek dari satu verteks ke verteks lainnya. Misalkan verteks awalnya adalah verteks, maka dengan algoritme Dijkstra akan diperoleh path terpendek dari verteks menuju verteks lain seperti pada Gambar 9 (penghitungan lebih lengkap dapat dilihat pada Lampiran ). : 6 6 Gambar 9 Solusi path terpendek algoritme Dijkstra dengan verteks awal. Misalkan dicari jarak terdekat dari verteks ke verteks pada graf Gambar 9, maka path-nya adalah = dengan jarak 8. 8 7 7 8