In un dato grafico, voglio calcolare il costo minimo di disconnessione di alcuni nodi gli uni dagli altri in un grafico. Esempio:
In questo grafico, diciamo che voglio disconnettere node A
, node C
e node F
l'uno con l'altro rimuovendo alcuni spigoli tra questi nodi. Ad esempio, rimuovendo edge A-B
e edge F-E
, i nodi A
, C
e F
verranno disconnessi. Qui costo indica la lunghezza del bordo che viene rimosso. in questo esempio, il costo totale minimo per la disconnessione di Node A
, Node C
e Node F
tra loro è 2 + 1 = 3.
Qualcuno può fornire qualche suggerimento. Non riesco a classificare questo problema, se si tratta di una specie di shortest path problem
o minimum spanning tree problem
?Come ottenere il costo minimo di disconnessione di alcuni nodi gli uni dagli altri in un grafico
risposta
Questo è chiamato il problema di taglio multiterminale . Sfortunatamente non sembra esserci una voce di Wikipedia. Il problema è che, dato un grafico ponderato e un sottoinsieme di vertici chiamati terminali , calcolare il set di spigoli di peso minimo la cui rimozione disconnette ogni coppia di terminali. La cattiva notizia è che questo problema è NP-difficile, quindi se hai davvero bisogno di una soluzione ottimale su un'istanza che non può essere forzata bruta, probabilmente dovrai passare alla programmazione di interi. La buona notizia è che c'è un semplice algoritmo di 2-approssimazione (non il miglior fattore conosciuto, ma potrebbe essere necessario rispolverare la programmazione lineare e leggere la letteratura di ricerca per usare quelli "migliori"), che può essere ottenuto prendendo l'unione di st cuts che separa ciascun terminale dagli altri.
- 1. Ricerca di modelli di progettazione per isolare i livelli di struttura gli uni dagli altri
- 2. I tag di script JavaScript separati sono isolati gli uni dagli altri errori?
- 3. Due classi che fanno riferimento gli uni agli altri
- 4. Codice di corrispondenza bipartito di costo massimo/minimo in Python
- 5. Ordinamento di una permutazione con costo minimo
- 6. Set minimo di vertici che consente di raggiungere tutti gli altri vertici in max. un lato
- 7. Come trovare tutti i nodi in un grafico equidistante da un determinato set di nodi?
- 8. grafico - Come trovare il ciclo minimo diretto (peso totale minimo)?
- 9. Numero massimo e minimo di nodi in un albero suffisso
- 10. Trovare il percorso ciclabile minimo in un grafico diretto dinamicamente
- 11. Ordinare gli array in ordine crescente riducendo al minimo il "costo"
- 12. OBJ-C: Ottenere il valore minimo/massimo in un NSMutableArray
- 13. Trovare altezza comune degli edifici con il costo minimo
- 14. Come posso ottenere il minimo spazio tra gli elementi dell'elenco?
- 15. Come trovare il costo minimo di collegamento di due serie di punti
- 16. Grafico boost: come copiare i nodi e i bordi di un grafico senza copiare le proprietà?
- 17. Editor grafico dei nodi
- 18. Ottenere il numero totale di nodi e nodi di conteggio
- 19. Ridurre al minimo i bordi trasversali in un grafico
- 20. come ottenere l'intervallo (ylim) di un grafico?
- 21. XSLT - Copia tutti gli altri nodi, aggiungere 1 nuovo nodo
- 22. Come coprire il numero massimo di nodi tramite un determinato percorso in un grafico?
- 23. Aggiornamento di un albero di copertura minimo quando si inserisce
- 24. Come ottenere la disconnessione automatica in php?
- 25. Il costo di thread_local
- 26. Trova il taglio minimo in un grafico tale che i vertici dati siano disconnessi
- 27. Disegna un grafico da un elenco di nodi connessi
- 28. Massimizza il numero di sottografi con un peso minimo specificato
- 29. Algoritmo grafico per molti nodi
- 30. Best practice: il trattamento di primo elemento diverso dagli altri, mentre il ciclo su un insieme
penso, l'unico modo per farlo - ricerca forza bruta. – Anton
@Anton: Per favore non dire che :(. Non riesco ad immaginare la mia vita con la forza bruta –