Questo problema sembra molto simile a quello di trovare nodi di articolazione all'interno di un grafico. La definizione tecnica di un punto di articolazione, o di un componente biconettato, è un nodo la cui rimozione provocherebbe la divisione di un grafico in due parti.
La scoperta di nodi articolati da un grafico è un problema in gran parte risolto e si possono trovare maggiori dettagli su di esso qui: http://en.wikipedia.org/wiki/Biconnected_component
Mi sembra che il modo in cui si vorrebbe affrontare un problema come questo, in generale, sarebbe qualcosa lungo queste linee:
1. Find all articulation points
2. Do a bfs from each node and determine articulation points along the path
3. Split graph at the articulation point, choosing the side with minimal edges
4. Continue until the two nodes are not connected
nell'esempio precedente, 7 è l'unico punto di articolazione e così si tagliava i bordi tra 7, 2 e 3 poiché vi sono solo due bordi tra 7 e 0-4 grafico e 3 spigoli tra 7 e il grafico 5,6,8.
C'è un algoritmo più definito per fare questo (leggi: uno che non mi è venuto in mente) chiamato algoritmo di Karger che può risolvere il tuo problema, anche se in n^2 volta.
Questo algoritmo funziona collegando efficacemente nodi adiacenti l'un l'altro fino a quando ci sono solo due nodi e quindi contando il numero di spigoli rimasti tra i due nodi. Il numero di bordi è quindi il numero minimo di tagli necessari per dividere il grafico.
Il modo in cui implementeresti l'algoritmo di Karger nel tuo problema avrebbe solo bisogno di avvertire che dovresti sempre unire i nodi ai due nodi che vuoi dividere. Inoltre, per poter tornare indietro ai bordi originali che è necessario tagliare, è necessario mantenere un riferimento a cui i bordi originariamente appartenevano.
C'è una grande visualizzazione dell'algoritmo di Karger qui: http://en.wikipedia.org/wiki/Karger%27s_algorithm
fonte
2013-06-04 19:29:46
Questo è chiamato il problema "taglio minimo". È più strettamente correlato al flusso massimo rispetto al percorso più breve. –