2013-03-29 12 views
5

Dato è un grafico bipartito e vogliamo elencare tutto il grafico secondario bipartito completo massimale.Trova tutto il sottografo bipartito completo massimale dal dato grafico bipartito

Ad esempio,

insieme dei vertici L = {A, B, C, D}

insieme dei vertici R = {a, b, c, d, e}

bordi: Aa , Ab, Ba, Bb, Cc, Cd, Dc, Dd, De

La massima completa bipartita sono:

{a, B} - {a, b}

{C, D} - {c, d}

{D} - {c, d, e}

ho trovato un algoritmo di forza bruta, O (2^n). Non so se un algoritmo di approssimazione o un algoritmo randomizzato.

+0

Questo problema è NP-completo. La questione dei metodi approssimati è meglio posta in una comunità di matematica o di CS teorica, non in una orientata alla programmazione. –

+0

Scusa, ma pubblico lo stesso thread sulla comunità di matematica, ma hanno suggerito qui. – ColinBinWang

risposta

2

È possibile trasformare il problema nella ricerca di clique massimali aggiungendo spigoli tra ogni coppia di vertici in ciascuna parte del grafico bipartito.

L'algoritmo Bron-Kerbosch può essere utilizzato per elencare tutte le cricche massimali in un grafico (non necessariamente bipartito). È abbastanza facile da implementare e ha un tempo limite leggermente migliore di O (3^(n/3)). C'è anche un tempo di tracciabilità parametrico fissato in termini di degenerazione del grafico.

+0

Grafici bipartiti con insiemi A e B e | A | > 1 o | B | > 1 non può mai essere una cricca. –

+0

@ G.Bach, hai ragione. Hai dimenticato di menzionare la trasformazione, vedi la modifica. –

+0

Ah, capisco, sì, funziona. –

Problemi correlati