1950,
Algoritma Ford-Fulkerson merupakan salah satu dari algoritma yang dipakai dalam aplikasi graph. Berdasarkan pengertiannya algoritma Ford-Fulkerson yaitu algoritma untuk memaksimumkan aliran (flow) dengan kapsitas dan biaya yang terbatas pada jaringan.
Algoritma Ford-Fulkerson juga merupakan metode yang dipakai untuk melakukan penambahan aliran dalam suatu jaringan.
kapasitas
Sebuah digraph G = (V,E), yang mempunyai fungsi kapasitas pada tiap sisi
1. Vertex s dengan in-degree 0 disebut dengan sumber 2. vertex t dengan out-degree 0 disebut dengan tujuan (sink)
4 27 s= 12 12
24
12
15
t=6
flow ? 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) .
? 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.
flow ? flow
? flow (aliran) dlm jaringan adalah nilai integer fungsi f yg didefinisikan di tiap edge. ? 0 f(i,j) (i,j) .
? 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.
Algoritma Ford-Fulkerson
? tiga hal penting yang perlu diperhatikan dalam kaitannya dengan metode menggunakan algoritma Ford-Fulkerson, yaitu:
? Minimum Cutset
residual capacity
? 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.
flow/cap
i i
flow/cap
j j
flow
rc
i
rc
flow
j i Backward edge 8 j
Forward edge
Residual network
? Residual network berisikan edges dengan flow yang lebih. Berikut diberikan contoh dari grafik residual network
Flow Aughmenting Path ? Flow Aughmenting Path merupakan suatu lintasan yang memungkinkan terjadinya suatu penambahan aliran.
= ci,j fi,j 0
? Menaikkan flow forward link sampai menuju ci,j ? Menurunkan flow arah backward link sampai menuju 0 (kapasitas terendah)
10
11
? augmenting path ? Adalah urutan alternatif dari vertex dan edge ? s, e1, v1, e2, v2, , ek, t
? Dengan syarat tidak ada vertex yang diulang dan tidak ada forward edge yg saturasi dan tidak ada backward edge yg bebas
12
s t
5 3 1 6 2 4 5 4
s t
Kita dapat meningkatkan flow pada path s ke t dengan
excess flow capacity dari sebuah augmenting path sama dengan minimum dari residual capacities dari setiap edge dalam path.
s t
minimum(5, 1, 2, 5) = 1
14
Theorema:
flow jika dan hanya jika tidak terdapat augmenting path dalam jaringan 3
4 s 6
Z
5 4 4
Y
4 0
s
6
X
0 5
W
5 0 0 0
4 0
15
3 1 3 3 6
X 5
2 3 0
t
0
4 0
Z Y
16
X
4 0
3 4
W
2 3
s
6 4 0 0
t
0
17
18
Augmenting path ? At this point, there are no remaining augmenting paths! Therefore the flow
is a maximum = 8.
X
W
3/3
4/4
3/5 1 / 5
4/6 4/4
t Z Y
19
Minimum cut-set
? Minimum cut-set yaitu suatu metode pemecahan jaringan menjadi beberapa subnet. Minimum cut-set akan membentuk suatu partisi
20
21
Algoritma Ford-Fulkerson
? algoritma Ford and Fulkerson mempunyai dua bagian, yang dinamakan Routine A and 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 flow augmenting path,maka : menemukan sebuah
? 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:
22
Theorem.
Sebuah flow f mempunyai nilai
maksimum jika dan hanya jika tidak terdapat flow augmenting path
1.
Tahap pelabelan, terdiri atas beberapa tahap 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 e(j) = min (e(i), ci,j - fi,j ). Arah aliran dari i ke j 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.
a. untuk simpul-simpul yang terlabelkan dengan prosedur 1.b, maka aliran ditambah fi,j = fi,j + e(t)
tahap:
c.
cara 1.c maka aliran dikurangi fj,i=fi,j e(t) Setelah prosedur selesai, hapus label-label tadi.
Kemudian ulangi prosedur hingga tidak ditemukan lagi aughmenting path.
? Jika kita mulai dengan setiap feasible flow (e.g., f = 0). Secara umum, sebuah node dalam tiga kondisi berikut:
? ? ?
scanned, atau
u ns ca
n ne d.
26
contoh
aliran
kapasitas
(6,3)
4
7 7
1 6
3
(8,7)
27
2. Pilih simpul yg SL (sudah label) tapi BS ( belum ?simpul 1 scan)dipilih 3. Simpul 1 sebagai simpul i. simpul i SL dan 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)
4. Cek apakah simpul tujuan SL. Bila SL berarti sudah ditemukan jalan aliran yg diperbesar tambahkan fij + e, bila belum, ulangi langkah 2 & 3
28
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) 2 (6,3) (+2,3)
4
7 7 (+0,)
1 6
(+5,2)
3
(8,7)
Bila i merupakan simpul yang sudah dilabelkan, j simpul yang belum dilabelkan dan fj,i > 0, buat label di j dengan (-4,2)
Tambahkan fij+e=7+2=9
(+1,3) 2 (6,3) (+2,3)
4
7 7 (+0,)
1 6
(+5,2)
3
5
(8,7)
(-4,2)
30
( 6 , 5 )
1 6
3
(8,7) 5
Tambahkan 2 satuan aliran f56 Kurangkan 2 satuan aliran f54 Tambahkan 2 satuan aliran ke f24 Tambahkan 2 satuan aliran ke f12
31
Setelah prosedur selesai, hapus label-label tadi. Kemudian ulangi prosedur hingga tidak ditemukan lagi aughmenting path.
32
Pelabelan lagi
(+1,1) 2 (6,5) (+2,1)
4
(+0,)
9 9
1 6
3
(8,7) 5
? Tidak bisa dilabelkan sampai tujuan, artinya aliran jaringan sudah optimal
33
2 4
(2,2) 9
1 6
3
(8,1) 5
Contoh lain
35
36