Macarca yönteminin gerekçesi (Kuhn-Munkres)


14

Burada ve orada bulduğum ders notlarına dayanarak minimum ağırlıktaki iki taraflı mükemmel eşleme problemi için Kuhn-Munkres algoritmasının bir uygulamasını yazdım. Binlerce köşe noktasında bile gerçekten iyi çalışıyor. Ve arkasındaki teorinin gerçekten güzel olduğuna katılıyorum. Yine de neden bu kadar uzunluğa gitmem gerektiğini merak ediyorum. Bu ders notlarının neden sadece temel doğrusal programı alıp simpleks yöntemine geçiremeyeceğimizi açıklamadığını görüyorum. Elbette bunun tahmin edilebilir bir performans meselesi olduğundan şüpheleniyorum, ancak açıkça ifade edilmediğini gördüğüm için çok emin değilim. Politopun primalın uç noktalarının 0-1'de olduğu kanıtlanmıştır, bu yüzden ikiliyi formüle etmeden doğrudan bir simpleks uygulamasına besleyebileceğimiz anlaşılmaktadır. Yoksa ben basit miyim?

Yanıtlar:


16

(Bir yorumdan taşındı.)

Tabii ki herhangi bir LP'yi genel amaçlı bir LP çözücü kullanarak çözebilirsiniz, ancak özel algoritmalar genellikle çok daha iyi bir performansa sahiptir.

Sadece teorik asimtotik performans garantileri değil, aynı zamanda pratik gerçek dünya performansı ile de ilgilidir. Macar yöntemi gibi algoritmalar son derece basitleştirilebilir ve doğru ve verimli bir şekilde uygulanması nispeten kolaydır.

Ayrıca tam olarak rasyonel sayılar veya kayan nokta sayıları kullanma gibi sorunlardan da kaçınabilirsiniz; her şey tamsayılarla kolayca yapılabilir.


14

Her ne kadar bu cevap genel anlamda doğru olsa da, atama problemine primal simpleks uygularken neyin yanlış gittiğini anlamaya çalışmak da yararlı olacaktır. C_ij kare maliyet matrisiyle bir NxN atama problemi düşünün. Karşılık gelen LP'nin çözmek için N ^ 2 değişkeni x_ij vardır. Bu x_ij'i bir kare matris X olarak düşünmek, uygulanabilir bir çözüm, X'in LP'mizdeki 2N-1 kısıtlamaları tarafından uygulanan bir permütasyon matrisi olmasını gerektirir (ilk bakışta her satır için bir tane olmak üzere 2N kısıtlamaları var gibi görünebilir ve her sütun için bir tane, ancak hepsi bağımsız değil ve biz de bunlardan birini bırakıyoruz). LP kısıtlamaları böylece bir (2N-1) x (N ^ 2) A matrisini oluşturur.

Şimdi, bir dizi (2N-1) temel değişken seçilerek temel bir çözüm oluşturulmuştur. Bununla birlikte, bu temel çözeltinin de uygulanabilir olması için, bu değişkenlerin sadece N değeri 1 değerine sahip olabilir ve diğeri (N-1) 0'dır. Böylece, her uygulanabilir çözüm dejenere olur. Bu dejenerasyon ile ilgili problem, 0 olan (N-1) temel değişkenlerin herhangi birinin, "dejenere pivot" adı verilen (N ^ 2-2N + 1) temel olmayan değişkenlerden herhangi biri ile değiştirilebilmesidir. objektif fonksiyonunun değeri üzerine etkisi [sadece bir 0 değişkeni diğeri için değiştiriyorsunuz]. N büyük olduğunda, primal simpleks algoritması, çözümü geliştirmeyen dejenere pivotlar yapmak için çok zaman harcar. Bu, saf primal simpleks algoritmasının atama problemini çözmek için doğrudan kullanılmamasının temel noktasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.