Rimuovere il numero minimo di vertici per disconnettere il grafico


9

Considera un grafico non indirizzato con una fonte e un vertice di sink. Vorremmo rimuovere il numero minimo di vertici in quel grafico per disconnettere qualsiasi percorso tra sorgente e sink.

Possiamo farlo usando per esempio un algoritmo max-flow, min-cut?


4
Dovrebbe funzionare (suppongo che tutti i bordi abbiano la stessa capacità).
— A. Schulz,

Risposte:


3

(Questa risposta è stata originariamente fornita come parte della domanda, con l'obiettivo di essere verificata.)

La mia intuizione mi dice che possiamo usare l'algoritmo max-flow e min-cut per risolvere questo problema:

  1. Sostituisci ciascuno dei bordi non indirizzati con una coppia di bordi diretti.
  2. vvinvoutvvinvvout
  3. MM

vinvout

Per supportare la risposta di FrankW, segui i collegamenti sottostanti, c'è un documento di Abdol – Hossein Esfahanian che supporta la sostituzione di un bordo non diretto con due bordi diretti. - networkx.github.io/documentation/latest/reference/generated/… - cse.msu.edu/~cse835/Papers/Graph_connectivity_revised.pdf
— Pawan Puttaswamy

1
@pawanp, non ti seguo. Ovviamente puoi sostituire un bordo non diretto con due bordi diretti. La domanda non è se è possibile farlo, ma se dopo aver applicato l'algoritmo elencato in FrankW, se l'output è garantito per essere una soluzione corretta al problema originale. Non vedo come la pagina man della libreria NetworkX sia rilevante. Per quanto riguarda il documento: è lungo 14 pagine, con 11 algoritmi diversi, la maggior parte senza prove di correttezza. Puoi essere più specifico su quale parte vedi pertinente qui?
— DW
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.