1
Pelabelan aliran maksimum dengan algoritma Ford-Fulkerson telah diperkenalkan pada pertengahan 1950, Merupakan algoritma untuk memaksimumkan aliran (flow) dengan kapasitas dan biaya yang terbatas pada jaringan. Algoritma Ford-Fulkerson juga merupakan metode yang dipakai untuk melakukan penambahan aliran dalam suatu jaringan.
Sebuah digraph G = (V,E), yang mempunyai fungsi kapasitas pada tiap sisi (edge) disebut dengan jaringan berkapasitas Pada jaringan ini terdapat dua vertex yg berbeda, 1. Vertex s dengan in-degree 0 disebut dengan sumber. vertex t dengan out-degree 0 disebut dengan tujuan (sink) 3
kapasitas s= 1 7 6 1 1 1 5 3 15 8 t= 6 6 kapasitas tiap edge (i,j) adalah c(i,j) 0.
flow flow (aliran) dlm jaringan adalah nilai integer fungsi f yg didefinisikan di tiap edge. 0 f(i,j) c(i,j) untuk setiap edge (i,j). 5
Conservation Condition Untuk setiap vertex j, dimana j bukan sumber s atau tujuan t, maka penjumlahan aliran yg masuk ke j sama dengan aliran yang ke luar dari j. feasible flow. Aliran yang memenuhi disebut conservation condition feasible flow. 6
Algoritma Ford-Fulkerson menentukan maximum flow pada jaringan. Jika f merupakan feasible flow dalam G. maka Edge (i,j) dikatakan : saturasi jika f(i,j) = c(i,j) bebas jika f(i,j) = 0 positif if 0 < f(i,j) < c(i,j). 7
tiga hal penting yang perlu diperhatikan dalam kaitannya dengan metode menggunakan algoritma Ford-Fulkerson, yaitu: Residual network Flow Augmenting Path Minimum Cutset 8
residual capacity (rc) dari sebuah edge (i,j) sama dengan c(i,j) f(i,j) ketika (i,j) adalah forward edge, dan sama dengan f(i,j) ketika (i,j) adalah backward edge. 9
i flow/cap j i flow/cap j i rc flow j i flow rc j Forward edge Backward edge 10
11
Flow Aughmenting Path merupakan suatu lintasan yang memungkinkan terjadinya suatu penambahan aliran. Syarat dilakukan Flow Aughmenting Path = ci,j fi,j 0 1
Langkah Flow Aughmenting Path: Menaikkan flow forward link sampai menuju ci,j Menurunkan flow arah backward link sampai menuju 0 (kapasitas terendah) 13
1
augmenting path Adalah urutan alternatif dari vertex dan edge s, e1, v1, e, v,, ek, t Dengan syarat tidak ada vertex yang diulang dan tidak ada forward edge yg saturasi dan tidak ada backward edge yg bebas 15
3/8 6/7 /6 /9 s t 5 3 1 6 5 s t 16
Kita dapat meningkatkan flow pada path s ke t dengan menentukan excess flow capacity dari path ini. Dari kiri ke kanan, residual capacities (jumlah flow yg dapat ditingkatkan pada edge) adalah huruf pertama pada masing-masing edge. 17
excess flow capacity dari sebuah augmenting path sama dengan minimum dari residual capacities dari setiap edge dalam path. s 5 3 1 6 5 t s 0 7 1 5 5 t minimum(5, 1,, 5) = 1 18
Theorema: flow dalam sebuah capacitated network adalah maximum flow jika dan hanya jika tidak terdapat augmenting path dalam jaringan Angka menunjukkan kapasitas tiap link X 3 5 W 5 s t 6 Z Y 19
0 X 0 s 0 t 0 6 0 Z 3 0 5 0 W Y 5 0 0 0
Augmenting path: s->x->w->t Excess capacity of s->x->w->t = min(, 3, 5) = 3 3 X 5 0 3 W 1 3 3 s 0 t 3 6 0 Z 0 Y 0 1
Augmenting path: s->x->t Excess capacity of s->x->t = min(1, 5) = 1 0 X s 1 t 6 0 Z 0 3 0 W Y 3 0
Augmenting path: s->z->y->t Excess capacity of s->z->y->t = min(6,, ) = X 0 3 W 0 3 8 s 1 t 8 0 Z Y 0 3
At this point, there are no remaining augmenting paths! Therefore the flow is a maximum = 8. / X 3/3 W 3/5 s 1/5 t /6 Z / Y /
Minimum cut-set yaitu suatu metode pemecahan jaringan menjadi beberapa subnet. Minimum cut-set akan membentuk suatu partisi (membentuk dua buah jaringan baru) 5
6
algoritma Ford-Fulkerson mempunyai dua bagian, yang dinamakan Routine A dan Routine B, Routine A Yg pertama adalah proses labeling yang mencari sebuah flow augmenting path { i.e., path dari s ke t yg mempunyai f < c untuk seluruh arah foward dan f > 0 untuk seluruh arah backward. Jika Routine A menemukan sebuah flow augmenting path,maka : Routine B Routine B mengubah flow yg sesuai. Dengan kata lain, jika sudah tidak terdapat augmenting path, maka flow sudah dipastikan optimal, sesuai dengan teorema: 7
Sebuah flow f mempunyai nilai maksimum jika dan hanya jika tidak terdapat flow augmenting path 8
Terdapat dua tahapan dalam melakukan algoritma Ford- Fulkerson, yaitu: 1. Tahap pelabelan, terdiri atas beberapa langkah a. simpul sumber dengan (0, ) b. Bila i merupakan simpul yang sudah dilabelkan dengan fi,j < ci,j, maka beri label untuk simpul j dengan (i, e(j)) di mana a. e(j) = min (e(i), ci,j - fi,j ). b. Arah aliran dari i ke j c. Bila i merupakan simpul yang sudah dilabelkan, j simpul yang belum dilabelkan dan fj,i > 0, buat label di j dengan (-i, e(j)) dengan a. e(j)= min (e(i), fj,i ) 9
. Pengubahan aliran, terdiri atas beberapa tahap: a. untuk simpul-simpul yang terlabelkan dengan prosedur 1.b, maka aliran ditambah fi,j = fi,j + e(t) b. untuk simpul-simpul yang terlabelkan dengan cara 1.c maka aliran dikurangi fj,i=fi,j e(t) c. Setelah prosedur selesai, hapus label-label tadi. Kemudian ulangi prosedur hingga tidak ditemukan lagi aughmenting path. 30
Jika kita mulai dengan setiap feasible flow (e.g., f = 0). Secara umum, sebuah node dalam tiga kondisi berikut: unlabeled, labeled dan scanned, atau labeled dan unscanned. 31
aliran kapasitas (6,3) 7 7 1 6 3 (8,7) 5 Sumber di simpul 1 dan tujuan di simpul 6 3
1. Labelkan simpul satu dengan (+0, ). Pilih simpul yg SL (sudah label) tapi BS ( belum scan) simpul 1 dipilih 3. Simpul 1 sebagai simpul i. simpul i SL dan labelkan setiap simpul j yg BL (belum label) Cari fij < cij, kalau tidak ada cari fji > 0. Jika fij < cij maka labelkan simpul j dengan (+i,(ej)) dengan e(j)=min (e(i), ci,j - fi,j ). Jika fji>0, maka labelkan simpul j dgn (-i,e(j)) dimana e(j)=min (e(i),fji) Sekarang simpul i SS (sudah scan), simpul j SL dan BS. Cek apakah simpul tujuan SL. Bila SL berarti sudah ditemukan jalan aliran yg diperbesar tambahkan fij + e, bila belum, ulangi langkah & 3 33
Contoh pelabelan Bila i merupakan simpul yang sudah dilabelkan dan fi,j < ci,j, maka beri label untuk simpul j dengan (i, e(j)) di mana e(j) = min (e(i), ci,j - fi,j ). Arah aliran dari i ke j Labelkan simpul sumber dengan (+0, ) e(i) (+1,3) (6,3) (+,3) (+0, ) 7 7 1 6 (+5,) 3 (8,7) 5 (-,) 3
Contoh pelabelan (+1,3) (6,3) (+,3) (+0, ) 7 7 1 6 (+5,) 3 (8,7) Bila i merupakan simpul yang sudah dilabelkan, j simpul yang belum dilabelkan dan fj,i > 0, buat label di j dengan (-i, e(j)) dengan e(j)= min (e(i), fj,i ) 5 (-,) 35
Tujuan SL (sudah label) Tambahkan fij+e=7+=9 (+1,3) (6,3) (+,3) (+0, ) 7 7 1 6 (+5,) 3 (8,7) 5 (-,) 36
Contoh penambahan aliran (6,5) 9 9 1 6 3 (8,7) 5 Tambahkan satuan ke tujuan Tambahkan satuan aliran f56 Kurangkan satuan aliran f5 Tambahkan satuan aliran ke f Tambahkan satuan aliran ke f1 37
Setelah prosedur selesai, hapus label-label tadi. Kemudian ulangi prosedur hingga tidak ditemukan lagi aughmenting path. 38
(+1,1) (6,5) (+,1) (+0, ) 9 9 1 6 3 (8,7) 5 Tidak bisa dilabelkan sampai tujuan, artinya aliran jaringan sudah optimal 39
(,) (8,7) 9 9 1 6 3 (8,1) 5 Sumber di node 1 dan tujuan di node 6 0
1
G: 0 10 0 0 0 8 6 0 0 10 flow capacity s 0 0 0 10 3 9 5 10 t Flow value = 0
G f : 10 8 6 residual capacity 10 s 10 3 9 5 10 t 3
G f : 8 8 6 10 s 10 3 9 5 t 8 Flow value = 8
G f : 10 8 6 10 s 10 3 7 5 10 t Flow value = 10 5
G f : 10 8 6 6 s 6 3 1 8 5 10 t Flow value = 16 6
G f : 10 8 6 8 s 3 1 8 8 5 10 t Flow value = 18 7
3 1 G f : 10 7 1 6 1 9 s 1 3 9 9 5 10 t Flow value = 19 8
3 1 G f : 10 7 1 6 1 9 s 1 3 9 9 5 10 t Cut capacity = 19 Flow value = 19 9
1. Dengan algoritma ford fulkerson, tentukan penambahan aliran yang dapat dilakukan untuk graph berikut (sumber di node 1 dan tujuan di node 6): (8) (8) (8) 1 () () 3 () (8) (3) 5 () 6 50
. Dengan algoritma ford fulkerson, tentukan penambahan aliran yang dapat dilakukan untuk graph berikut (sumber di node 1 dan tujuan di node 6): 9 1 (7,6) (9,3) (8,7) (3,1) (3,1) 3 (8,1) (8,6) (,) 5 (8,3) 6 9 51