Set indipendente massimo di un grafico bipartito


19

Sto cercando di trovare il massimo set indipendente di un grafico biparite.

Ho trovato quanto segue in alcune note "13 maggio 1998 - Università di Washington - CSE 521 - Applicazioni del flusso di rete" :

Problema:

Dato un grafo bipartito G=(U,V,E) , trovare un insieme indipendente UV , che è il più grande possibile, dove UU e VV . Un set è indipendente se non ci sono bordi di E tra gli elementi del set.

Soluzione:

Costruisci un diagramma di flusso sui vertici UV{s,t} . Per ogni fronte (u,v)E esiste un bordo di capacità infinita da u a v . Per ogni uU , v'è un fronte capacità unitaria da s ad u , e per ogni vV , v'è un fronte capacità unitaria da v a t .

Trova un taglio capacità finita (S,T) , con sS e tT . Let U=US e V=VT . L'insieme UV è indipendente poiché non vi sono bordi di capacità infinita che attraversano il taglio. La dimensione del taglio è |UU|+|VV|=|U|+|V||UV|. Questo, al fine di rendere il set indipendente il più grande possibile, rendiamo il taglio il più piccolo possibile.

Quindi prendiamo questo come grafico:

A - B - C
    |
D - E - F

Possiamo dividerlo in un grafico bipartito come segue (U,V)=({A,C,E},{B,D,F})

Possiamo vedere dalla forza bruta di ricerca che l'unico massima Independent Set è A,C,D,F . Proviamo a lavorare sulla soluzione sopra:

Quindi la matrice di adiacenza della rete di flusso costruita sarebbe:

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

Qui è dove sono bloccato, il più piccolo taglio di capacità finita che vedo è banale: (S,T)=({s},{t,A,B,C,D,E,F}) con una capacità di 3.

L'uso di questo taglio porta a una soluzione errata di:

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

Considerando che ci aspettavamo UV={A,C,D,F} ? Qualcuno può individuare dove ho sbagliato nel mio ragionamento / lavoro?


(S, T) = ({s, A, B, C}, {t, D, E, F}) ha capacità 2

1
@Brian c'è un limite di capacità infinita da B a E attraverso il tuo taglio, quindi è una capacità infinita.
Andrew Tomazos,

se lo capisco correttamente, basato sulla soluzione della forza bruta, hai bisogno di un taglio in cui S contiene A e C e T contiene D e F, il che rende il tuo taglio {s, A, C}, {t, D, F} . Ora, come costruisci il taglio?
njzk2,

inoltre, questo sembra il Ford-Fulkerson, in cui i bordi hanno una capacità di uno.
njzk2,

Cerca l'algoritmo ungherese.
Patrik Vörös,

Risposte:


14

Il complemento di un set indipendente massimo è una copertura minima del vertice.

Per trovare una copertura minima del vertice in un grafico bipartito, vedere il teorema di König .


2
Questo (forse) risolve il problema ma non risponde alla domanda.
Raffaello

2
@Raphael: sono d'accordo se rimuovi la parola "forse". :)
Jukka Suomela il

1
Oh, sono sicuro che risolverà il problema, ma non sono sicuro che aiuti Andrew a risolvere il suo problema.
Raffaello

3
Ho risolto come suggerisci: HopcroftKarp -> corrispondenza massima -> Konigs Thereom -> Copertura minima del vertice -> Complemento -> Set massimo indipendente. Mi piacerebbe ancora sapere perché il metodo di flusso descritto nella mia domanda non sembra funzionare.
Andrew Tomazos,

5

La soluzione fornita è chiaramente errata, come dimostra il controesempio. Si noti che il grafico U + V è un componente collegato dai bordi a capacità infinita. Pertanto ogni taglio valido dovrà contenere tutti A, B, C, D, E, F sullo stesso lato.

Cercando di risalire da dove proviene la soluzione: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf cita Network Flows, di Ahuja, Magnanti e Orlin per alcuni dei problemi. Questo libro non è protetto da copyright e scaricabile da http://archive.org/details/networkflows00ahuj ma non sembra contenere questo problema e questa soluzione (cercando ogni occorrenza di "bipartito").

Si noti che il paragrafo di spiegazione della soluzione non mostra che il taglio più piccolo del grafico che costruisce corrisponde all'insieme massimo indipendente. Mostra solo un modo per ottenere un set indipendente.

Eppure, puoi vedere cosa sta cercando di fare l'algoritmo. Ecco a cosa corrisponde l'attuale set indipendente massimo in termini di taglio s, t:

Grafico

Viene sottolineato il limite di capacità infinita che rompe l'algoritmo.

Non sono sicuro di come fissare l'algoritmo a ciò che era previsto. Forse il costo di un bordo infinito dovrebbe essere zero se va indietro (cioè dove va da S a T, ma attraversa dal lato T al lato S)? Ma è ancora facile trovare il flusso minimo / massimo con questa non linearità? Inoltre, pensando a un modo per passare dalla soluzione di @Jukka Suomela all'algoritmo dalla domanda, c'è una difficoltà a passare dalla corrispondenza massima alla copertura minima del vertice: mentre trovare la corrispondenza massima può essere fatto da un flusso massimo -come algoritmo, come recuperare la copertura minima del vertice usando un algoritmo simile al flusso? Come descritto qui, dopo aver trovato la corrispondenza massima, i bordi tra U e V vengono diretti per trovare la copertura minima del vertice. Quindi, ancora una volta, questo non dimostra che una semplice applicazione di min-cut / max-flow è tutto ciò che serve per risolvere questo problema.


2

STS


1
Sono d'accordo con te, ma potresti aggiungere ulteriori dettagli, ad esempio una prova di correttezza completa dell'algoritmo di flusso e come si applica l'algoritmo sull'esempio del PO?
xskxzr,

La nota in questo ha una breve prova di correttezza. cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf Nell'esempio, se guardi la figura di Evgeni Sergeev sopra, i bordi dovrebbero essere tutti rivolti verso il basso. Quindi gli unici due bordi fuori da S sono (s, e) e (b, t), il bordo rosso in grassetto sta andando in S e non deve essere conteggiato nel valore di taglio.
yu25x

0

Il taglio dovrebbe essere sul flusso effettivo, non sulle capacità. Poiché il flusso da s è finito, qualsiasi taglio di {S, T} sarà finito. Il resto è spiegato sopra.


1
Sei sicuro? I tagli sono di solito basati sulle capacità e, in ogni caso, sappiamo già che il taglio minimo è finito, quindi i tagli infiniti non sembrano essere il problema.
David Richerby,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.