Biện minh cho phương pháp Hungary (Kuhn-Munkres)


14

Tôi đã viết một triển khai thuật toán Kuhn-Munkres cho bài toán khớp hoàn hảo lưỡng cực có trọng lượng tối thiểu dựa trên các ghi chú bài giảng tôi tìm thấy ở đây và trên web. Nó hoạt động thực sự tốt, thậm chí trên hàng ngàn đỉnh. Và tôi đồng ý rằng lý thuyết đằng sau nó thực sự đẹp. Vậy mà tôi vẫn tự hỏi tại sao mình phải đi những quãng đường dài như vậy. Tôi thấy rằng những ghi chú bài giảng này không giải thích lý do tại sao chúng ta không thể đơn giản thực hiện chương trình tuyến tính nguyên thủy và chuyển nó sang phương pháp đơn giản. Tất nhiên tôi nghi ngờ rằng đó là một câu hỏi về hiệu suất có thể dự đoán được, nhưng vì tôi chưa thấy nó được tuyên bố rõ ràng, tôi không chắc lắm. Các điểm cực trị của đa giác của nguyên hàm được chứng minh là 0-1, vì vậy dường như chúng ta có thể cung cấp trực tiếp cho việc triển khai đơn giản mà không cần lập công thức kép. Hay tôi là người đơn giản?

Câu trả lời:


16

(Chuyển từ một bình luận.)

Tất nhiên bạn có thể giải bất kỳ LP nào bằng cách sử dụng bộ giải LP đa năng, nhưng các thuật toán chuyên dụng thường có hiệu suất tốt hơn nhiều .

Nó không chỉ là về đảm bảo hiệu suất tiệm cận lý thuyết, mà còn về hiệu suất thực tế trong thực tế. Các thuật toán như phương pháp Hungary có thể cực kỳ hợp lý và chúng tương đối dễ thực hiện chính xác và hiệu quả.

Bạn cũng có thể thường xuyên tránh các vấn đề như sử dụng số hữu tỷ chính xác so với số dấu phẩy động; mọi thứ có thể được thực hiện dễ dàng với số nguyên.


14

Mặc dù câu trả lời đó là chính xác theo nghĩa chung, nhưng cũng rất hữu ích khi cố gắng hiểu cụ thể những gì sai khi áp dụng đơn giản nguyên thủy cho vấn đề chuyển nhượng. Hãy xem xét một vấn đề gán NxN với ma trận chi phí vuông c_ij. LP tương ứng có N ^ 2 biến x_ij để giải. Nghĩ về các x_ij này như một ma trận vuông X, một giải pháp khả thi đòi hỏi X phải là một ma trận hoán vị, được thi hành bởi các ràng buộc 2N-1 trong LP của chúng tôi (thoạt nhìn có vẻ như có các ràng buộc 2N, một cho mỗi hàng và một cho mỗi cột, nhưng chúng không độc lập và chúng tôi bỏ một trong số chúng). Do đó, các ràng buộc LP tạo thành ma trận (2N-1) x (N ^ 2) A.

Bây giờ, một giải pháp cơ bản được hình thành từ việc chọn một tập hợp các biến cơ bản (2N-1). Tuy nhiên, để giải pháp cơ bản này cũng khả thi, chỉ có N trong số các biến đó có thể có giá trị 1 và biến còn lại (N-1) là 0. Do đó, mọi giải pháp khả thi đều bị suy biến. Vấn đề với sự suy biến này là bất kỳ biến số cơ bản nào (N-1) bằng 0 có thể được hoán đổi với bất kỳ biến số không (N ^ 2-2N + 1) nào, được gọi là "trục suy biến", không có ảnh hưởng đến giá trị của hàm mục tiêu [bạn chỉ trao đổi một biến 0 cho một biến khác]. Khi N lớn, thuật toán prx đơn giản sẽ lãng phí rất nhiều thời gian để tạo ra các pivots thoái hóa không cải thiện giải pháp. Đây là mấu chốt của lý do tại sao thuật toán prx đơn giản ngây thơ không được sử dụng trực tiếp để giải quyết vấn đề chuyển nhượng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.