İki Taraflı Grafiğin Maksimum Bağımsız Kümesi


19

Bir Biparite Grafiğinin Maksimum Bağımsız Kümesini bulmaya çalışıyorum.

Bazı notlarda "13 Mayıs 1998 - Washington Üniversitesi - CSE 521 - Ağ akışının uygulamaları" bölümünde aşağıdakileri buldum :

Sorun:

Bir bipartit grafiktir verilen G=(U,V,E) , arayan bağımsız bir dizi burada, mümkün olduğu kadar büyük ve . Setin elemanları arasında kenarı yoksa set bağımsızdır .UVUUVVE

Çözüm:

köşelerinde bir akış grafiği oluşturun . Her bir kenar için bir sonsuz kapasite ayrıt için . Her biri için , bir ünite kapasitesi kenarı vardır için , ve her biri için , bir ünite kapasitesi kenarı vardır için .UV{s,t}(u,v)EuvuUsuvVvt

Sonlu bir kapasite kesme Bul ile, ve . Let ve . Set bağımsızdır, çünkü kesimi geçen sınırsız kapasite kenarı yoktur. Kesimin boyutu. Bu, bağımsız seti mümkün olduğunca büyük hale getirmek için, kesimi mümkün olduğunca küçük hale getiriyoruz.(S,T)sStTU=USV=VTUV|U-U'|+|V-V'|=|U|+|V|-|U'V'|

Şimdi bunu grafik olarak alalım:

A - B - C
    |
D - E - F

Bunu aşağıdaki gibi iki taraflı bir grafiğe bölebiliriz (U,V)=({A,C,E},{B,D,F})

Kaba kuvvet aramasıyla, tek Maksimum Bağımsız Kümenin A,C,D,F . Yukarıdaki çözümü deneyelim ve çalışalım:

Böylece yapılandırılmış akış ağı bitişiklik matrisi şöyle olacaktır:

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

: Burada küçük sınırlı kapasite görmek kesme, takılıp nerede önemsiz bir biridir (S,T)=({s},{t,A,B,C,D,E,F}) kapasiteli 3.

Bu kesimin kullanılması yanlış bir çözüme yol açar:

U=US={}
V'=VT={B,D,F}
U'V'={B,D,F}

Oysa U'V'={bir,C,D,F} ? Akıl yürütmemde / çalışmamda nerede yanlış gittiğimi kimse görebilir mi?


(S, T) = ({s, A, B, C}, {t, D, E, F}) 2 kapasitesine sahiptir

1
@Brian, kesiminizde B'den E'ye sonsuz bir kapasite kenarı vardır, bu yüzden sonsuz kapasite.
Andrew Tomazos

bunu doğru anlarsam, kaba kuvvet çözümüne dayanarak, S'nin A ve C içerdiği ve T'nin D ve F içerdiği bir kesime ihtiyacınız vardır, bu da kesmenizi {s, A, C}, {t, D, F} yapar . Şimdi, kesimi nasıl inşa ediyorsunuz?
njzk2

ayrıca, kenarların bir kapasiteye sahip olduğu Ford-Fulkerson'a benziyor.
njzk2

Macar algoritmasına bakın.
Patrik Vörös

Yanıtlar:


14

Maksimum bağımsız bir setin tamamlayıcısı minimum köşe örtüsüdür.

İki taraflı bir grafikte minimum köşe örtüsü bulmak için, bkz. König teoremi .


2
Bu (belki) sorunu çözer ancak soruyu cevaplamaz.
Raphael

2
@ Raphael: "Belki" kelimesini kaldırırsanız katılıyorum. :)
Jukka Suomela

1
Oh, buna çözer eminim sorunu, ama yardımcı emin değilim Andrew onun sorunu çözmek.
Raphael

3
Önerdiğin gibi çözdüm: HopcroftKarp -> maksimum eşleme -> Konigs Thereom -> Minimum Köşe Kapağı -> Tamamlayıcı -> Maksimum Bağımsız Set. Hala sorumda anlatılan akış yönteminin neden işe yaramadığını bilmek istiyorum.
Andrew Tomazos

5

Karşı örnekle gösterildiği gibi, verilen çözüm açıkça yanlıştır. U + V grafiğinin sonsuz kapasiteli kenarlarla bağlı bir bileşen olduğunu unutmayın. Bu nedenle, her geçerli kesim aynı tarafta tüm A, B, C, D, E, F'yi içermelidir.

Çözümün nereden geldiğini takip etmeye çalışmak: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf , bazı problemler için Ağ Akışlarını belirtir . Bu kitabın telif hakkı yoktur ve http://archive.org/details/networkflows00ahuj adresinden indirilebilir, ancak bu sorunu ve çözümü içermiyor gibi görünmemektedir ("bipartite" nin her oluşumunu araştırmaktadır).

Çözümün açıklama paragrafının oluşturduğu grafiğin en küçük kesiminin maksimum bağımsız kümeye karşılık geldiğini göstermediğine dikkat edin . Sadece almak için bir yol gösterir bir bağımsız set.

Yine de, algoritmanın ne yapmaya çalıştığını görebilirsiniz. İşte gerçek maksimum bağımsız set, s, t cut açısından karşılık gelir:

grafik

Algoritmayı kıran sonsuz kapasiteli kenar vurgulanır.

Algoritmayı amaçlanana nasıl düzelteceğimi bilmiyorum. Belki geriye doğru giderse sonsuz bir kenarın maliyeti sıfır olmalıdır (yani, S'den T'ye gider, ancak t tarafından s tarafına geçer)? Ancak, bu doğrusal olmama ile min-cut / max-akışı bulmak hala kolay mı? Ayrıca, @Jukka Suomela'nın çözümünden sorudan algoritmaya köprü oluşturmanın bir yolunu düşünerek, maksimum eşleştirmeden minimum tepe kapağına kadar gitmemizde bir zorluk var: maksimum eşleştirmeyi bulmak bir maksimum akışla yapılabilir benzeri algoritma, akış benzeri bir algoritma kullanarak minimum köşe kapağını nasıl kurtarırsınız? Olarak tarif burada, maksimum eşleşme bulunduktan sonra, U ve V arasındaki kenarlar minimum tepe kapağını bulmaya yönlendirilir. Yani, yine, bu basit bir min-cut / max-flow uygulamasının bu sorunu çözmek için gereken tek şey olmadığını göstermez.


2

Verilen algoritma doğru. İnşa edilen akış ağının yönlendirilmesi gerekir ve bir S - T kesiminin değeri sadece tepe kümesi S çıkan kenarları dikkate alır .


1
Size katılıyorum, ancak daha fazla ayrıntı ekleyebilir misiniz, örneğin, akış algoritmasının tam bir doğruluk kanıtı ve algoritmanın OP örneğinde nasıl uygulandığı?
xskxzr

Buradaki notun kısa bir doğruluk kanıtı vardır. cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf Örneğin, yukarıdaki Evgeni Sergeev'in şekline bakarsanız, kenarların tümü aşağıya doğru yönlendirilmelidir. Daha sonra S'den sadece iki kenar (s, e) ve (b, t) olur, koyu kırmızı kenar S'ye girer ve kesme değerinde sayılmamalıdır.
yu25x

0

Kesim, kapasitelerde değil, gerçek akışta olmalıdır. S'den gelen akış sonlu olduğu için, herhangi bir {S, T} kesimi sonlu olacaktır. Gerisi yukarıda açıklanmıştır.


1
Emin misiniz? Kesimler genellikle kapasitelerdedir ve her durumda, minimum kesimin sonlu olduğunu zaten biliyoruz, bu nedenle sonsuz kesimlerin sorun olduğu görülmüyor.
David Richerby

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.