Pembenaran untuk metode Hongaria (Kuhn-Munkres)

14

Saya menulis implementasi dari algoritma Kuhn-Munkres untuk masalah pencocokan sempurna bipartit berat minimum berdasarkan catatan kuliah yang saya temukan di sana-sini di web. Ini bekerja dengan sangat baik, bahkan pada ribuan titik. Dan saya setuju bahwa teori di baliknya benar-benar indah. Namun saya masih bertanya-tanya mengapa saya harus berusaha sejauh itu. Saya menemukan bahwa catatan kuliah ini tidak menjelaskan mengapa kita tidak bisa begitu saja mengambil program linear primal dan meneruskannya ke metode simpleks. Tentu saja saya curiga ini masalah kinerja yang dapat diprediksi, tetapi karena saya belum melihatnya secara eksplisit, saya tidak terlalu yakin. Titik ekstrem polytope tentang primal terbukti berada pada 0-1, sehingga tampaknya kita dapat mengumpankannya langsung ke implementasi simpleks tanpa merumuskan dual. Atau apakah saya bersikap sederhana?

Kaveh
sumber

Jawaban:

16

(Pindah dari komentar.)

Tentu saja Anda dapat menyelesaikan LP apa pun dengan menggunakan LP solver serba guna, tetapi algoritme khusus biasanya memiliki kinerja yang jauh lebih baik.

Ini bukan hanya tentang jaminan kinerja asimptotik teoretis, tetapi juga tentang kinerja dunia nyata yang praktis. Algoritma seperti metode Hungaria dapat sangat efisien dan relatif mudah diimplementasikan dengan benar dan efisien.

Anda juga dapat sering menghindari masalah seperti menggunakan angka rasional yang tepat vs angka floating point; semuanya bisa dilakukan dengan mudah dengan integer.

Jukka Suomela
sumber
14

Meskipun jawaban itu benar dalam arti umum, juga membantu untuk mencoba memahami secara spesifik apa yang salah ketika menerapkan primal simplex pada masalah penugasan. Pertimbangkan masalah penugasan NxN dengan matriks biaya kuadrat c_ij. LP yang sesuai memiliki N ^ 2 variabel x_ij untuk dipecahkan. Memikirkan x_ij ini sebagai matriks persegi X, solusi yang layak mengharuskan X menjadi matriks permutasi, yang ditegakkan oleh kendala 2N-1 di LP kami (mungkin pada pandangan pertama tampak bahwa ada kendala 2N, satu untuk setiap baris dan satu untuk setiap kolom, tetapi mereka tidak semuanya independen dan kami menjatuhkan salah satunya). Batasan LP dengan demikian membentuk matriks (2N-1) x (N ^ 2) A.

Sekarang, solusi dasar terbentuk dari pemilihan satu set (2N-1) variabel dasar. Namun, untuk solusi dasar ini juga layak, hanya N dari variabel-variabel tersebut yang dapat memiliki nilai 1, dan yang lainnya (N-1) adalah 0. Dengan demikian, setiap solusi yang layak mengalami degenerasi. Masalah dengan degenerasi ini adalah bahwa salah satu (N-1) variabel dasar yang 0 dapat ditukar dengan salah satu dari variabel non-dasar (N ^ 2-2N + 1), yang disebut "poros degenerasi", tanpa berpengaruh pada nilai fungsi objektif [Anda hanya menukar satu variabel 0 dengan variabel lain]. Ketika N besar, algoritma primal simplex membuang banyak waktu untuk membuat pivot yang merosot yang tidak meningkatkan solusi. Ini adalah inti mengapa algoritma simpleks primitif naif tidak digunakan secara langsung untuk menyelesaikan masalah penugasan.

BobC
sumber