Contoh Dari graf G pada Gambar 1 didapat e 1 incident dengan simpul dan, e incident dengan simpul dan, e 3 tidak incident dengan simpul, v, dan. Definisi 3 (Adjacent) Jika e={p,q} E, maka simpul p dikatakan adjacent (berelasi) dengan simpul q. (Foulds 1) Contoh 3 Dari graf G pada Gambar 1 didapat adjacent dengan,, dan, adjacent dengan dan, tidak adjacent dengan dan. Definisi (Neighbourhood dari simpul) Misalkan diberikan graf G=(V,E). Neighbourhood dari v V, ditulis dengan N G (v) atau N(v), adalah himpunan simpul yang adjacent dengan v, yaitu N G (v)={u V(G) vu E(G)}. (Foulds 1) Contoh Dari graf G pada Gambar 1 diperoleh N( )={, }, N( )={,, }, dan lainnya. Definisi (Graf Berbobot) Suatu graf G=(V,E) dikatakan berbobot jika terdapat sebuah fungsi w: E R (dengan R adalah himpunan bilangan real) yang memadankan setiap sisi di E dengan sebuah bilangan real yang disebut bobot. Setiap bobot w(uv) dengan uv E dinotasikan dengan w uv. (Foulds 1) Contoh 1 v v Gambar Contoh graf berbobot. Pada Gambar terdapat graf berbobot dengan bobot w(uv) sebagai berikut: sisi { } memiliki bobot w( )=, sisi { } memiliki bobot w( )=1. Definisi 6 (Walk) Suatu walk dalam suatu graf G adalah sebuah barisan berayun dari simpul dan sisiyang berbentuk W : v 0, e 1,, e,,...,e n 1, v n 1, e n, v n yang dimulai dari simpul v 0 dan diakhiri di simpul v n dengan e = v i 1 v i untuk i=1,,..,n. Karena sisi e i sudah dicerminkan dari simpul yang mengapitnya, maka untuk selanjutnya walk dapat dituliskan dengan barisan simpul W : v 0,,,...,v n 1, v n. Walk yang dimulai dari v 0 dan berakhir di v n disebut walk v 0 v n dan walk W mempunyai panjang n karena melalui n sisi (tidak harus berbeda). (Chartrand & Oellermann 13) Contoh 6 G 1 : 1 v1 3 1 1 1 v Gambar 3 Graf G 1 dengan 7 simpul dan sisi. Pada Gambar 3 didapatkan walk v 7 antara lain walk v 7 :,, v,,,,, v 7. Definisi 7 (Path) Suatu path dalam graf G adalah suatu walk dengan semua simpulnya berbeda. (Ahuja et al. 13) Contoh 7 Pada Gambar 3 terdapat contoh path, yaitu sebagai berikut: Path v 7 :,,,,, v, v 7, Path v 7 :, v, v 7, Path v 7 :,,,, v 7, dan seterusnya. Definisi 8 (Panjang Path) Misalkan diberikan path p, yaitu barisan simpul v 0... v k. Panjang path p adalah jumlah semua panjang sisi yang terdapat pada path tersebut atau dapat dituliskan sebagai: ( ) d( p) d( v, v ) d v, v. = = k 0 k i 1 i i= 1 (Cormen et al. 10) Contoh 8 Pada Gambar 3 didapatkan beberapa path yang menghubungkan simpul dan simpul v 7 dengan panjang path yang berbeda, yaitu: path v 7 : v v 7 dengan panjang d(, v 7 )=13, path v 7 : v v 7 dengan panjang d(, v 7 )=7, path v 7 : v 7 dengan panjang d(, v 7 ) =.
3 Definisi (Path Terpendek) Path u v dikatakan path terpendek jika path yang menghubungkan simpul u dan simpul v tersebut memiliki panjang yang minimum di antara path u v yang lainnya. (Hu 181) H 1 : Definisi (Subgraf ) Suatu graf G =(V,E ) adalah subgraf dari graf G=(V,E) jika V V dan E E. (Ahuja et al. 13) Contoh Pada Gambar didapat salah satu subgraf dari graf G 1 =(V 1,E 1 ), G 1 : v1 Gambar 6 Subgraf H1 yang diinduksi oleh himpunan simpul S. Subgraf H1 diinduksi oleh himpunan simpul S, karena H 1 = S yaitu subgraf yang menghubungkan simpul-simpul di S secara maksimal. H : ' ' ' Gambar Subgraf G 1 = ( V 1, E 1 ) dari graf G 1 pada Gambar 3. Definisi 11 (Subgraf yang diinduksi oleh simpul) Misalkan S V(G) dan S. Subgraf yang diinduksi oleh S dapat dituliskan S, H= S disebut subgraf maksimal dari G dengan himpunan simpul S. H= S ialah subgraf yang menghubungkan simpul-simpul di S secara maksimal. Ini berarti S memuat semua sisi dari G yang menghubungkan simpul-simpul di S. (Chartrand & Oellermann 13) Contoh H: v v 8 Gambar Graf H=(V, E). Diketahui himpunan S={,,, } v 7 Gambar 7 Subgraf H tidak diinduksi oleh himpunan simpul S. Subgraf H tidak diinduksi oleh himpunan S, karena ada sisi yang menghubungkan simpul dan simpul di G tetapi tidak menghubungkan simpul dan simpul di H. Definisi 1 (Graf terhubungkan) Graf G=(V,E) dikatakan terhubungkan (connected) jika setidaknya ada satu path yang menghubungkan setiap pasang simpul pada graf tersebut. Jika tidak ada, maka graf tersebut dikatakan tidak terhubungkan (disconnected). (Ahuja et al. 13) Contoh 11 e, e,3 e 3,6 e 6, e,,7 7,8 e 8, e, 7 8 v 7,11 8,1 e 11,1 1 Gambar 8 Graf G=(V,E) terhubungkan.
G 1 : K : e,3 e, e,7 8,, 7 v8 7,11 8,1 v11 v1 Gambar Graf G 1 =(V 1,E 1 ) tidak terhubung. Definisi 13 (Komponen dari Graf) Suatu subgraf terhubung yang tidak termuat pada subgraf lainnya yang juga terhubung disebut komponen graf. (Balakrishnan 17) Contoh 1 Graf G 1 pada Gambar terdiri atas buah komponen, yaitu K 1, K, K 3, dan K, yaitu sebagai berikut: K 1 : K : K 3 : e,3 Gambar Komponen ke-1 dari graf G 1. e,7 7 e 7,11 1 Gambar 11 Komponen ke- dari graf G 1. e8,, v8 e 8,1 Gambar 1 Komponen ke-3 dari graf G 1. e Gambar 13 Komponen ke- dari graf G 1.. Integer Programming Integer programming (IP) atau pemrograman integer adalah suatu pemrograman linear dengan variabel yang digunakan berupa bilangan bulat (integer). Jika semua variabel harus berupa integer, maka masalah tersebut dinamakan pure integer programming, dan jika hanya sebagian yang harus berupa integer dinamakan mixed integer programming. Jika IP dengan semua variabel harus bernilai 0 atau 1, maka disebut 0 1 IP. (Garfinkel & Nemhauser 17).3 Masalah Set covering Misalkan diberikan suatu himpunan S={1,,..., n}. Misalkan juga elemen dari himpunan I merupakan himpunan bagian dari S. Misalkan elemen dari himpunan I terdapat sebanyak K yang dinyatakan dengan I j, j {1,,, K} dan masing-masing memiliki bobot. Definisi 1 (Kover) Misalkan himpunan S={1,,, n} dan himpunan I={I 1, I,, I K } dengan I j S, j J={1,,, K}. Himpunan I j dengan j J * J merupakan kover dari S jika U I j = S. * j J (Garfinkel & Nemhauser 17) Contoh 13 Misalkan himpunan S={a,b,c,d,e,f} dan I={I 1,I, I 3, I, I } dengan j J={1,,3,,}. Misalkan I 1 ={a,b}, I ={a,c}, I 3 ={b,e}, I ={d,e,f}, I ={a,c,f}. Kover dari S di antaranya adalah {I 1,I,I }, karena untuk J * ={1,,} berlaku U I j = I1 U I U I = { a, b, c, d, e, f} = S. * j J Definisi 1 (Masalah Set Covering/SC) Misalkan diberikan c j > 0 adalah bobot yang berpadanan dengan setiap I j, dengan j J. Bobot total dari suatu kover {I j } dengan j J * adalah * j Jc j, dengan J * adalah himpunan bagian dari J. Masalah set covering merupakan suatu masalah yang menemukan kover dengan bobot minimum yang dapat ditulis sebagai berikut:
Minimumkan K z = c jx j j = 1 terhadap ( 1) K P aij x j, i = 1,..., m j = 1 x j = 0 atau 1, j = 1,..., K dengan 1, jika I j anggota dari kover x j = 0, jika selainnya. 1, jika ielemen dari Ij aij, = 0, jika selainnya. (Garfinkel & Nemhauser 17) Contoh 1 Misalkan diberikan himpunan-himpunan S={a,b,c,d,e,f,g} dan I={I 1,I,I 3,I,I } dengan j J={1,,3,,}. Misalkan I 1 ={a,b,g}, I ={a,c,g}, I 3 ={b,e,g}, I ={d,e,f}, I ={a,c,f}. Misalkan setiap elemen dari I dipadankan dengan suatu bobot untuk mengkover setiap elemen dari S. Akan ditentukan formulasi untuk mengkover semua elemen dari S oleh elemen-elemen dari I, dengan bobot minimum. Untuk itu, diperlakukan model pemrograman integer murni 0-1. Misalkan: 1, jika i Ij aij, = 0, selainnya 1, jika I j anggota dari kover x j = 0, selainnya. Jika diasumsikan setiap elemen dari I mempunyai bobot=1, dan fungsi objektifnya adalah meminimumkan banyaknya elemen I yang digunakan untuk mengkover elemen dari S. Maka formulasi IP yang sesuai dengan Definisi 1 adalah Minimumkan z = x1 + x + x3 + x + x terhadap x1 + x + x x1 + x3 x + x ( P ) x x3 + x x + x x1 + x + x3 x j {0,1}, untuk j = 1,..., Banyaknya kendala pada formulasi di atas merepresentasikan banyaknya elemen dari S. Misalkan kendala ke-1 menyatakan bahwa elemen pertama dari S, yaitu a, dapat dikover oleh I 1 ={a,b,g}, I ={a,c,g}, atau I ={a,c,f} yang berturut-turut merupakan elemen ke-1, elemen ke- dan elemen ke- dari himpunan I. Dengan menggunakan LINGO 11.0, solusi ILP (P ) dapat diperoleh yaitu x 3 =1, x =1, x =1, dan z=3. Dari solusi ILP, himpunan dari {I 3,I,I } merupakan kover dari S (lihat Lampiran 1). Hal ini dikarenakan I 3 I I = {b,e,g} {d,e,f} {a,c,f}={a,b,c,d,e,f,g}=s. Definisi 16 (Kover terhubungkan) Kover terhubungkan merupakan suatu kover dan juga merupakan graf terhubungkan, sedangkan kover tidak terhubungkan adalah suatu kover dan juga merupakan graf tidak terhubungkan. (Cerdeira et al. 00). Penentuan Path Terpendek dengan Algoritme Dijkstra Algoritme Dijkstra akan digunakan untuk menentukan path terpendek dari u 0 ke setiap simpul di suatu graf atau digraf berbobot. Bobot tersebut adalah bilangan taknegatif. Misalkan diberikan G=(V,E) dengan himpunan simpul V(G) adalah graf berbobot dan tak berarah yang setiap sisi u 0 v E(G) memiliki bobot taknegatif w(u 0 v). Jika path u 0 v ada, maka jarak d(u 0,v) dimisalkan jarak di antara pasangan simpul u 0,v di G yang memiliki bobot minimum dari setiap path u 0 v. Jika path u 0 v tidak ada, maka jarak d(u 0,v)=+. Setiap simpul v ( u 0 ) akan dilabeli l(v) sehingga l(v)=d(u 0,v). Pada proses awalnya, label dari simpul u 0 adalah l(u 0 )=0, sedangkan label dari simpul v ( u 0 ) adalah l(v)=+. Label dari simpul v ( u 0 ) mungkin turun dari ke jarak d(u 0,v) yang ditentukan. Untuk simpul v ( u 0 ), PARENT(v) adalah simpul sebelum v di path terpendek u 0 v. Ketika l(v) diperbaharui, path terpendek u 0 v akan ditemukan dan PARENT(v) diperbaharui untuk mengindikasi simpul yang lebih dulu di path terpendek u 0 v. Misalkan S adalah himpunan bagian dari himpunan simpul V(G) yang berisi simpul-simpul di G yang sudah ditentukan jaraknya dari u 0. Langkah-langkah pada algoritme Dijkstra untuk menentukan jarak dari u 0 ke setiap simpul di graf G dengan banyaknya simpul p adalah sebagai berikut: LANGKAH 1 [Misalkan semua simpul v ( u 0 ) di G dilabeli dengan l(v)=+ dan l(u 0 )=0. Indeks variabel i
6 dimulai dari i=0. Pada saat ini S={u 0 }, dan S =V(G) {u 0 }] i 0, S {u 0 }, S V(G) {u 0 }, l(u 0 ) 0, dan l(v) +. Jika p=1, maka proses dihentikan. Jika tidak, lanjutkan ke LANGKAH. LANGKAH [Jika label v di S yang adjacent dengan u i berubah, maka PARENT(v) diubah menjadi u i ] Untuk setiap v S sehingga u i,v E(G), jika l(v) l(u i ) + w(u i v), proses dilanjutkan, jika tidak, maka l(v) l(u i ) + w(u i v), dan PARENT(v) u i. LANGKAH 3 [Langkah ini menentukan simpul u i+1 S dengan jarak d(u i,u i+1 ) yang sudah ditemukan] Tentukan m=min{l(v) v S }. Jika v j S dipilih sebagai simpul dengan l(v j )=m, maka m adalah jarak antara u 0 dan v j, dan u i+1 = v j. LANGKAH [Pembaharuan S dan S ] S=S { u i+1 }, S =S { u i+1 }. LANGKAH [Pembaharuan indeks variabel i] i i+1. Jika i=p 1, maka proses berhenti. Jika tidak, Kembali ke Langkah. (Chartrand & Oellermann 13) Contoh 1 Misalkan diberikan graf tak berarah dan berbobot seperti pada Gambar 1. u 0 1 13 11 6 16 Gambar 1 Graf G tak berarah dan berbobot. Pada Gambar 1 terdapat 8 simpul dan 11 sisi beserta jarak antarsimpulnya. Misalkan akan ditentukan path terpendek dari u 0 ke setiap simpul di G beserta jarak yang minimum. Dengan menggunakan algoritme Dijkstra (lihat Lampiran ) akan diperoleh path terpendek dari u 0 ke semua simpul di G beserta jaraknya. 17 8 v 7 Tabel 1 Jarak terpendek dari simpul u 0 ke semua simpul di G dari algoritme Dijkstra Iterasi u 0 v v 7 Penambahan S 0 0 (, ) (, ) (, ) (, ) (, ) (, ) (, ) u 0 1 (, ) (13, u 0 ) (, ) (16,u 0 ) (8,u 0 ) (, ) (, ) v (18, v ) (13, u 0 ) (,v ) (1, v ) (, ) (, ) 3 (18, v ) (,v ) (1,v ) (, ) (, ) (18, v ) (0, ) (, ) (, ) (0, ) (, ) (, ) Dari Tabel 1, dapat diketahui beberapa path terpendek dari simpul u 0 ke semua simpul v (path terpendek Q). Contoh path terpendek dari simpul u 0 ke simpul ialah path terpendek Q 1 = u 0 v dengan jarak 18, untuk path terpendek dari simpul u 0 ke simpul, yaitu path terpendek Q = u 0 dengan jarak 13. 13 u 0 16 v 8 Gambar 1 Path terpendek Q i.