1
1. Pengantar Teori Graph
Oleh : Ade Nurhopipah
Pokok Bahasan :
1. Graph, Digraph dan Network 2. Klasifikasi Masalah
3. Pencarian Solusi
Sumber :
Aldous, Joan M. ,Wilson, Robin J. 2004. Graph and Applications. Springer: UK.
Pencarian Rute
Untuk memperkenalkan konsep graph, kita akan meninjau beberapa permasalahan dan representasinya dalam sebuah diagram. Pertama kita akan meninjau permasalahan pencarian rute. Gambar 1.1 menunjukan peta stasiun di London. Peta tersebut tidak menunjukan semua fitur dari area tersebut, seperti lokasi geografis stasiun, atau informasi jarak antar dua stasiun. Peta tersebut hanya menunjukan fitur yang sesuai dengan kebutuhan orang yang memakainya yaitu menunjukan keterhubungan antar stasiun, sehingga penumpang dapat melihat rute dari satu stasiun ke stasiun lainnya.
Gambar 1.1 Contoh peta stasiun kereta api
Pada peta tersebut, jika kita mencari suatu rute terbaik antar dua stasiun, maka interpretasi atas “rute terbaik” mungkin tidak selalu sama. Bisa saja rute terbaik merupakan rute dengan minimal stasiun yang dilewati, atau karena pergantian kereta memakan waktu, maka rute terbaik merupakan rute dengan pergantian kereta yang minimal.
2 Gambar 1.2 Contoh peta jalan antar kota dan waktu tempuhnya
Latihan 1.1
Berdasarkan peta pada Gambar 1.2 carilah waktu terpendek ketika kita ingin pergi dari Los Angeles ke Oklahoma City.
Bidang Kimia
Sebuah molekul adalah kumpulan sejumlah atom yang terhubung dengan ikatan kimia. Suatu alkana (paraffin) adalah suatu molekul dengan rumus CnH2n+2, di mana setiap atom karbon (C)
diikat oleh tepat empat atom, dan masing-masing atom hidrogen (H) diikat oleh tepat sebuah atom. Suatu molekul methana (CH4) mengandung satu atam karbon yang berikatan dengan empat atom
hidrogen. Begitu juga molekul ethana (C2H6) memiliki dua atom karbon yang berikatan dengan enam
atom hidrogen. Gambar 1.3 menunjukan ikatan atom pada molekul methana dan ethana.
Gambar 1.3 Molekul methana dan ethana
3 Gambar 1.4 Letak atom dalam molekul methana
Walaupun demikian, diagram yang kita buat bermanfaat untuk mengilustrasikan hubungan antar atom, dan kita dapat memperoleh banyak informasi tentang perilaku kimia dari sebuah molekul dengan mempelajari diagram tersebut. Alkana yang memiliki rumus CnH2n+2 graph-nya
memiliki cabang seperti struktur tree. Jika ada empat atau lebih atom karbon, maka akan terdapat molekul berbeda yang terbangun dengan rumus kimia yang sama (dikenal sebagai isomer). Sebagai contoh untuk rumus kimia C5H12 kita dapat membuat dua diagram yang berbeda seperti ditunjukan
pada Gambar 1.5.
Gambar 1.5 Dua molekul yang terbentuk dengan rumus kimia C5H12
Latihan 1.2
Tunjukan bahwa hanya ada satu alkana dengan rumus C3H8, namun ada dua alkana dengan
rumus C4H10.
Masalah Utilitas
4 Gambar 1.6 Ilustrasi masalah utilitas
Masalah utilitas juga berhubungan dengan masalah praktis yang timbul dalam kajian tentang sirkuit cetak. Dalam masalah ini, komponen elektronik dibangun dengan cara mencetak jalur-jalur pada sebuah papan. Jalur-jalur tersebut tidak berpotongan karena dapat menimbulkan kontak elektrik yang tidak diinginkan pada titik perpotongannya.
Latihan 1.3
Sirkuit mana pada diagram berikut yang dapat anda gambar kembali tanpa ada titik yang saling berpotongan.
Pada beberapa masalah yang telah kita pelajari, kita perhatikan bahwa semua permasalahan memiliki pola yang sama, yaitu suatu kumpulan objek yang memiliki relasi dengan berbagai cara. Stasiun saling terhubung dengan rel, atom-atom saling terhubung dengan ikatan, dan rumah saling terhubung dengan utilitas. Pada setiap kasus, kita dapat menggambar sebuah diagram di mana kita merepresentasikan objek dengan titik, dan interkoneksi antara pasangan objek dengan garis (tidak harus garis lurus). Diagram seperti inilah yang disebut dengan graph. Perhatikan contoh sebuah graph pada Gambar 1.7. Pada suatu graph, titik yang mewakili objek disebut vertex dan garis yang mewakili interkoneksinya tersebut disebut edge (sisi).
5 Secara umum, kita menyatakan ide tentang graph, sebagai berikut.
Graph adalah sebuah diagram yang terdiri dari titik-titik (disebut vertex) yang dihubungkan dengan garis-garis (disebut edge). Setiap edge menghubungkan tepat dua vertex.
Sebagai catatan, istilah ini tidak sepenuhnya standar, ada yang menyebut vertex dengan
node atau point, dan ada pula yang menyebut edge dengan line.
Pada problem utilitas, masalah tersebut dapat direpresentasikan oleh sebuah graph dengan enam vertex yang mewakili tiga rumah dan tiga utilitas, dan sembilan edge yang mewakili sembilan kemungkinan koneksi. Masalah utilitas adalah masalah bagaimana membentuk suatu diagram, sehingga tidak ada edge yang berpotongan. Catat bahwa ketiga rumah tersebut tidak saling terhubung, begitu juga ketiga utilitas. Graph seperti ini, di mana vertex terbagi ke dalam dua himpunan (himpunan rumah dan himpunan utilitas), dan edge pada graph tersebut hanya menghubungkan dua vertex pada himpunan yang berbeda, disebut graph bipartit. Gambar 1.8 menunjukan dua kemungkinan cara menggambar graph tersebut.
Gambar 1.8 Graph untuk masalah utilitas
Contoh lain untuk menunjukan konsep graph dalam menggambarkan hubungan antar objek adalah representasi graph untuk permainan sepak bola. Gambar 1.9 menggambarkan graph permainan sepak bola, di mana Arsenal bermain dengan Chelsea dan Everton, tetapi tidak melawan Liverpool. Chelsea melawan Everton dua kali, dan Liverpool bermain dengan Everton satu kali.
6 Graph pada Gambar 1.9 memiliki empat vertex yang mewakili klub sepak bola dan lima edge yang mewakili pertandingan antara kedua klub. Gambar 1.9 juga menunjukan bahwa kita dapat menggambar sebuah graph dengan berbagai cara, selama ia mewakili keterhubungan yang sama sehingga mewakili permasalahan yang disajikan.
Latihan 1.4
1. Gambar sebuah graph yang mewakili pertemanan antara empat orang berikut. Andi berteman dengan Oki dan Ika, tapi tidak dengan Jaka
Jaka berteman dengan Ika, tapi tidak dengan Oki. Oki berteman dengan Ika.
2. Sebuah labirin dapat direpresentasikan dengan sebuah graph. Pada labirin tersebut terdapat pilihan yang mungkin pada masing-masing persimpangan. Sebagai contoh, pada persimpangan B ada dua pilihan, yaitu pergi ke C atau ke D. Berikut adalah representasi labirin ke dalam bentuk graph.
Gunakanlah graph tersebut untuk mendaftar semua rute dari titik A ke titik L tanpa melibatkan titik yang sudah dilalui.
Masalah Jembatan Kὂnigsberg
Pada awal abad ke delapan belas, kota Kὂnigsberg di Prussia Timur memuat sebuah pulau yang disebut Kneiphof yang dikelilingi oleh sungai Pregel. Empat bagian kota (A,B,C,D) terhubung dengan tujuh buah jembatan (a,b,c,d,e,f,g) seperti ditunjukan pada Gambar 1.10.
7 Diceritakan bahwa warga Kὂnigsberg menghibur diri dengan mencoba mencari rute dengan menyebrangi setiap jembatan tepat satu kali, dan kembali ke posisi awal. Mereka mencoba sebisanya, namun tidak menemukan rute tersebut dan mulai yakin bahwa hal tersebut mustahil dilakukan. Pada masalah ini, terdapat empat area yang terhubung dengan tujuh jembatan. Kita dapat merepresentasikan hubungan ini dengan menggambar graph dengan empat vertex yang mewakili area, dan tujuh edge yang mewakili tujuh jembatan seperti ditunjukan pada Gambar 1.11.
Gambar 1.11 Representasi graph dari masalah jembatan Kὂnigsberg
Masalah menyebrangi setiap jembatan tepat satu kali kini dapat ditransformasikan ke dalam masalah graph. Masalah tersebut adalah dapatkah kita menggambar graph pada Gambar 1.11 dari suatu titik awal dan kembali ke titik tersebut tanpa mengangkat pensil dari kertas dan tanpa menggambar atau melalui edge manapun dua kali.
Masalah Kerangka Segiempat Yang Diperkuat
Banyak bangunan yang disokong dengan kerangka segiempat yang terbuat dari baja. Sangat penting bagi kita untuk memastikan bahwa kerangka tersebut tetap kaku (rigid) dibawah beban berat. Sebagai contoh Gambar 1.12 menunjukan bagaimana kerangka segiempat dapat terdistorsi.
Gambar 1.12 Kerangka segiempat yang dapat terdistorsi (non-rigid)
8 Gambar 1.13 Jumlah penahan pada kerangka segiempat
Kita dapat merepresentasikan kerangka yang diberi penahan ini dengan membuat sebuah graph. Perhatikan kerangka pada Gambar 1.14. Setiap penahan kerangka, muncul pada sebuah baris dan sebuah kolom, sehingga kita dapat mengetahui posisi penahan tersebut dengan menggambar graph. Vertex pada graph tersebut berkoresponden dengan baris dan kolom pada kerangka dan edge berkoresponden dengan penahannya. Dua vertex dihubungkan jika pada pada posisi tersebut terdapat penahan. Catat bahwa dalam kasus ini, kita memperoleh sebuah graph bipartit dengan dua buah himpunan yaitu himpunan baris dan himpunan kolom.
Gambar 1.14 Representasi graph untuk kerangka yang diperkuat
Graph Berbobot
9 Masalah Perjalanan Pedagang
Seorang pedagang ingin mengunjungi sejumlah kota dan kembali ke tempat asalnya. Rute yang diinginkan adalah rutedengan panjang total jarak terkecil. Gambar 1.15 menunjukan suatu graph berbobot yang memiliki empat vertex, dan enam edge. Pada kasus ini, bobot mewakili jarak antar kota (dalam mil). Bagaimanakah kita dapat memilih rute dengan bobot minimal untuk mengunjungi semua vertex dan kembali ke titik awal? Sebagai contoh, misalnya kita memiliki titik awal London. Dengan cara mencoba-coba, kita dapat menemukan solusi dari rute yang diinginkan yaitu: London-Conventry-Preston-Leeds-London. Total jarak yang ditempuh adalah 100+125+68+194 = 487 mil. Jika kita perhatikan, rute yang lain memiliki jarak total lebih besar.
Gambar 1.15 Graph berbobot jarak antar kota
Sayangnya jika jumlah kota semakin banyak, kita akan kesulitan menemukan solusi dengan cara mencoba-coba. Solusi yang menjanjikan untuk memecahkan masalah ini adalah dengan metode
exhaustion, yaitu dengan mencari semua kemungkinan rute dan memilih mana yang paling pendek.
Namun, metode ini bukanlah metode yang efisien untuk menyelesaikan masalah. Misalnya jika ada sepuluh kota, maka kemungkinan rute yang ada adalah ½(9!)= ½(9x8x7x6x5x4x3x2x1) = 181440. Jika ada dua puluh kota, maka kemungkinan rute yang ada adalah ½(19!)=6,08x1016. Peningkatan jumlah rute yang cepat karena penambahan kota ini dikenal sebagai masalah combinatorial explotion.
Untuk masalah dengan skala lebih besar, kita memerlukan metode langkah demi langkah yang sistematik dan efisien. Beberapa prosedur yang akan kita pelajari pada bab selanjutnya, dinilai dapat menjadi metode yang efisien sekaligus memberi pendekatan nilai dari solusi yang diinginkan.
Latihan 1.5
10
Digraph
Kita banyak menemui adanya sistem jalan satu arah di sebuah kota besar. Karena jalan tersebut satu arah, kita tidak bisa merepresentasikan sistem ini dengan sebuah graph yang tidak memiliki arah. Kita dapat merepresentasikan masalah ini dengan membuat diagram yang serupa dengan graph, dan mengganti semua edge dengan anak panah, yang menandakan arah pada jalan tersebut. Diagram seperti ini disebut digraph (directed graph). Contoh representasi digraph untuk jalan satu arah ditunjukan pada Gambar 1.16.
Gambar 1.16 Representasi digraph untuk jalan satu arah Konsep tentang digraph dapat dinyatakan sebagai berikut.
Digraph adalah sebuah diagram yang memuat titik-titik (disebut vertex) yang dihubungkan dengan garis-garis (disebut arc), setiap arc menghubungkan tepat dua vertex.
Latihan 1.6
11
Network (Jaringan)
Kita dapat menetapkan bobot terhadap edge pada graph untuk membentuk sebuah graph berbobot, begitu juga kita dapat menetapkan bobot terhadap arc pada digraph untuk membentuk digraph berbobot. Konsep ini menuntun kita kepada ide tentang network.
Kita memakai kata network, untuk graph dan digraph yang membawa suatu informasi numerik. Informasi ini tergantung pada aplikasi yang sedang kita dipelajari. Bobot pada network dapat berasosiasi dengan edge/arc, dan mungkin juga dengan vertex. Catat bahwa sebuah graph atau digraph hanya mewakili keterhubungan dari sistem, dan tidak memberikan informasi lebih lanjut tentang elemennya. Network, menyampaikan informaasi kuantitif tambahan yang diperlukan tersebut.
Jaringan Jalan
Pada jaringan jalan raya, bobot dari setiap arc (jalan) mungkin berkorespenden dengan panjangnya jalan, estimasi waktu tempuh, biaya perjalanan (bahan bakar, peralatan, dll). Bobot juga mungkin diberikan berkaitan dengan daya tarik pemandangan, tingkat bahaya pada perjalanan tersebut, atau kualitas permukaan jalan.
Sekarang misalkan kita ingin menemukan rute antar dua kota dan menetapkan jarak sebagai bobot yang berkoresponden dengan edge pada graph. Masalah menentukan jarak terpendak antara dua kota pada peta berarti mencari rute terpendek antara dua vertex pada graph, sehingga memiliki total bobot yang paling kecil. Masalah jalur terpendek yang sederhana seperti ini dapat dipecahkan dengan memeriksa semua jalur.
Latihan 1.7
Dengan cara memerikasa rute yang ada, carilah rute terpendek dari S ke T pada jaringan berikut.
Jaringan Pipa
Gambar 1.17 mewakili sebuah jaringan pipa untuk gas, minyak atau air yang mengalir dari sumber S ke terminal T. Setiap titik A-I merepresentasikan persimpangan pipa di mana total aliran yang masuk pada persimpangan harus sama dengan total aliran yang keluar. Setiap garis antara dua persimpangan merepresentasikan pipa, dan nilainya mewakili kapasitas dari pipa tersebut. Aliran pada pipa tidak boleh melebihi kapasitas, dan harus melalui arah yang telah ditentukan. Jika kita memiliki gas dengan kapasitas kurang dari 7 unit, maka gas tersebut dapat dikirim melewati rute
12 Gambar 1.17 Contoh jaringan pipa dan kapasitasnya
Model Graph
Kita telah mempelajari bagaimana kita dapat memakai graph untuk mengorganisir pengetahuan dari sifat stuktural pada berbagai situasi. Representasi graph dari suatu permasalahan disebut sebagai model. Model yang kita kembangkan berdasarkan pada struktur formal dari matematika kombinatorial, khususnya pada teori graph.
Sebelum merepresentasikan suatu situasi dalam bentuk graph, kita harus melakukan analisis permasalahan dengan hati-hati dan mempelajari sifat graph yang mungkin muncul sesuai situasi tersebut. Pada umumnya, representasi sifat yang dapat diwakili oleh graph dilakukan dengan salah satu dari dua cara berikut.
1. Elemen pada struktur diwakili oleh vertex dan hubungannya diwakili oleh edge. 2. Elemen pada struktur diwakili oleh edge dan hubungannya diwakili oleh vertex.
Klasifikasi Masalah
Permasalahan yang akan kita temui dalam mempelajari graph, dapat dijelaskan sebagai satu dari permasalahan pada Tabel 1.1 berikut.
Tabel 1.1 Klasifikasi Masalah
Jenis masalah Contoh pertanyaan Deskripsi
1. Masalah eksistensi
Apakah terdapat….? Apakah mungkin …?
Ada atau tidak adanya solusi untuk permasalahan.
2. Masalah konstruksi
Jika ada, bagaimana kita membangunnya?
Konstruksi terhadap solusi masalah tersebut.
3. Masalah enumerasi
Berapa banyak?
Dapatkah kita mendaftarnya?
Menghitung berapa banyak solusi yang ada dan mendaftar apa saja solusi tersebut. 4. Masalah
optimasi
JIka ada, mana yang paling baik?
13
Pencarian Solusi
Untuk mencari solusi atas permasalahan yang ada, terdapat pendekatan pencarian solusi sebagai berikut.
1. Teoritis
Dalam suatu permasalahan graph, kita dapat menentukan tipe graph tersebut, mempelajari sifat-sifatnya, membuat dugaan, dan membuktikan suatu teori. Teorema graph yang sudah ada, banyak menunjukan kita apakah pada graph yang kita miliki terdapat sifat-sifat tertentu. Metode teoritis ini dapat menyelesaikan masalah eksistensi, namun biasanya tidak menyelesaikan masalah konstruksi.
2. Metode Praktis
Pendekatan ini adalah pendekatan dengan menunjukan secara langsung sifat yang dapat muncul pada suatu graph dengan membangun objek tersebut. Dalam melakukan konstruksi solusi, banyak masalah yang dapat diselesaikan dengan cara coba-coba atau dengan cara memeriksa semua penyelesaian yang mungkin. Namun cara ini bisa sangat kompleks dan memerlukan banyak waktu, sehingga menjadi cara yang tidak praktis untuk diterapkan. Untuk membangun solusi pada masalah yang kompleks, kita membutuhkan prosedur sistematik langkah demi langkah yang dapat diaplikasikan terhadap sistem yang besar. Prosedur ini disebut algoritma.
Algoritma adalah sebuah prosedur sistematik langkah demi langkah yang terdiri dari : Penjelasan data masukan yang tepat
Sejumlah perintah yang terbatas, terurut, yang dapat dilakukan satu demi satu Perintah perhentian yang menunjukan kapan prosedur selesai
Penjelasan dari data keluaran yang tepat.
3. Metode Heuristic