DESAIN DAN ANALISIS ALGORITMA MODIFIKASI HUNGARIAN UNTUK PERMASALAHAN PENUGASAN DINAMIS PADA STUDI KASUS PERMASALAHAN SPOJ KLASIK 12749
(Kata kunci: Masalah penugasan dinamis, algoritma hungarian dinamis, graf bipartite)
PRESENTASI TUGAS AKHIR – KI091391
Penyusun Tugas Akhir : Teguh Suryo Santoso (NRP: 5110.100.164) Dosen Pembimbing :
Ahmad Saikhu, S.Si., M.T.
Kerangka Presentasi
Ilustrasi Permasalahan
Latar Belakang
Batasan Masalah
Tujuan
Pendahuluan Rangkaian Proses
Uji Coba
Kesimpulan
Ilustrasi Permasalahan
Secara formal, masalah penugasan dapat dinyatakan sebagai berikut:
Tentukan nilai optimal dari dengan batasan:
) 1
(
S
i j T
ij ij
x w
) 2 ( 1 untuk i S
T j
x
ij
) 3 ( 1 untuk j T
S i
x
ij
Ilustrasi Permasalahan
1
2
3
1
2
3
1 2 3 4
1 3 4 6 3
2 6 7 2 4
3 4 1 3 4
4 6 2 4 3
S T
Ilustrasi Permasalahan
1
2
3
1
2
3
6 7
4 6
S T
6 + 7 + 4 + 6 = 23
1 2 3 4
1 3 4 6 3
2 6 7 2 4
3 4 1 3 4
4 6 2 4 3
Ilustrasi Permasalahan
1
2
3
1
2
3
S T
S T
1 2 3 4
1 3 4 6 3
2 5 3 7 3
3 4 1 3 4
4 6 2 4 3
Ilustrasi Permasalahan
1
2
3
1
2
3
S T
S T
1 2 3 4
1 3 4 8 3
2 5 3 5 3
3 4 1 7 4
4 6 2 8 3
Ilustrasi Permasalahan
1
2
3
1
2
3
S T
S T
1 2 3 4
1 3 4 8 3
2 5 3 5 3
3 4 1 7 4
4 2 2 8 3
Ilustrasi Permasalahan
1
2
3
4
1
2
3
4
1 2 3 4 5
1 3 4 8 3 1
2 5 3 5 3 4
3 4 1 7 4 9
4 2 2 8 3 3
5 3 9 4 1 2
Ilustrasi Permasalahan
• http://www.spoj.com/problems/DAP/
• Diberikan Matriks N×N (N≤100)
• Terdapat M operasi (M ≤ 10000):
o
C i j w : Ubah w
ijmenjadi w
o
X i w
1w
2... w
N: Ubah w
ijmenjadi w
jo
Y i w
1w
2... w
N: Ubah w
jimenjadi w
jo
A : Tambahkan satu baris dan satu kolom dengan semua elemennya memiliki bobot 0
o
Q : Query optimal matching saat ini
• Bobot non negatif dan mampu ditampung dalam variabel
integer 32 bit bertanda
Latar Belakang
• Perubahan bobot dapat terjadi saat
optimal matching sudah diperoleh solusinya
• Setelah terjadi perubahan bobot, tidak efisien untuk menjalankan kembali
algoritma pencarian optimal matching
Batasan Masalah
• Input dan output program menyesuaikan dengan Soal SPOJ Klasik 12749 beserta batasan-batasan lainnya
• Permasalahan diselesaikan dengan pendekatan teori graf
• Bahasa pemrograman yang digunakan adalah
C++
Tujuan
• Menganalisis dan merancang algoritma yang
efisien untuk menyelesaikan masalah penugasan dinamis
• Mengimplementasikan algoritma yang telah dirancang untuk menyelesaikan masalah
penugasan dinamis secara efisien
• Menguji implementasi dari algoritma yang telah dirancang untuk mengetahui kinerja dari
implementasi yang telah dibuat
Kerangka Presentasi
Algoritma Hungarian
Algoritma Hungarian Dinamis
Pendahuluan
Rangkaian Proses
Uji Coba
Kesimpulan
Algoritma Hungarian
Baca Matriks Bobot
Baca nilai w ij
Algoritma Hungarian
Baca Matriks Bobot
Inisialisasi Feasible Node Weighting
u
i= max(w
ij) untuk j = 1...n (6) v
j= 0
Vektor <u, v> dimana
u i +v j ≥ w ij (5)
untuk semua i dan j
Algoritma Hungarian
Baca Matriks Bobot
Inisialisasi Feasible Node Weighting Untuk tiap i∈S (Satu Fase)
Cari augmenting path pada Equality subgraph path yang berawal dari i
Equality Subgraph
adalah subgraph dimana edge- nya memenuhi
u i +v j = w ij (7)
Algoritma Hungarian
Baca Matriks Bobot
Inisialisasi Feasible Node Weighting Untuk tiap i∈S (Satu Fase)
Cari augmenting path pada Equality subgraph path yang berawal dari i
Ditemukan?
Pilih J⊆S dimana |J|<|N(J)|
Ya
Tidak
Algoritma Hungarian
Baca Matriks Bobot
Inisialisasi Feasible Node Weighting Untuk tiap i∈S (Satu Fase)
Cari augmenting path pada Equality subgraph path yang berawal dari i
Ditemukan?
Pilih J⊆S dimana |J|<|N(J)|
Ya
Tidak
Kompleksitas Waktunya O(n
3)
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
S T
1 2 3 4
1 3 4 6 3
2 6 7 2 4
3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
S T
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 6 7 2 4
4 3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
S T
6 + 7 + 4 + 6 = 23
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 6 7 2 4
4 3 4 1 3 4
Masalah Penugasan Dinamis
• Sudah ada solusi optimal matching dari
algoritma Hungarian beserta feasible node weighting-nya
o Perubahan bobot satu baris
o Perubahan bobot satu kolom
o Perubahan bobot satu elemen
o Penambahan satu baris dan satu kolom
Algoritma Hungarian Dinamis
• Dijalankan algoritma Hungarian
• Ketika terjadi satu jenis perubahan:
o
Pertahankan nilai feasible node weighting agar selalu u i +v j ≥ w ij
o
Hapus maksimal satu edge dalam optimal matching
• Setelah terjadi beberapa perubahan dan diminta optimal matching -nya
o
Jalankan k fase algoritma Hungarian dimana k
adalah banyaknya vertex yang belum masuk ke
dalam optimal matching
Algoritma Hungarian Dinamis
• Perubahan pada satu baris i
o
u i = max(w ij – v j ) untuk j = 1...n (13)
o
Hapus edge yang menghubungkan i dengan pasangannya
• Perubahan pada satu kolom j
o
v j = max(w ij – u i ) untuk i = 1...n (14)
o
Hapus edge yang menghubungkan j dengan
pasangannya
Algoritma Hungarian Dinamis
• Perubahan pada satu elemen matriks (i,j)
o
Jika w’ ij < w ij dan i berpasangan dengan j - Hapus edge (i,j) dari optimal matching
o
Jika w’ ij > w ij dan u i + v j < w ij
- Sesuaikan salah satu nilai u i atau v j seperti sebelumnya
- Jika i tidak berpasangan dengan j pada optimal
matching maka hapus edge (i,j) dari optimal
matching
Algoritma Hungarian Dinamis
• Penambahan satu baris dan satu kolom
o
u
(n+1)= max(w
(n+1)(n+1), max(w
(n+1)j– v
j) untuk j = 1...n) (15)
o
v
(n+1)= max(w
i(n+1)- u
i) untuk i = 1...n+1 (16)
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4 6 4 6 2 4 3
u
i= max(w
ij– v
j) untuk j = 1...n (13)
v
j= max(w
ij– u
i) untuk i = 1...n (14)
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T u
2
= 3 v
3= 5
0 0 0 0
1 2 3 4
6 1 3 4 8 3
7 2 5 3 5 3
4 3 4 1 7 4
Algoritma Hungarian Dinamis
0 0 3 0 1 2 3 4 6 1 3 4 8 3 5 2 5 3 5 3 4 3 4 1 7 4 6 4 6 2 6 3
1
2
3
1
2
3 6
5
4
0
0
3
S T Dijalankan 2 kali fase algoritma
Hungarian
Algoritma Hungarian Dinamis
1
2
3
1
2
3 5
3
4
2
0
3
S T 8 + 3 + 4 + 6 = 21
2 0 3 0
1 2 3 4
5 1 3 4 8 3
3 2 5 3 5 3
4 3 4 1 7 4
Kerangka Presentasi
Uji Coba SPOJ
Uji Coba Kebenaran Kasus Kecil
Pendahuluan
Rangkaian Proses
Uji Coba
Kesimpulan Uji Coba Kinerja
Uji Coba SPOJ
Uji Coba SPOJ
Uji Coba Kasus Kecil
3 4 6 3 6 7 2 4 4 1 3 4 6 2 4 3
3 4 6 3 5 3 7 3 4 1 3 4 6 2 4 3
3 4 8 3 5 3 5 3 4 1 7 4 6 2 6 3
3 4 8 3 5 3 5 3 4 1 7 4 2 2 6 3
3 4 8 3 1 5 3 5 3 4 4 1 7 4 9 2 2 6 3 3 3 9 4 1 2
23 21 21 19
34
Digunakan Metode Hungarian untuk mencari optimal matching
Uji Coba Kinerja
Percobaan Jumlah
vertex Waktu (milidetik)
1 10 140
2 20 234
3 30 337
4 40 486
5 50 642
6 60 834
7 70 1032
8 80 1277
9 90 1527
Jumlah operasi = 10000
Operasi penambahan vertex tiap 999 operasi
Operasi query tiap 10 operasi kecuali operasi ke-9990
Uji Coba Kinerja
Percobaan Jumlah operasi
Waktu (milidetik)
1 1000 160
2 2000 305
3 3000 444
4 4000 588
5 5000 710
6 6000 851
7 7000 1034
8 8000 1189
9 9000 1334
10 10000 1483
Jumlah vertex = 90
Operasi penambahan vertex tiap 999 operasi
Kesimpulan
• Algoritma Hungarian dinamis dapat
menyelesaikan masalah penugasan dinamis dengan benar
• Kecepatan algoritma Hungarian dinamis dipengaruhi oleh:
o banyaknya operasi secara linier
o banyaknya vertex secara kuadratik
• O(kn 2 )
Saran
• Kompleksitas algoritma Hungarian dinamis
ditingkatkan menjadi O(kn lg n) atau bahkan
O(kn) dimana k adalah jumlah operasi dan n
adalah jumlah vertex .
TERIMA KASIH
Ilustrasi Permasalahan
N (Ukuran matriks mula-mula) w
11w
12... w
1nw
21w
22... w
2n... ... ... ...
w
n1w
n2... w
nnM (Banyaknya operasi)
C i j w (mengubah biaya satu elemen) X i w
1w
2w
3... w
n(mengubah biaya satu baris) Y j w
1w
2w
3... w
n(mengubah biaya satu kolom)
A (menambah baris dan kolom)
Q (mengetahui optimal matching)
Kerangka Presentasi
Augmenting Path
Teorema Hall
Pendahuluan
Rangkaian Proses
Uji Coba
Kesimpulan Teori
Definisi
Definisi
• Graf bipartite adalah graf yang vertex- nya bisa dibagi menjadi dua himpunan dimana antar vertex dalam satu himpunan tidak saling bertetangga
• Matching adalah subgraf dimana tiap vertex -nya hanya bersinggungan dengan satu edge
• Kardinalitas dari matching adalah banyaknya edge dalam matching
• Maximum-size matching adalah matching yang tidak
bisa dinaikkan kardinalitasnya
Definisi
1
2
3
4
5
1
2
3
4
5
S T
Matching dalam sebuah graf bipartite
Kardinalitas dari matching adalah 4
Maximum-size matching karena
kardinalitasnya tidak bisa dinaikkan
Definisi
• Alternating path adalah path dimana
edge -nya terdiri dari matched edge dan
unmatched edge secara bergantian
• Augmenting path adalah alternating
path yang berawal dan berakhir pada
unmatched vertex
Definisi
1
2
3
4
5
1
2
3
4
5
S T
1 1 2 5 3
Alternating path :
Tidak ada augmenting path
Augmenting Path
Sebuah Matching M dalam graf adalah
maximum-size matching jika dan hanya jika tidak ada lagi augmenting path
yang bisa dibentuk sesuai dengan
matching M
Augmenting Path
1
2
3
4
5
1
2
3
4
5
S T
1
2
3
4
5
1
2
3
4
5
Sebuah matching pada graf
bipartite dengan kardinalitas 3
Augmenting Path
1
2
3
4
1
2
3
4
S T
1
2
3
4
1
2
3
4
Ditemukan augmenting path
1 1 2 5
Augmenting Path
1
2
3
4
5
1
2
3
4
5
S T
1
2
3
4
5
1
2
3
4
5
Augmenting path dibalik
sehingga didapatkan matching
baru dengan kardinalitas 4
Teorema Hall
Sebuah graf bipartite (G = S ∪ T, E) dengan |S|≤|T| mempunyai complete
matching jika dan hanya jika
|J|≤|N(J)| untuk semua J ⊆ S
• Complete Matching adalah maximum-size matching dengan kardinalitas |S|
• J adalah subset dari himpunan vertex S
• N(J) adalah tetangga-tetangga dari J
• |N(J)| adalah jumlah tetangga dari J
Teorema Hall
1
2
3
4
5
1
2
3
4
5
S T Terdapat J⊆S dimana |N(J)|<| J|
Teorema Hall
4
2
3
S T Terdapat J⊆S dimana |N(J)|<| J|
1
2
3
1
4
Teorema Hall
1
2
3
4
5
1
2
3
4
5
S T Maximum-size matching
hanya memiliki kardinalitas 4
Teorema Hall
S T
1
2
3
4
1
2
3
4
Tidak ada J⊆S dimana |N(J)|<| J|
Teorema Hall
S T
1
2
3
4
5
1
2
3
4
5
Maximum-size matching
memiliki kardinalitas 5
Algoritma Hungarian
1 2 3 4
1 3 4 6 3
2 6 7 2 4
3 4 1 3 4
4 6 2 4 3
1
2
3
1
2
3
S T
Algoritma Hungarian
Feasible node weighting
v 1 v 2 v 3 v 4 1 2 3 4 u 1 1 3 4 6 3 u 2 2 6 7 2 4 u 3 3 4 1 3 4
u i +v j ≥ w ij untuk semua i dan j
Algoritma Hungarian
Feasible node weighting
u i +v j ≥ w ij untuk semua i dan j
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 6 7 2 4
4 3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
Equality Subgraph
u i +v j = w ij
S T
Algoritma Hungarian
• Jika equality subgraph sudah memiliki complete matching maka solusi ditemukan
• Jika tidak, pada equality subgraph , tentukan J⊆S dimana |N(J)| <|J|
• δ = min(u i +v j -w ij ) dimana i ∈ J dan j ∉ N(J)
Algoritma Hungarian
• Tentukan nilai feasible node weighting baru u’ dan v’
• Untuk u’
o
u’ i = u i – δ jika i ∈ J
o
u’ i = u i jika i ∉ J
• Untuk v’
o
v’ j = v j + δ jika j∈ N(J)
o
v’ j = v j jika j∉ N(J)
• Proses dilakukan hingga equality subgraph memiliki
Proof
• Untuk u’
o
u’
i= u
i– δ jika i ∈ J
o
u’
i= u
ijika i ∉ J
• Untuk v’
o
v’
j= v
j+ δ jika j∈ N(J)
o
v’
j= v
jjika j∉ N(J)
• u’
i+ v’
j≥ w
ijHanya mungkin dilanggar saat
o
i ∈ J dan j∉ N(J) karena u’
i+ v’
j= u
i– δ + v
j• Tapi karena
o
δ = min(u
i+v
j-w
ij) dimana i ∈ J dan j ∉ N(J)
• u
i– δ + v
j≥ w
ij• u
i+ v
j–w
ij– δ ≥ 0
Proof
• Dari edge i ∈ J , j ∉ N(J) dicari yang δ=min(u i +v j -w ij )
• Lalu semua feasible node weighting i ∈ J , j ∉ N(J) diambil δ
• Setidaknya ada satu edge i ∈ J , j ∉ N(J) yang masuk ke dalam equality subgraph
o Edge dengan δ=min(u i +v j -w ij )
Algoritma Hungarian
• Inisialisasi feasible node weighting
• Untuk tiap vertex i ∈ S
o
Cari augmenting path yang berawal dari i pada equality subgraph
o
Jika ditemukan, balik augmenting path dan keluar dari perulangan
o
Jika tidak, lakukan perubahan feasible node weighting sesuai dengan ketentuan sebelumnya hingga ditemukan augmenting path yang berawal dari i pada equality
subgraph
• Satu tahap perulangan pada proses di atas dinamakan satu
Algoritma Hungarian
1
2
3
1
2
3
S T
1 2 3 4
1 3 4 6 3
2 6 7 2 4
3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
Inisialisasi Feasible node weighting
S T
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 6 7 2 4
4 3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
S T
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 6 7 2 4
4 3 4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Cari augmenting path yang
berawal dari 1
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Augmenting path ditemukan
1 3
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Balik augmenting path
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Cari augmenting path yang
berawal dari 2
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Augmenting path ditemukan
2 2
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Balik augmenting path
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Cari augmenting path yang
berawal dari 3
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Augmenting path ditemukan
3 1
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Balik augmenting path
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Cari augmenting path yang
berawal dari 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Augmenting path ditemukan
4 1 3 4
Algoritma Hungarian
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Balik augmenting path
Algoritma Hungarian Dinamis
• Sudah ada solusi optimal matching dari algoritma Hungarian beserta feasible node weighting-nya
o
Ubah bobot satu baris
o
Ubah bobot satu kolom
o
Ubah bobot satu elemen
o
Tambahkan satu baris dan satu kolom
Algoritma Hungarian Dinamis
• Ubah satu baris i
o
u i = max(w ij – v j ) untuk j = 1...n
o
Hapus edge yang menghubungkan i dengan pasangannya
o
Jalankan satu fase algoritma Hungarian dengan
vertex i sebagai awal dari augmenting path
Proof
• u i + v j ≥ w ij
• u i + v j – w ij ≥ 0
• u i = max(w ij – v j ) untuk j = 1...n
• max(w ij - v j ) + v j – w ij ≥ 0
• max(w ij – v j ) – (w ij – v j ) ≥ 0
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
4
0
0
0
S T
0 0 0 0 1 2 3 4 6 1 3 4 6 3
? 2 5 3 7 3 4 3 4 1 3 4 Terjadi perubahan bobot pada baris kedua
?
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
4
0
0
0
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 6 7 2 4 4 3 4 1 3 4
S T
0 0 0 0 1 2 3 4 6 1 3 4 6 3
? 2 5 3 7 3 4 3 4 1 3 4
u
2= max(w
2j– v
j) untuk j = 1...n
?
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
u
2= 7
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
Hapus edge Dari matching
2 2
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
Perbarui equality subgraph
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
Cari augmenting path dari 2
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
0 0 0 0 1 2 3 4 6 1 3 4 6 3 7 2 5 3 7 3 4 3 4 1 3 4 Tidak ditemukan
augmenting path dari 2
Algoritma Hungarian Dinamis
1
2
3
1
2
3 6
7
4
0
0
0
S T
J = , dan N(J) = 1 2 3
0 0 0 0
1 2 3 4
6 1 3 4 6 3
7 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
4 3
0
0
S T
0 0 2 0 1 2 3 4 4 1 3 4 6 3 5 2 5 3 7 3 4 3 4 1 3 4
4
5
2
δ = min(3 ,2, 3, 2, 4, 4) = 2
Algoritma Hungarian Dinamis
1
2
3
1
2
4 3
0
0
S T
0 0 2 0 1 2 3 4 4 1 3 4 6 3 5 2 5 3 7 3 4 3 4 1 3 4 Perbarui Equality subgraph
4
5
2
Algoritma Hungarian Dinamis
1
2
3
1
2
3 4
5
4
0
0
2
S T
Cari augmenting path dari 2
0 0 2 0
1 2 3 4
4 1 3 4 6 3
5 2 5 3 7 3
4 3 4 1 3 4
Algoritma Hungarian Dinamis
1
2
3
1
2
3 4
5
4
0
0
2
S T
0 0 2 0 1 2 3 4 4 1 3 4 6 3 5 2 5 3 7 3 4 3 4 1 3 4 Augmenting path ditemukan
2 3 1 2
Algoritma Hungarian Dinamis
1
2
3
1
2
3 4
5
4
0
0
2
S T
0 0 2 0
1 2 3 4
4 1 3 4 6 3
5 2 5 3 7 3
4 3 4 1 3 4
Balik augmenting path
Algoritma Hungarian Dinamis
• Ubah satu kolom j
o
v j = max(w ij – u i ) untuk i = 1...n
o
Hapus edge yang menghubungkan j dengan pasangannya
o