Contoh 2
Dari graf G pada Gambar 1 didapat
e1 incident dengan simpul v1 dan v2,
e2 incident dengan simpul v1 dan v3,
e3 tidak incident dengan simpul v1, v5, dan v3. Definisi 3 (Adjacent)
Jika e={p,q} E, maka simpul p dikatakan
adjacent (berelasi) dengan simpul q.
(Foulds 1992) Contoh 3
Dari graf G pada Gambar 1 didapat
v1 adjacent dengan v2, v3, dan v4,
v2 adjacent dengan v1 dan v4,
v3 tidak adjacent dengan v2 dan v4.
Definisi 4 (Neighbourhood dari simpul) Misalkan diberikan graf G=(V,E).
Neighbourhood dari v ∈ V, ditulis dengan NG(v) atau N(v), adalah himpunan simpul yang adjacent dengan v, yaitu
NG(v)={u V(G) | vu E(G)}.
(Foulds 1992) Contoh 4
Dari graf G pada Gambar 1 diperoleh
N(v2)={v1,v4}, N(v1)={v3,v2,v4}, dan lainnya. Definisi 5 (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 wuv. (Foulds 1992) Contoh 5 G: 1 2 4 1
v
2v
5v
3v
v
4 2Gambar 2 Contoh graf berbobot. Pada Gambar 2 terdapat graf berbobot dengan bobot w(uv) sebagai berikut:
sisi {v2v3} memiliki bobot w(v2v3)=2, sisi {v3v4} memiliki bobot w(v3v4)=1. Definisi 6 (Walk)
Suatu walk dalam suatu graf G adalah sebuah barisan berayun dari simpul dan sisi- yang berbentuk
W : v0, e1, v1, e2, v2,...,en–1, vn–1, en, vn yang dimulai dari simpul v0 dan diakhiri di simpul vn dengan e = vi–1vi untuk i=1,2,..,n.
Karena sisi ei sudah dicerminkan dari simpul yang mengapitnya, maka untuk selanjutnya
walk dapat dituliskan dengan barisan simpul W : v0, v1, v2,...,vn–1, vn.
Walk yang dimulai dari v0 dan berakhir di vn disebut walk v0–vn dan walk W mempunyai panjang n karena melalui n sisi (tidak harus berbeda).
(Chartrand & Oellermann 1993) Contoh 6 G1: 2 1 1 1 1 2 2 3 5 4 1 v v2 3 v 4 v v6 v7 v5
Gambar 3 Graf G1 dengan 7 simpul dan 10 sisi.
Pada Gambar 3 didapatkan walk v1– v7 antara lain walk v1– v7: v1, v2, v5, v1, v3, v4, v6, v7
.
Definisi 7 (Path)Suatu path dalam graf G adalah suatu
walk dengan semua simpulnya berbeda.
(Ahuja et al. 1993) Contoh 7
Pada Gambar 3 terdapat contoh path, yaitu sebagai berikut:
Path v1– v7: v1, v3, v4, v6, v2, v5, v7,
Path v1– v7: v1, v5, v7,
Path v1– v7: v1, v3, v4, v6, v7, dan seterusnya.
Definisi 8 (Panjang Path)
Misalkan diberikan path p, yaitu barisan simpul v0–v1–v2–...–vk. Panjang path p adalah jumlah semua panjang sisi yang terdapat pada
path tersebut atau dapat dituliskan sebagai:
(
)
0 1 1 ( ) ( , )k k i , i . i d p d v v d v− v = = =∑
(Cormen et al. 1990) Contoh 8Pada Gambar 3 didapatkan beberapa path yang menghubungkan simpul v1 dan simpul v7 dengan panjang path yang berbeda, yaitu:
path v1– v7: v1– v3– v4– v6– v2– v5– v7 dengan panjang d(v1, v7)=13, path v1– v7: v1– v5– v7 dengan panjang d(v1, v7)=7, path v1 – v7: v1– v3– v4– v6– v7 dengan panjang d(v1, v7) =5.
Definisi 9 (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 1981) Definisi 10 (Subgraf )
Suatu graf G’=(V’,E’) adalah subgraf dari graf G=(V,E) jika V’⊆V dan E’⊆E.
(Ahuja et al. 1993) Contoh 9
Pada Gambar 4 didapat salah satu subgraf dari graf G1=(V1,E1), G1’: 1
v
v
2 3v
4v
v
7 Gambar 4 Subgraf ' 1 G = (V1',E1') dari graf G1 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 1993) Contoh 10 H: 7 v 3 v v4 2 v v5 6 v 8 v
Gambar 5 Graf H=(V, E). Diketahui himpunan S={v2, v3, v4, v6} 1 H : 3 v v4 2 v 6 v
Gambar 6 Subgraf H1yang diinduksi oleh
himpunan simpul S.
Subgraf H1diinduksi oleh himpunan
simpul S, karena H1=〈S〉 yaitu subgraf yang
menghubungkan simpul-simpul di S secara maksimal. 2 H : 3 v 2 v 6 v 4 v
Gambar 7 Subgraf H2 tidak diinduksi oleh
himpunan simpul S.
Subgraf H2 tidak diinduksi oleh himpunan
S, karena ada sisi yang menghubungkan
simpul v3 dan simpul v4 di G tetapi tidak menghubungkan simpul v3 dan simpul v4 di
H2.
Definisi 12 (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. 1993) Contoh 11 G: 3,6 e 7,8 e 11,12 e 4,5 e 6,9 e 5,7 e e9,10 7,11 e e8,12 6 v 4 v 5 v v7 v10 12 v 8,9 e 8 v v9 11 v 2,4 e 4 v 2,3 e 1,3 e 3 v 1,2 e 2 v 1 v
G1: 1,3 e 2,3 e 1,2 e 4,5 e 5,7 e e8,9 e9,10 7,11 e e8,12 2 v v3 v6 4 v 5 v v7 v8 v9 v10 11 v v12 1 v
Gambar 9 Graf G1=(V1,E1) tidak terhubung. Definisi 13 (Komponen dari Graf)
Suatu subgraf terhubung yang tidak termuat pada subgraf lainnya yang juga terhubung disebut komponen graf.
(Balakrishnan 1997) Contoh 12
Graf G1 pada Gambar 9 terdiri atas 4 buah komponen, yaitu K1, K2, K3, dan K4, yaitu sebagai berikut: K1:
e2,3 1,3 e 3 v 1,2 e 2 v 1 v
Gambar 10 Komponen ke-1 dari graf G1.
K2: 5,7 e 7,11 e 5
v
v
7 11v
4v
Gambar 11 Komponen ke-2 dari graf G1.
K3:
8,9 e e9,10 8,12 e 8
v
v
9v
10 12v
Gambar 12 Komponen ke-3 dari graf G1.
K4:
v
6Gambar 13 Komponen ke-4 dari graf G1. 2.2 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 1972) 2.3 Masalah Set covering
Misalkan diberikan suatu himpunan S={1, 2, ..., n}. Misalkan juga elemen dari himpunan
I merupakan himpunan bagian dari S.
Misalkan elemen dari himpunan I terdapat sebanyak K yang dinyatakan dengan Ij, j∈{1, 2, …, K} dan masing-masing memiliki bobot. Definisi 14 (Kover)
Misalkan himpunan S={1, 2, …, n} dan himpunan I={I1, I2, …, IK} dengan Ij ⊆ S, j∈
J={1, 2, …, K}. Himpunan Ij dengan j∈ J* ⊆ J merupakan kover dari S jika
* j . j J S I ∈ = U
(Garfinkel & Nemhauser 1972) Contoh 13
Misalkan himpunan S={a,b,c,d,e,f} dan
I={I1,I2,I3,I4,I5} dengan j J={1,2,3,4,5}. Misalkan I1={a,b}, I2={a,c}, I3={b,e},
I4={d,e,f}, I5={a,c,f}. Kover dari S di antaranya adalah {I1,I2,I4}, karena untuk J* ={1,2,4} berlaku * j 1 2 4 { , , , , , } . j J I I I I a b c d e f S ∈ = U U = = U
Definisi 15 (Masalah Set Covering/SC) Misalkan diberikan cj >0 adalah bobot yang berpadanan dengan setiap Ij, dengan j J. Bobot total dari suatu kover {Ij} dengan j∈J* adalah ∑j J∈*cj , 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 1 1 1 terhadap ( ) 1, 1,..., 0 atau 1, 1,..., K j j j K ij j j j z c x P a x i m x j K = = ⎫ = ∑ ⎪ ⎪ ⎪ ⎬ ⎪ ≥ = ∑ ⎪ ⎪ = = ⎭ dengan 1, jika anggota dari kover 0, jika selainnya. j j I x = ⎨⎧ ⎩
, 1, jika elemen dari 0, jika selainnya. j i j i I a = ⎨⎧ ⎩ (Garfinkel & Nemhauser 1972) Contoh 14 Misalkan diberikan himpunan-himpunan S={a,b,c,d,e,f,g} dan I={I1,I2,I3,I4,I5} dengan j J={1,2,3,4,5}. Misalkan I1={a,b,g}, I2={a,c,g}, I3={b,e,g}, I4={d,e,f}, I5={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 0, selainnya j i j i I a = ⎨⎧ ∈ ⎩ 1, jika anggota dari kover 0, selainnya. j j I x = ⎨⎧ ⎩ 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 15 adalah Minimumkan 1 2 3 4 5 1 2 5 1 3 2 5 4 3 4 4 5 1 2 3 terhadap 1 1 1 1 1 1 1 j {0,1}, untuk 1, ..., 5 z x x x x x x x x x x x x x x x x x x x x x j = + + + + ⎫ ⎪ ⎪ ⎪ + + ≥ ⎪ + ≥ ⎪ ⎪ + ≥ ⎪ ⎬ ≥ ⎪ ⎪ + ≥ + ≥ + + ≥ ∈ = ⎭ 2 (P ) ⎪ ⎪ ⎪ ⎪ ⎪
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 I1={a,b,g}, I2={a,c,g}, atau I5={a,c,f} yang berturut-turut merupakan elemen ke-1, elemen ke-2 dan elemen ke-5 dari himpunan I.
Dengan menggunakan LINGO 11.0, solusi ILP (P2) dapat diperoleh yaitu x3=1,
x4=1, x5=1, dan z=3. Dari solusi ILP, himpunan dari {I3,I4,I5} merupakan kover dari
S (lihat Lampiran 1). Hal ini dikarenakan
I3∩I4∩I5=
{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. 2005) 2.4 Penentuan Path Terpendek dengan
Algoritme Dijkstra
Algoritme Dijkstra akan digunakan untuk menentukan path terpendek dari u0 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 u0v∈E(G) memiliki bobot taknegatif w(u0v). Jika path
u0–v ada, maka jarak d(u0,v) dimisalkan jarak di antara pasangan simpul u0,v di G yang memiliki bobot minimum dari setiap path u0–
v. Jika path u0–v tidak ada, maka jarak
d(u0,v)=+∞. Setiap simpul v (≠u0) akan dilabeli l(v) sehingga l(v)=d(u0,v). Pada proses awalnya, label dari simpul u0 adalah l(u0)=0, sedangkan label dari simpul v (≠u0) adalah
l(v)=+∞. Label dari simpul v (≠u0) mungkin turun dari ∞ ke jarak d(u0,v) yang ditentukan. Untuk simpul v (≠u0), PARENT(v) adalah simpul sebelum v di path terpendek u0–v. Ketika l(v) diperbaharui, path terpendek u0–v akan ditemukan dan PARENT(v) diperbaharui untuk mengindikasi simpul yang lebih dulu di
path terpendek u0–v. Misalkan S adalah himpunan bagian dari himpunan simpul V(G) yang berisi simpul-simpul di G yang sudah ditentukan jaraknya dari u0.
Langkah-langkah pada algoritme Dijkstra untuk menentukan jarak dari u0 ke setiap simpul di graf G dengan banyaknya simpul p adalah sebagai berikut:
LANGKAH 1
[Misalkan semua simpul v (≠u0) di G dilabeli dengan l(v)=+∞ dan l(u0)=0. Indeks variabel i
dimulai dari i=0. Pada saat ini S={u0}, dan
S’=V(G)–{u0}]
i←0, S←{u0}, S’←V(G)–{u0}, l(u0) ←0, dan
l(v) ←+∞. Jika p=1, maka proses dihentikan.
Jika tidak, lanjutkan ke LANGKAH 2. LANGKAH 2
[Jika label v di S’ yang adjacent dengan ui berubah, maka PARENT(v) diubah menjadi
ui] Untuk setiap v∈S’ sehingga ui,v∈E(G), jika
l(v) ≤ l(ui) + w(uiv), proses dilanjutkan, jika tidak, maka
l(v) ← l(ui) + w(uiv), dan PARENT(v)←ui. LANGKAH 3
[Langkah ini menentukan simpul ui+1∈S’ dengan jarak d(ui,ui+1) yang sudah ditemukan] Tentukan m=min{l(v)|v∈S’}. Jika vj∈S’ dipilih sebagai simpul dengan l(vj)=m, maka
m adalah jarak antara u0 dan vj, dan ui+1 = vj. LANGKAH 4
[Pembaharuan S dan S’]
S=S ∪ { ui+1 }, S’ =S’ – { ui+1 }. LANGKAH 5
[Pembaharuan indeks variabel i]
i ← i+1. Jika i=p–1, maka proses berhenti.
Jika tidak, Kembali ke Langkah 2. (Chartrand & Oellermann 1993) Contoh 15
Misalkan diberikan graf tak berarah dan berbobot seperti pada Gambar 14.
G: 0 u 2 v 1 v 3 v 4 v 5 v 6 v v7 8 7 17 6 14 13 11 9 16 5 10
Gambar 14 Graf G tak berarah dan berbobot. Pada Gambar 14 terdapat 8 simpul dan 11 sisi beserta jarak antarsimpulnya. Misalkan akan ditentukan path terpendek dari u0 ke setiap simpul di G beserta jarak yang minimum. Dengan menggunakan algoritme Dijkstra (lihat Lampiran 2) akan diperoleh path terpendek dari u0 ke semua simpul di G beserta jaraknya.
Tabel 1 Jarak terpendek dari simpul u0 ke semua simpul di G dari algoritme Dijkstra
Dari Tabel 1, dapat diketahui beberapa path terpendek dari simpul u0 ke semua simpul v (path terpendek Q). Contoh path terpendek dari simpul u0 ke simpul v1 ialah path terpendek Q1= u0 – v5 – v1 dengan jarak 18, untuk path terpendek dari simpul u0 ke simpul
v2, yaitu path terpendek Q2= u0 – v2 dengan jarak 13. G: 0 u 2 v 1 v 3 v 4 v 5 v 6 v v7 8 13 16 5 10 Gambar 15 Path terpendek Qi.
Iterasi u0 v1 v2 v3 v4 v5 v6 v7 Penambahan S 0 0 (∞, – ) (∞, – ) (∞, – ) (∞, – ) (∞, – ) (∞, – ) (∞, – ) u0 1 (∞, – ) (13, u0) (∞, – ) (16,u0) (8,u0) (∞, – ) (∞, – ) v5 2 (18, v5) (13, u0) (25,v5) (15, v5) – (∞, – ) (∞, – ) v2 3 (18, v5) – (25,v5) (15,v5) – (∞, – ) (∞, – ) v4 4 (18, v5) – (20, v4) – – (∞, – ) (∞, – ) v1 5 – – (20, v4) – – (∞, – ) (∞, – ) v3