Bab 2 Teori Dasar Pada bagian ini diberikan definisi-definisi dasar dalam teori graf berikut penjabaran mengenai kompleksitas algoritma beserta contohnya yang akan digunakan dalam tugas akhir ini. Berikut ini diberikan beberapa notasi himpunan untuk memudahkan pendefinisian graf. Misalkan V adalah himpunan berhingga tak hampa. [V] 2 menyatakan himpunan semua pasangan tak terurut (u, v), dengan u, v V dan u v. V V menyatakan himpunan semua pasangan terurut uv,, dengan u, v V dan u v. 2.1 Definisi Graf Sebuah graf G dapat direpresentasikan dalam pasangan (V(G), E(G)), dimana V(G) adalah himpunan berhingga tak hampa dan E(G) [V(G)] 2. V(G) disebut sebagai himpunan titik, sedangkan E(G) disebut sebagai himpunan sisi. Secara umum graf dapat digambarkan sebagai suatu diagram, dimana setiap titik di V(G) direpresentasikan sebagai titik sedangkan setiap sisi di E(G) direpresentasikan sebagai ruas garis yang menghubungkan titik-titik di V(G). Jika e = (u, v) E(G) merupakan sisi yang menghubungkan titik u dan v maka titik u dan v dikatakan sebagai titik ujung dari e. Sebagai contoh Gambar 2.1.a merupakan graf G dengan V(G) = {v 1, v 2, v 3, v 4, v 5, v 6 } dan E(G) = {(v 1, v 2 ), (v 1, v 3 ), (v 2, v 3 ), (v 2, v 4 ), (v 5, v 6 )}. 3
Dua titik yang dihubungkan oleh sebuah sisi disebut bertetangga (adjacent) sedangkan dua sisi yang berbagi titik ujung disebut terkait (incident). Graf lengkap (complete graph) dengan n titik dan dinotasikan K n adalah suatu graf yang setiap pasang titiknya bertetangga. Pada Gambar 2.1.b diberikan graf lengkap K 5. Derajat suatu graf G, dinotasikan d G (v), menyatakan banyaknya sisi yang terkait dengan v. Suatu graf G disebut r-regular jika d G (v) = r untuk semua v V(G). Gambar 2.1.c merupakan contoh graf-graf regular. Misalkan e = (u, v) E(G), bobot sisi e menyatakan banyaknya sisi yang terkait dengan (u,v). Gambar 2.1.a adalah graf G dimana bobot sisi (v 1, v 2 ) dan (v 2, v 3 ) adalah 3, bobot sisi (v 1, v 3 ) dan (v 2, v 4 ) adalah 2, sedangkan bobot sisi (v 5, v 6 ) adalah 0. Gambar 2.1.a. Graf G dengan himpunana titik V(G) = {v 1, v 2, v 3, v 4, v 5, v 6 } dan himpunan sisi E(G) = {(v 1, v 2 ), (v 1, v 3 ), (v 2, v 3 ), (v 2, v 4 ), (v 5, v 6 )}. Gambar 2.1.b. Graf lengkap K 5. 4
a d m b f i j h n q c e g l k p o r = 0 r = 1 r = 2 r = 3 r = 4 Gambar 2.1.c. Graf r-regular dengan r = 0, 1, 2, 3, 4. 2.2 Matriks Ketetanggaan dan Keterkaitan Graf G(V, E) dengan V = v dan E = ε memiliki matriks berukuran v X ε yang disebut matriks keterkaitan dari G. Misalkan V = {v 1, v 2,...,v v }dan E = {e 1, e 2,...,e ε } maka matriks keterkaitan dari G adalah matriks M(G) = [m ij ] dimana m ij 1, jika viterkait dengan ej = 0, jika vitidak terkait dengan e j. Matriks lain yang berukuran v X v disebut matriks ketetanggaan dari G yang dinotasikan A(G) = [a ij ] dimana a ij 1, = 0, jika vi bertetangga dengan vj jika vi tidak bertetangga dengan vj. e 1 e 2 e 3 e 4 e 5 v 1 1 0 1 0 1 v 2 1 1 0 0 0 v 3 0 0 1 1 0 v 4 0 1 0 1 1 M(G) v 1 v 2 v 3 v 4 v 1 0 1 1 1 v 2 1 0 0 1 v 3 1 0 0 1 1 1 1 0 v 4 A(G) Gambar 2.2. Graf G beserta matriks keterkaitan dan ketetanggan. 5
2.3 Subgraf, Gabungan Graf dan Jumlah Graf Suatu graf H disebut subgraf dari G, ditulis H G, jika V( H) V( G) dan E( H) E( G). Jika H subgraf dari G, maka G disebut supergraf dari H. G 1 G 2 Gambar 2.3.1. G 2 adalah suatu subgraf dari G 1. Gabungan dari dua graf G 1 = (V 1, E 1 ) dan G 2 = (V 2, E 2 ) adalah suatu graf G 3, ditulis G 3 = G 1 G 2, jika V 3 = V 1 V 2 dan E 3 = E 1 E 2. Jika G 1 = G 2 maka G 1 G 2 bisa ditulis sebagai 2G 1. Jumlah dari dua graf G 1 = (V 1, E 1 ) dan G 2 = (V 2, E 2 ) adalah suatu graf G 4 ditulis G 4 = G 1 + G 2, jika V 4 = V 1 V 2 dan E 4 = E 1 E 2 {(u, v) u V 1, v V 2 }. Gambar 2.3.2. Gabungan dan jumlah dari dua graf. 6
Gambar 2.3.3. Gabungan dua graf G 1 dan G 2 dimana G 1 = G 2. 2.4 Perkalian Kartesius, Komplemen, Subdivisi dan Induksi pada Graf Perkalian kartesius dari graf G 1 (V 1, E 1 ) dan G 2 (V 2, E 2 ) adalah graf G(V, E), ditulis G = G 1 G 2, jika V = V 1 V 2, dan dua titik u, 1 u2 dan v, 1 v 2 di G bertetangga jika dan hanya jika salah satu dari dua hal berikut berlaku: u 1 = v 1 dan (u 2, v 2 ) E 2 atau u 2 = v 2 dan (u 1, v 1 ) E 1. Pada Gambar 2.4.1 diberikan graf G 1 dan G 2 serta hasil kali kartesiusnya. Komplemen G dari suatu graf G adalah graf dengan V(G ) = V(G), dan (u, v) E (G ) jika dan hanya jika (u, v) E (G). Pada Gambar 2.4.2 diberikan graf G beserta G. Subdivisi pada sisi (u, v) dari suatu graf G dilakukan dengan mengganti sisi (u, v) dengan sebuah titik w dan sisi (u,w) serta (w, v). Pada Gambar 2.4.3, G 2 merupakan graf yang diperoleh dari G 1 dengan melakukan subdivisi pada sisi (1, 3) E(G 1 ). Subgraf dari G yang himpunan titiknya V' V(G) dan himpunan sisinya merupakan himpunan semua sisi pada G yang kedua titik ujungnya berada di V' disebut subgraf dari G yang diinduksi oleh V' dan dinotasikan sebagai G[V']. Gambar 2.4.4 merupakan graf G yang diinduksi oleh V' = {2, 3, 4, 6}. 7
; ; G 1 G 2 G = G 1 G 2 Gambar 2.4.1. Perkalian kartesius dua buah graf G 1 dan G 2. Gambar 2.4.2. Graf G dengan komplemennya G. Gambar 2.4.3. G 2 adalah hasil subdivisi sisi (1, 3) pada G 1. Gambar 2.4.4. Graf G dan subgraf terinduksinya. 8
2.5 Keterhubungan Lintasan-(v 0, v n ) pada suatu graf G adalah barisan titik di G v 0, v 1, v 2, v 3,.., v n dimana (v i, v i+1 ) E(G) untuk setiap i = 0, 1, 2,..., n-1 dan v i v j untuk i j. u y e f a v d g b Lintasan-(x, v) : xwyuv x c w Gambar 2.5.1 Graf G beserta salah satu lintasannya. Dua titik u, v pada graf G dikatakan terhubung jika terdapat lintasan-( u, v) di G. Graf G dikatakan graf terhubung jika untuk setiap pasangan dua titik u dan v pada G terdapat lintasan-(u, v). (a) (b) Gambar 2.5.2. (a) Graf terhubung, (b) graf tak terhubung. Komponen dari suatu graf adalah subgraf terhubung yang maksimal. 9
2.6 Maximal Matching Definisi 2.6.1. M disebut matching di G jika M E(G) dimana tiap dua sisi di M tidak terkait. Definisi 2.6.2. Maximal matching di G adalah suatu matching M dimana untuk setiap e E(G)\M terdapat t M sehingga e terkait dengan t. Kardinalitas dari suatu maximal matching menyatakan banyaknya anggota dari himpunan tersebut. Pada Gambar 2.6.1 diberikan graf Petersen dan dua maximal matching-nya yaitu S 1 = {(1, 6), (2, 7), (3, 4), (5, 10)} dan S 2 = {(1, 6), (3, 4), (7, 10)}. 1 1 5 6 2 5 6 2 10 7 10 7 9 8 9 8 4 3 4 3 Gambar 2.6.1. Maximal matching pada graf Petersen. Jelas bahwa S 2 <S 1. Perhatikan bahwa setiap sisi pada graf Petersen terkait dengan lima sisi (termasuk dirinya sendiri). Dengan demikian agar diperoleh suatu maximal matching dibutuhkan paling sedikit 15 3 5 = sisi. Jadi, S 2 merupakan suatu maximal matching dengan kardinalitas terkecil pada graf Petersen. 10
2.7 Kelas-Kelas Graf Definisi 2.7.1. Graf lintasan dengan n titik, n 2, dinotasikan sebagai P n adalah graf dengan barisan titik v 1, v 2, v 3,..., v n dan (v i, v i+1 ) E(P n ) untuk setiap i = 1, 2,..., n-1 dan v i v j untuk i j. Definisi 2.7.2. Graf lingkaran dengan n titik, n 3, dinotasikan sebagai C n adalah graf tehubung yang setiap titiknya berderajat dua. Definisi 2.7.3. Graf roda dengan n titik, n 4 dinotasikan sebagai W n, dimana W n = C n-1 + K 1. Jika v 0 K 1 dan v C n-1 maka sisi (v 0, v) E(W n ) disebut jari-jari dari W n. Definisi 2.7.4. Graf kipas dengan n titik, n 3 dinotasikan sebagai F n, dimana F n = P n-1 + K 1. Jika v 0 K 1 dan v P n-1 maka sisi (v 0, v) E(F n ) disebut jari-jari dari F n. Definisi 2.7.5. Graf lingkaran ganda dengan 2n titik, n 3 dinotasikan sebagai D 2n dimana D 2n = P 2 C n. Definisi 2.7.6. Graf kincir angin dengan 2n+1 titik, n 1 dinotasikan sebagai KA 2n+1 dimana KA 2n+1 = np 2 + K 1. Jika v 0 K 1 dan v np 2 maka sisi (v 0, v) E(KA 2n+1 ) disebut jari-jari dari KA 2n+1. Definisi 2.7.7. Graf jahangir dengan 2n+1 titik, n 1, dinotasikan sebagai J 2n+1, adalah graf yang diperoleh dari W n+1 = C n + K 1 dengan cara melakukan subdivisi pada setiap sisi di C n. 11
(a) Graf lintasan P 5, (b) graf lingkaran C 8, (c) graf roda W 9, 3 4 2 1 8 9 10 11 16 15 7 1 12 14 13 6 5 4 2 3 5 6 7 9 8 (d) graf kipas F 7, (e) graf lingkaran ganda D 16, (f) graf kincir KA 9, (g) graf jahangir J 9. Gambar 2.6 Contoh kelas-kelas graf. 12
2.8 Algoritma dan Kompleksitasnya Definisi 2.8.1. Algoritma adalah serangkaian langkah-langkah berhingga untuk melakukan perhitungan atau menyelesaikan suatu masalah. Secara umum suatu algoritma dituliskan menggunakan bahasa komputer. Sebagai contoh berikut ini diberikan algoritma untuk mencari nilai maksimum dari suatu barisan bilangan yang berhingga. ALGORITMA 2.8 Procedure max(a 1, a 2,..., a n : bilangan bulat) max := a 1 for i := 2 to n if max < a i then max := a i {max berisi nilai maksimum yang dicari} Definisi 2.8.2. Misal f dan g adalah fungsi dari himpunan bilangan riil ke himpunan bilangan riil. Kita katakan f(x) adalah O(g(x)) (dibaca: f(x) berorde g(x)) jika terdapat konstanta C dan k sehingga f(x) Cg(x) bilamana x > k. Sebagai contoh akan ditunjukkan bahwa f(x) = x 2 +2x+1 adalah O(x 2 ). Perhatikan bahwa x 2 +2x+1 x 2 +2x 2 + x 2 = 4x 2 bilamana x >1. Jadi, dengan mengambil C = 4 dan k = 1 terbukti f(x) adalah O(x 2 ). Bagaimanakah menganalisis keefisiensian suatu algoritma? Salah satu ukurannya adalah banyaknya waktu yang dibutuhkan (time complexity) komputer untuk menyelesaikan masalah dengan menggunakan algoritma tersebut ketika nilai masukan (input) diberikan dengan ukuran tertentu. Ukuran lainnya adalah kapasitas memori komputer yang dibutuhkan (space complexity) dalam mengimplementasikan algoritma tersebut ketika nilai masukan (input) diberikan dengan ukuran tertentu. Namun, pada bagian ini kita hanya memandang ukuran waktu saja. Besarnya ukuran waktu dipengaruhi oleh banyaknya 13
operasi dasar yang digunakan dalam algoritma tersebut. Misalnya operasi perbandingan, perkalian, penjumlahan, pembagian atau operasi dasar lainnya. Jika banyaknya operasi dasar dalam suatu algoritma berorde f(x), maka dikatakan algoritma tersebut berorde O(f(x)), atau algoritma tersebut mempunyai kompleksitas O(f(x)). Apabila suatu algoritma berorde O(g(x)) dimana g(x) adalah suatu polinom maka dalam hal ini sudah cukup untuk mengatakan algoritma tersebut efisien. Banyaknya perbandingan akan digunakan sebagai ukuran keefisienan Algoritma 2.8. Perhatikan bahwa untuk mencari nilai maksimum dari himpunan dengan n elemen, nilai maksimum sementara berisi nilai yang berada pada urutan pertama pada daftar sebagai nilai awal (initial value). Kemudian nilai ini terus diperbaharui seiring perbandingan yang dilakukan selama nilai maksimum belum tercapai. Karena dua perbandingan digunakan untuk setiap dua elemen pada himpunan tersebut dan satu perbandingan lagi digunakan untuk keluar dari loop ketika i = n+1, tepatnya ada 2(n-1) +1 = 2n-1 perbandingan ketika algoritma ini diterapkan. Jadi, algoritma tersebut berorde n atau O(n). Berikut penjelasan mengenai P, NP, NP-Complete menurut Garey dan Johnson [6]. Jika suatu masalah yang dapat diselesaikan dengan algoritma berorde polinom (algoritma polinomial), maka kita katakan masalah tersebut berada dalam kelas P. Misalkan suatu masalah belum dapat dicari solusinya dengan algoritma polinomial. Tetapi, jika diberikan solusi untuk masalah ini, kebenarannya dapat diverifikasi dengan algoritma polinomial. Masalah yang demikian dikelompokkan ke dalam kelas NP. NP-Complete adalah sub kelas dari NP yang terdiri dari masalah yang ekivalen. Jadi dalam kelas NP-Complete setiap masalah dapat ditransformasikan menjadi masalah lainnya di kelas yang sama. Kelas NP-Complete dipandang sebagai kelompok masalah yang paling sulit untuk diselesaikan. Teorema Garey [6] 14
Menentukan maximal matching terkecil pada sebarang graf termasuk masalah NP-Complete. 15