Pozitif değerler ile doldurulmuş bir n-by-gridiniz olduğunu düşünün. Izgaradan min (n, m) kareleri seçip, onu aldığınızda karenin sırasını ve sütununu ortadan kaldırırsınız. Skorunuz o zaman seçtiğiniz karedeki bazı değerlerdir. Mümkün olan en yüksek puanı bulmaya çalışıyorum. Bunu, tüm olasılıkları aşmaktan başka bir yolu var mı? Her şeyi numaralandırmam gerekirse, bunu yapmanın en etkili yolu nedir? Bu bir fark yaratırsa bunu python'da uygulamaya çalışıyorum. Teşekkürler.Elimine edilen tablodan maksimum toplam puan
cevap
Bu, finding a maximum matching in a weighted bipartite graph'a eşdeğerdir. Satırlar ve sütunlar, grafiğin düğümlerine karşılık gelir ve table[u][v]
, sıfır olmayan bir x
içeriyorsa, sıra düğümü ve sütun x arasında x değeri ile bir kenar vardır. Maksimum eşleştirmede seçilen kenarlar, seçim yapmak için sıfır olmayan hücrelere karşılık gelir; Eşleşmedeki min(n, m)
kenarından daha az varsa, tablo hücrelerine kalan seçeneklerin tümü sıfır değerine sahiptir, böylece kalan hücreleri rasgele seçebilirsiniz. (Tablo negatif girdileri olabilir varsa, tüm girişler grafiği oluşturmadan önce negatif olmayan olduğundan emin olmak için yukarı tüm tablo girdileri ayarlamak gerekir.) NetworkX gibi
Grafik kütüphaneleri ve ağırlıklı maksimum eşleştirme algoritmalarının igraph teklif uygulamaları, Böylece tablonuzu bir grafiğe dönüştürebilir ve zor çalışmayı kütüphaneye aktarabilirsiniz.
Emin olmadığınız tek bölüm, negatif girdilerle ilgili parantezliğinizdir ... Tüm ağırlıklar için sabit bir c eklediğinizde, tüm ağırlıklar pozitif olsa bile, kenarların * sayısı * maksimum ağırlıklı eşlemede artabilir. ile başlamak için (her ek kenar başka bir c puan ödüllendirdiğinden), bu yüzden bunu yaparak optimallik korunur emin değilim. Aklında başka bir şey var mı? –
@j_random_hacker: Sorunun her zaman bir max-cardinality eşleşmesini karşılayan min (n, m) grid hücrelerini seçmesi gerekiyor (eğer olasılıkla zamanından önce bir optimizasyon olarak elimine edilen sıfır ağırlık kenarlarını gerçekleştirirseniz). Tüm bu eşleşmeler, tüm tablo girişlerine bir sabit ekleyerek, ağırlıklarının eşit şekilde etkilenmesini sağlar. – user2357112
Teşekkürler, bu özel bipartit grafiğin tamamlandığını unutuyordum, bu yüzden tüm kenarlar pozitif ağırlığa sahipse, maksimum ağırlık eşleşmesi mutlaka min (n, m) kenarlara sahip olacaktır. Cevabınıza "tamamlandı" nı eklemenizi öneririm; –
- 1. Bayes Sınıflandırıcı puan nedir?
- 2. Puan attı puan kazandıktan yardıma ihtiyacım var
- 3. Angularjs kullanarak sipariş edilen öğede toplam ve alt toplamı mı?
- 4. sqlalchemy: Bir tablodan maksimum/dk/ortalama değerler elde
- 5. SQL iki tablodan birini seçin (kullanıcı maksimum arabaya sahiptir)
- 6. Bir tablodan maksimum değerle başlayan bir Oracle dizisi nasıl oluşturulur?
- 7. Toplam toplam
- 8. ggplot2: geom_line'a puan ekle
- 9. 2 Puan Açısı
- 10. Sütun MySql toplam öğeleri
- 11. Yüksek Puan Veri Tabanı Ölçeklendiriliyor
- 12. Wilson Puan Aralığı'nın Python uygulaması?
- 13. Puan Başlığı Başa dön Tiebreak
- 14. "Depozito miktarı" ve "toplam toplam" miktarını özetleyen bir sorgu oluşturmaya çalışıyorum ve toplam "toplam depozito"
- 15. Clojure'da iptal edilen işlemleri sayma
- 16. Toplam ile birlikte Javascript Sum Toplam
- 17. Emgu CV SURF eşleşen puan koordinatlarını alın
- 18. Kontrol edilen onay kutularının sayısı
- 19. KendoUI ızgarası toplam kayıt sayısını görüntüler
- 20. Toplam Komutta
- 21. Toplam değeri
- 22. Toplam Bilgileri
- 23. SQLite: Toplam Alın/Sütun Toplamı
- 24. Xcode 7'de otomatik olarak tercih edilen maksimum mizanpaj genişliği Xcode 7
- 25. Tavsiye edilen Clang komut satırı seçenekleri
- 26. SQLServer Tablodan başka bir tablodan gelen listeyle silme
- 27. EntityDataSource - WHERE'in farklı bir tablodan nasıl yapılır
- 28. Tablodan * seçimini yapın SQL
- 29. Çizimdeki puan sırasını değiştirmeden yeniden düzenleyin
- 30. Matplotlib'den farklı puan noktalarını bulma: boxplot
"Şebekeden kareler toplama" ile neyi kastettiğinizi açıklayabilir misiniz? – spiffman
Lütfen daha önce denediğiniz kod örneklerini gönderin –
Bu, [ağırlıklı iki bölümlü grafikte maksimum eşleşme bulma] ile eşdeğerdir (https://en.wikipedia.org/wiki/Matching_ (graph_theory) #In_weighted_bipartite_graphs) . Bunu yapmak için algoritmalara bakın. – user2357112