BAB 2
LANDASAN TEORI
2.1. Konsep Dasar Graph
Sebelum sampai pada pendefinisian masalah network flow, terlebih dahulu pada bagian ini akan diuraikan mengenai konsep-konsep dasar dari model graph dan representasinya dalam memodelkan masalah network flow.
Definisi 2.1. Sebuah graph G adalah pasangan (V,E) di mana V adalah himpunan tak kosong yang anggotanya disebut verteks dan E adalah himpunan yang anggotanya adalah pasangan tak berurut dari verteks V yang disebut edge.
Secara umum graph dapat digambarkan dengan suatu diagram di mana verteks ditunjukkan sebagai titik yang dinotasikan dengan vi , i = 1, 2, …,P dan edge digambarkan dengan sebuah garis lurus atau garis lengkung yang menghubungkan dua verteks (vi, vj) dan dinotasikan dengan ek . Sebagai ilustrasi dapat dilihat Gambar 2.1.
yaitu suatu graph yang mempunyai lima verteks dan enam edge.
Gambar 2.1. Graph dengan lima verteks dan enam edge V1
V2
e4
V4
V5 V3
e2
e5 e3 e6
e1
2.2. Graph Berlabel
Hubungan antar verteks-verteks dalam graph perlu diperjelas. Hubungan tidak cukup hanya menunjukkan verteks-verteks mana yang berhubungan langsung, tetapi juga seberapa kuat hubungan itu. Sebagai contoh, andaikata suatu graph menyatakan “peta”
suatu daerah. Verteks-verteks graph menyatakan kota-kota yang ada di daerah tersebut. Edge-edge dalam graph menyatakan jalan yang menghubungkan kota-kota tersebut.
Informasi tentang peta daerah perlu diperjelas dengan mencantumkan jarak antara 2 kota yang berhubungan. Informasi tentang jarak dibutuhkan karena dalam graph, letak verteks dan panjang edgenya tidak menyatakan jarak 2 kota yang sebenarnya seperti halnya dengan peta yang sebenarnya. Jadi setiap garis dalam graph berhubungan dengan suatu label yang menyatakan bobot garis tersebut.
Definisi 2.2. Graph Berlabel (weighted graph) adalah suatu graph tanpa edge paralel di mana setiap edgenya berhubungan dengan suatu bilangan riil tak negatif yang menyatakan bobot edge (w(e)) tersebut. Jumlah bobot semua edge disebut Total Bobot.
Matriks yang bersesuaian dengan graph berlabel G adalah matriks hubung A = (aij) dengan aij = bobot edge yang menghubungkan verteks vi dengan verteks vj. Jika verteks vi tidak berhubungan langsung dengan verteks vj, maka aij = ∞, dan aij = 0 di mana i = j.
Contoh 2.1.
Dalam suatu propinsi, ada 8 kota (v1, v2, …, v8) yang akan dihubungkan dengan jaringan listrik. Biaya pemasangan jaringan listrik yang mungkin dibuat antar 2 kota adalah sebagai berikut:
Edge Kota yang dihubungkan Biaya per satuan e4
e7
e2 e8 e9 e1 e3 e10
e5
e11 e6
v2 – v3 v4 – v6
v1 – v7 v3 – v4 v3 – v5 v1 – v2 v1 – v4 v6 – v8 v7 – v8
v5 – v6 v6 – v7
3 4 5 5 5 15 15 15 15 15 18
a. Graph berlabel untuk menyatakan jaringan listrik di 8 kota dapat digambarkan pada Gambar 2.2. di bawah ini. Angka dalam kurung menyatakan bobot edge yang bersangkutan. Bobot tersebut menyatakan biaya pengadaan jaringan listrik.
Gambar 2.2.Graph Jaringan listrik di 8 kota v1
v4
v6
v8
v7
v2
v3
v5 e2 (5) e3 (15)
e5 (15) e6 (18)
e7 (4)
e8 (5)
e9 (5) e4 (3) e1 (15)
e10 (15)
e11 (15)
b. Matriks hubung untuk menyatakan graph berlabel pada Gambar 2.2. adalah matriks A = (aij) dengan aij =
Jarak verteks vi dengan vj di mana ada edge yang menghubungkan verteks vi
dengan vj
∞ di mana tidak ada edge yang menghubungkan verteks vi dengan vj
0 di mana i = j
v1 v2 v3 v4 v5 v6 v7 v8
v1 0 15 ∞ 15 ∞ ∞ ∞ ∞
v2 15 0 3 ∞ ∞ ∞ ∞ ∞
v3 ∞ 3 0 5 5 ∞ ∞ ∞
A = v4 15 ∞ 5 0 ∞ 4 ∞ ∞
v5 ∞ ∞ 5 ∞ 0 15 ∞ ∞
v6 ∞ ∞ ∞ 4 15 0 18 15
v7 5 ∞ ∞ ∞ ∞ 18 0 15
v8 ∞ ∞ ∞ ∞ ∞ 15 15 0
Misalkan G adalah sebuah graph berarah. Sebuah edge berarah e = [u,v]
dikatakan mulai pada verteks awal u dan berahkhir di verteks akhir v, u dan v dikatakan adjacent.
Definisi 2.3. Derajat luar dari v, (outdeg (v)) adalah jumlah edge yang berawal pada v, dan derajat dalam dari v (indeg (v)) adalah jumlah edge yang berakhir di v.
Jika setiap edge mulai dan berakhir pada suatu verteks, maka jumlah derajat-dalam dan jumlah derajat-luar harus sama dengan n, yaitu jumlah edge pada G.
Definisi 2.4. Sebuah verteks v di G disebut sumber (source) bila mempunyai derajat- luar positif tetapi derajat-dalam nol. Sedangkan, v disebut tujuan (sink) jika v mempunyai derajat-dalam positif tetapi derajat-luar nol.
Perhatikan Gambar 2.3.
Gambar 2.3. Graph G dengan 7 verteks
Gambar 2.3. di atas terdiri dari:
Verteks A B C D E F G
Derajat-dalam (indegree) 0 2 2 4 1 1 2
Derajat-luar (outdegree) 4 1 0 0 3 3 1
Jumlah derajat dalam dan jumlah derajat luar sama dengan 12 yaitu jumlah arc.
Pada Gambar 2.3. Verteks A adalah sumber (source) karena edgenya berawal pada A tetapi tidak berakhir di A. Sedangkan C dan D adalah verteks tujuan (sink) karena edgenya berakhir di C dan di D tetapi tidak berawal di verteks itu.
2.3. Path Minimum
Salah satu aplikasi graph berarah berlabel yang sering dipakai adalah mencari path terpendek diantara 2 verteks. Jika masalahnya adalah mencari jalur tercepat, maka path terpendek tetap dapat digunakan dengan cara mengganti nilai edge.
A B
G D E
F C
Definisi 2.5. Misalkan G adalah suatu graph. Di mana v dan w adalah 2 verteks dalam G. Suatu Walk dari v ke w adalah barisan verteks-verteks berhubungan dan edge secara berselang-seling, diawali dari verteks v dan diakhiri pada verteks w. Walk dengan panjang n dari v ke w ditulis: v0 e1 v1 e2 v2 … vn-1 en vn dengan v0 = v; vn = w; vi-1 dan vi adalah verteks-verteks ujung edge ei.
Path dengan panjang n dari v ke w adalah walk dari v ke w yang semua edgenya berbeda. Path dari v ke w dituliskan sebagai v = v0 e1 v1 e2 v2 … vn-1 en vn = w dengan ei ≠ ejuntuk i ≠ j.
Definisi 2.6. Lintasan adalah suatu barisan edge
(
ei ,ei ,...,eik)
2
1 sedemikian rupa
sehingga verteks terminal
ij
e berimpit dengan verteks awal
) 1 (j+
ei untuk 1 ≤ j ≤ k – 1.
Contoh 2.2.
Gambar 2.4. Graph dengan 6 verteks dan 10 edge
Pada Gambar 2.4. di atas terdapat:
a. Semua edge berbeda (e1, e3, e4, dan e5 masing-masing muncul sekali). Ada verteks yang berulang (v3 muncul 2 kali). Verteks awal dan verteks akhir tidak sama (verteks awal = v1 dan verteks akhir = v4). Barisan ini merupakan path dari v1 ke v4 dengan panjang 4.
b. Ada edge yang muncul lebih dari sekali, yaitu e5 (muncul 2 kali) berarti barisan tersebut merupakan walk dari v1 ke v5 dengan panjang 5.
v1
v2
v3
v6 v5
v4
e10
e9
e6
e5
e4
e7
e8
e3
e1 e2
2.4. Representasi Graph dalam Matriks
Matriks dapat digunakan untuk menyatakan suatu graph. Jika graph dinyatakan sebagai suatu matriks, maka perhitungan-perhitungan yang diperlukan dapat dilakukan dengan mudah.
Kesulitan utama merepresentasikan graph dalam suatu matriks adalah keterbatasan matriks untuk mencakup semua informasi yang ada dalam graph.
Akibatnya ada bermacam-macam matriks untuk menyatakan suatu graph tertentu.
Tiap-tiap matriks tersebut mempunyai keuntungan yang berbeda-beda dalam menyaring informasi yang dibutuhkan pada graph.
Misalkan G adalah sebuah graph dengan verteks-verteks v1, v2, …, vm dan edge-edge e1, e2, …, en.
Definisi 2.7. Matriks adjacency
Misalkan A = (aij) adalah matriks m x m yang didefinisikan oleh
1 jika {u, v} adalah edge, yaitu vi adjacent terhadap vj 0 lainnya
A disebut matriks adjacency dari G. Perhatikan aij = aji , sehingga A adalah sebuah matriks simetris. (Didefinisikan sebuah matriks adjacency untuk sebuah multigraph dengan pemisalan aij menyatakan jumlah edge {vi, vj }.)
Definisi 2.8. Matriks Insiden
Misalkan M = (mij) adalah matriks m x n yang didefinisikan oleh 1 verteks vi adalah incident pada edge ej.
0 lainnya
M disebut matriks incidence dari G.
Perhatikan Gambar 2.5 berikut ini.
aij =
m =
Gambar 2.5. Graph dengan 5 verteks dan 8 edge
Pada Gambar 2.5. Matriks adjacency A = (aij) dari graph G.
Karena G mempunyai 5 verteks maka A akan menjadi matriks 5 x 5.
Jika ada sebuah edge antara vi dan vj, maka aij = 1. Jika sebaliknya, maka aij = 0. Ini akan menghasilkan matriks berikut:
v1 v2 v3 v4 v5
v1 0 1 1 1 1
A = v2 1 0 1 0 0
v3 1 1 0 1 1
v4 1 0 1 0 1
v5 1 0 1 1 0
Pada Gambar 2.5. Matriks Incidence M = (mij) dari graph G.
Jika G mempunyai 5 verteks dan 8 edge, maka M akan menjadi matris 5 x 8. Jika verteks vi anggota dari edge ej, maka mij =1, jika sebaliknya, maka mij = 0 untuk lainnya. Ini akan menghasilkan matriks berikut.
v4
v3 v5
v2
v1
e5
e8 e6
e7
e4
e3
e2
e1
e1 e2 e3 e4 e5 e6 e7 e8
v1 1 1 1 0 1 0 0 0
v2 1 0 0 1 0 0 0 0
A = v3 0 0 1 1 0 0 1 1
v4 0 0 0 0 1 1 0 1
v5 0 1 0 0 0 1 1 0
2.5. Shortest Path
Setiap path dalam digraph mempunyai nilai yang dihubungkan dengan nilai path tersebut, yang nilainya adalah jumlah dari nilai edge path tersebut. Dari ukuran dasar ini dapat dirumuskan masalah seperti “ mencari lintasan terpendek antara dua verteks dan meminimumkan biaya”.
Banyak bidang penerapan mensyaratkan untuk menentukan lintasan terpendek berarah dari asal ke tujuan di dalam suatu distribusi aliran berarah. Algoritma yang diberikan dapat dimodifikasi dengan mudah untuk menghadapi lintasan berarah pada setiap iterasinya.
Suatu versi yang lebih umum dari masalah lintasan terpendek adalah menentukan lintasan terpendek dari sembarang verteks menuju ke setiap verteks lainnya. Pilihan lain adalah membuang kendala tak negatif bagi “jarak”. Suatu kendala lain dapat juga diberlakukan dalam suatu masalah lintasan terpendek.
Definisi 2.10. Lintasan terpendek antara dua verteks dari s ke t dalam network adalah lintasan graph berarah sederhana dari s ke t dengan sifat di mana tidak ada lintasan lain yang memiliki nilai terendah.
Contoh 2.4.
Gambar 2.6. Shortest path (garis tebal)
Pada Gambar 2.6. dapat dilihat bahwa setiap edge terletak pada path-path dari titik 1 ke titik 5. Edge merepresentasikan saluran dengan kapasitas tertentu (contohnya, air) dapat dialirkan melalui saluran. Sedangkan verteks merepresentasikan persimpangan saluran. Air mengalir melalui verteks pada verteks yang dilalui
Lintasan terpendek dari verteks pada graph di atas adalah P = {1 – 4, 4 – 5} dengan kapasitas 4.
2.6. Linear Programming
Perumusan linear programming dapat membantu prosedur penyelesaian lebih efisien. Berikut ini adalah bentuk umum linear programming.
Minimumkan c1x1+c2x2 +...+cnxn (1) Dengan kendala
1 1
2 12 1
11x a x ... a x b
a + + + n n = (2)
2 2
2 22 1
21x a x ... a x b
a + + + n n = .
.
m n mn m
mx a x a x b
a 1 1+ 2 2+...+ = 0
,...,
2 ,
1x xn ≥
x (3)
3
5 2
X7
3
X5
4
1 2
4
X2
X4
1 3
X3
1 X6
5 X8 2 X1
Pada program linear ini, x1, x2, … , xn mewakili keputusan variabel yang tidak diketahui; c1, c2, … , cn adalah biaya koefisien; b1, b2, … , bn adalah nilai di samping kanan; dan aij, i = 1 sampai m dan j = 1 sampai n, dinamakan koefisien teknologi.
Pernyataan (1) dinamakan fungsi objektif; (2) dinamakan kendala; dan (3) adalah kendala tidak negatif. Beberapa penyelesaian memenuhi semua kendala, dinamakan feasible solution.
Pada perumusan ini, kendala ditulis dalam bentuk persamaan. Umumnya, kendala linear programming mempunyai relasi ≥ atau ≤ tetapi selalu dapat diubah dalam persamaan dengan penjumlahan slack variabel. Fungsi objektif (1) juga dapat diekspresikan sebagai maksimum sebagai pengganti minimum.
Dapat dirumuskan menjadi:
Minimumkan
∑
= n
j j jx c
1
Dengan kendala ,
1
i n
j j
ijx b
a =
∑
=i =1,2,...,m ,
≥0
xj j =1,2,...,m
2.7. Flow
Definisi 2.10 Suatu flow pada network G = (N,A) adalah suatu graph berarah dan berkapasitas, di mana setap arc(x,y) Є A memiliki kapasitas nonnegative c(x,y) ≥ 0.
Jika (x,y) Є A, maka diasumsikan c(x,y) = 0.
Gambar 2.7. Flow dalam network
Gambar 2.7 memperlihatkan bahwa setiap arc terletak pada tiap-tiap node dari sumber s ke tujuan t. Arc menggambarkan saluran dengan kapasitas tertentu.
Kapasitas merupakan batas maksimal di mana setiap material (misalnya air, gas, listrik) dapat dialirkan melalui saluran. Sedangkan node menggambarkan persimpangan saluran. Material mengalir melalui node tanpa mengumpulkan material tersebut pada node yang dilalui (kecuali pada node sumber dan node tujuan).
2.8. Minimal Cost Flow
Definisi 2.11 Cost flow pada arc dalam network flow dengan arc cost adalah perkalian antara arc-arc flow dan cost. Cost pada flow adalah jumlah dari cost flow pada arc.
Andaikan sebuah directed network (jaringan berarah) G, terdiri atas beberapa node (titik) N = {1,2,…,m) dan beberapa directed arcs (busur berarah) S = {(i,j), (k,l),…,(s,t)} dan saling terhubung pada node N. Arc (i,j) disebut incident (peristiwa) dari node i dan j dan terhubung dari node i ke node j. Dengan demikian diperoleh bahwa network memiliki m node dan n arc.
Untuk setiap node i dalam network G, misalkan jumlah bi adalah ketersediaan barang (bi > 0) atau permintaan barang (bi < 0). Node dengan bi > 0 sering disebut sources (sumber), dan node dengan bi < 0 sering disebut tujuan (sinks). Jika bi = 0,
s t
V2 V1
V4 V3
8
6
6
6
6
8
0 5 4
a2
a1
a3
a6
a5
a4
a7
a9
a8
maka tidak ada barang yang tersedia pada node i dan tidak diperlukan. Pada permasalahan ini node i sering disebut intermediate (perantara) node. Untuk setiap arc (i,j) pada xij adalah jumlah aliran pada arc (asumsikan 0 ≤ xij) dan cij adalah biaya pengiriman sepanjang arc.
Asumsikan bahwa total penyediaan barang sama dengan total permintaan di dalam network. Secara matematika dapat dituliskan sebagai berikut.
Minimumkan
∑∑
= =
m
i m
j ij ijx c
1 1
Kendala
∑ ∑
= =
=
m −
j
m
k ki
ij x
x
1 1
bi i = 1, 2, ...,m
xij ≥ 0 i,j = 1, 2, …,m (2.1)
Persamaan (2.1) disebut flow conservation atau persamaan Kirchhoff . Di dalam persamaan kekekalan, menunjukkan jumlah aliran yang keluar dari node i sedangkan menunjukkan jumlah aliran yang masuk ke node i. Persamaan tersebut mengharuskan aliran yang keluar dari node i, , akan sama dengan bi.
Jika bi < 0, maka akan lebih banyak aliran yang masuk pada node i dari pada yang keluar.
∑= m
j
xij
∑
1= m
k
xki
1
∑ ∑
= =
m −
j
m
k ki
ij x
x
1 1