download

Matakuliah
Tahun
Versi
: T0026/Struktur Data
: 2005
: 1/1
Pertemuan 25
Network Flow
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• Mahasiswa dapat memilih aplikasi graph
yang tepat untuk pemecahan masalah
network flow
2
Outline Materi
• Pengertian dan kegunaan network flow
• contoh network flow
• implementasi network flow
3
Network Flow
• Weighted Digraph
• Weight = edge capacity
Jumlah kendaraan yang dapat melewati suatu jalan, debit air
yang dapat melalui pipa
• Vertices:
1. Source (s): Verteks sumber aliran
2. Sink (t): Verteks tempat pembuangan aliran
Jumlah outgoing flow di Source = Jumlah incoming flow di Sink
3. Bukan Source/Sink (v atau w):
Incloming flow = Outgoing flow
4
Maximum Flow
• Permasalahan Maximum Flow:
menentukan jumlah maksimum aliran
antara s dan t, hingga terbentuk suatu
maximum flow graph
s
3
s
2
1
a
b
4
3
d
2
3
t
2
0
a
2
c
Graph
3
b
1
2
2
c
d
2
Flow Graph
3
t
5
Algoritma Maximum Flow (1)
Diperlukan 3 graph: graph asal, flow graph Gf dan residual
graph Gr
Maxflow Graph Gf
Graph asal
s
3
a
1
s
0
2
b
4
3
d
t
3
s
0
0
a
2
c
2
Residual Graph Gr
b
0
0
3
c
d
0
t
1
a
0
0
•Pada tahap terakhir weight
menyatakan aliran maksimum;
graph menjadi maximum flow
graph
•weight menyatakan aliran
yang telah terbentuk sampai
tahap tertentu
2
b
4
3
2
c
d
2
t
3
•Weight
menyatakan sisa
aliran yang belum
terpakai dan dapat
ditambahkan pada
flow graph
(Gr=G – Gf)
6
Algoritma Maximum Flow (2)
Tahap 1:
• Gf belum mempunyai aliran pada semua edge
• Gr = G
Tahap 2 dan seterusnya:
• Cari augmenting path dari s ke t pada Gr. Weight minimum
dalam path tsb adalah aliran yang bisa ditambahkan pada Gf.
• Update aliran Gf
• Update Gr :
– Update weight edge searah aliran terakhir Gr = G - Gf
– Tambahkan edge yang berlawanan dgn aliran terakhir
Algoritma berakhir jika tidak ada augmenting path lagi
pd Gr
7
Tahap 1
Graph asal
Maxflow Graph
Residual Graph
s
s
s
3
2
1
a
b
4
3
0
c
d
2
t
3
0
a
2
0
b
0
0
3
c
d
0
t
0
1
a
0
2
b
4
3
2
c
d
2
t
3
Tahap 1:
1. Gf belum mempunyai aliran pada semua edge
2. Gr = G
Tahap 2:
1. Pilih satu augmenting path dari Gr
Misalnya s-b-d-t dengan weight minimum 2
8
s
Tahap 2
3
a
1
s
2
0
b
4
3
a
2
c
d
2
t
0
s
2
3
b
0
0
2
c
3
d
0
t
a
2
2
1
b
4
3
c
2
1
2
t
d
2
Lanjutan tahap 2 :
2. Update aliran Gf
3. Update Gr :
–
Update weight edge searah aliran terakhir Gr = G - Gf
–
Tambahkan edge yang berlawanan dgn aliran terakhir
Tahap 3:
1. Pilih path s-a-c-t dari Gr , weight minimum 2
9
s
Tahap 3
3
a
1
s
2
2
b
4
3
a
2
c
d
2
t
0
2
1
b
0
2
3
a
2
c
d
2
t
s
2
1
b
4
2 1
c
2
2
2
d
1
2
t
2
• Pilih satu path s-a-d-t dari Gr , weight minimum 1
Tahap
terakhir
3
s
2
1
a
3
b
4
3
c
d
2
t
3
2
3
2
0
1
a
2
s
b
c
d
2
t
3
2
1
3
a
2
s
3
b
2
c
d
2
t
3
• Tidak ada lagi path dari s ke t pada Gr
10