Langkah Penyusunan Program Aplikasi Algoritma Kuhn Munkres dalam Bahasa Pemgrograman

29 mempunyai kompleksitasnya sebesar 4 n O . Langkah ke-4 dibentuk sebanyak 2 n O kali, setiap kali langkah ke-4 dijalankan, 2 n O langkah telah dibentuk. Pada saat langkah ke-5 di bentuk setiap kali maka langkah ke-4 telah selesai dijalankan, dan susunan dari G ℓ punya kompleksitas 2 n O , secara keseluruhan kompleksitas dari langkah ke-5 adalah 4 n O . Oleh karena itu algorithma Kuhn- Munkres punya kompleksitas sebesar 4 n O .

4.6. Aplikasi Algoritma Kuhn Munkres dalam Bahasa Pemgrograman

4.6.1. Langkah Penyusunan Program

Penggunaan algoritma Kuhn Munkres dalam bahasa pemrograman digunakan untuk mempermudah dalam mencari matching maksimal berbobot, dengan jumlah vertex banyak. Algoritma Kuhn Munkres dapat diterjemahkan ke dalam bahasa pemrograman dengan menggunakan software Matlab 6.1. Dalam tulisan ini, program diberi nama KuhnMunkres. Program ini memiliki diagram alir seperti tampak pada Gambar 4.7, diambil dari Bondy dan Murty 1976:89, dengan perubahan pada notasi dan proses input data. Dalam program ini, terdapat satu program utama yaitu KuhnMunkres dan tiga function untuk mempermudah dalam pembuatan program yaitu Matchmax , Vsingle dan Newedge. Dalam program KuhnMunkres dimulai dengan memasukkan bobot edge yang menghubungkan dua partisi graf, dengan jumlah bobot vertex nxn. Proses input data diberikan dua pilihan yaitu memasukkan secara manual atau dengan generate data. Setelah memilih, untuk input data manual format input data diawali dengan tanda “[” dan diakhiri dengan “]”, antara bobot edge satu dengan yang lain masih dalam satu baris diberi tanda “,”, sedang untuk ganti baris diberi tanda “;”. Setelah memasukkan bobot vertex, kemudian dicari bobot yang paling maksimal tiap barisnya, sehingga akan diperoleh subgraf perentang H ℓ . Pada graf H ℓ dapat dibentuk matching maksimal 30 dengan menggunakan function Matchmax. Pilih salah satu matching maksimal yaitu Mlx, kemudian dilakukan pengecekan apakah Mlx semua vertex-nya sudah masuk didalam matching tersebut, jika semua vertex sudah termasuk didalam Mlx maka matching tersebut adalah matching maksimal sehingga program akan berhenti dan Mlx adalah matching maksimal berbobot. Jika semua vertex tidak masuk dalam Mlx, maka terdapat vertex tunggal yang tidak masuk dalam Mlx, dengan menggunakan function Vsinggle akan diperoleh vertex tunggal yang belum masuk dalam Mlx. Langkah berikutnya adalah penyusunan pohon alternating. Penyusunan pohon alternating dimulai dengan mendefinisikan variabel baru, yaitu S adalah vertex anggota V 1 yang masuk dalam penyusunan pohon alternating, NS adalah vertex anggota V 2 yang adjecent dengan anggota S, T adalah vertex anggota V 2 yang masuk dalam penyusunan pohon alternating. Langkah awal dalam penyusunan pohon alternating adalah dengan menggunakan vertex tunggal misal 1 v sebagai akar pohon alternating. Dengan definisi awal { } φ ← ← T v S , 1 . Seperti yang tertera pada diagram alir pada Gambar 4.7, dilakukan pengecekan apakah T S N G = , jika T S N G = , maka dilakukan pelabelan baru dengan menghitung , , G m . Pelabelan baru dilakukan dengan menggunakan function Newedge , dengan output pelabelan baru dan graf G yang baru. Pada graf G terdapat vertex u dalam S N G \T . Jika T S N G ≠ , maka terdapat vertex u dalam S N G \T . Kemudian dicek apakah vertex u adalah vertex matching dalam Mlx , jika vertex u adalah vertex matching maka terdapat vertex v, dimana uv adalah edge matching dalam Mlx. Dengan penambahan vertex u dan vertex v dalam pohon alternating maka anggota himpunan S menjadi { } S v S → ∪ , dan anggota himpunan T menjadi { } T u T → ∪ . Dengan penambahan anggota pada himpunan S maka kembali pada langkah pengecekan apakah T S N G = . 31 Gambar 4.7. Diagram Alir Program KuhnMunkres ∃ an M-augmenting v,u-path P END M is an optimal matching START NO : YES Manual input nxn vertex Generate input nxn vertex NO : ∃ a vertex u in T S N G \ Input manual or generate { } T S v → → φ , M M → ? T S N G = Newedge function To compute , , G m NO : ∃ an M-unsaturated vertex v in X Vsingle function Is X M-saturated in G l YES Matchmax function to find G l and matching M G G → → { } { } T u T S v S → ∪ → ∪ ∃ a vertex u in T S N G \ Is v M-saturated ? YES M uv ∈ ∃ P E M M ∆ = 32 Jika pada saat pengecekan vertex u bukan merupakan anggota vertex matching maka terdapat lintasan augmenting dari akar pohon alternating 1 v sampai vertex u. Sehingga dapat dibentuk matching baru dengan Ep M P E Mlx Mla ∪ − = . Setelah ditemukan matching baru, kemudian kembali pada langkah pengecekan apakah semua vertex sudah termasuk dalam matching baru tersebut, jika semua sudah termasuk maka Mla adalah matching maksimal berbobot. Jika masih terdapat vertex tunggal maka ulangi langkah dari pengambilan vertex tunggal sebagai akar pohon alternating sampai semua vertex termasuk dalam matching terbaru. Penghitungan bobot maksimal dilakukan dengan menjumlahkan bobot edge pada matching maksimal yang telah diperoleh. Listing program dapat dilihat pada halaman lampiran.

4.6.2. Analisis Hasil Pemrograman