¿La forma más rápida de encontrar un corte mínimo de un flujo máximo máximo?

8

Ford-Fulkerson puede encontrar flujos dispersos en el tiempo lineales en el tamaño del flujo y el número de nodos si los bordes tienen capacidad unitaria.

¿Cómo podría usar un flujo st disperso para encontrar un corte st min en el tiempo proporcional al tamaño del flujo y el número de mis nodos, para el caso de flujo máximo escaso / bajo volumen?

Elliot JJ
fuente
¿Existe una referencia rápida para la definición de un flujo st disperso?
chazisop
1. Recorrer todos los bordes y encontrar bordes saturados parecía bastante legítimo intuitivamente. Pero un defecto es que no todos los bordes saturados pertenecen necesariamente a un corte mínimo. 2. Min-cut debe ser un conjunto de bordes, no un conjunto de vértices. 3. Entonces, la solución típica debería ser la respuesta aceptada arriba. Desde la red de flujo máximo (ya sea dada o puede calcular por Ford-Fulkerson o Edmunds-Karp), DFS o BFS desde s, marque todos los vértices a los que se puede llegar (El proceso de tratar de encontrar una ruta de aumento pero usted sabe y
Jinggang

Respuestas:

8

Si no usa el flujo per se, pero usa el algoritmo Ford-Fulkerson (o alguna versión, como Edmonds-Karp), puede obtener tanto el flujo máximo como el corte mínimo directamente como resultado. Cuando busca rutas de aumento, realiza un recorrido, en el que usa alguna forma de cola de nodos aún no visitados (en la versión Edmonds-Karp, usa BFS, que significa una cola FIFO). En la última iteración, no puede alcanzar desde (este es el criterio de terminación, después de todo). En este punto, el conjunto de nodos que alcanzó forma la parte del corte, mientras que los nodos que no alcanzó forman la parte .tsst

Los nodos de la hoja de su árbol transversal forman la "franja" de la parte , mientras que los nodos en su cola transversal forman la franja de la parte , y lo que desea es el conjunto de bordes desde la -fringe a la -fringe. Esto también se puede mantener fácilmente durante el recorrido: simplemente agregue un borde al corte cuando se examina, y conduce a un nodo no visitado, y retírelo si se atraviesa (para que su objetivo sea visitado). Luego, una vez que Ford-Fulkerson haya terminado, tendrás tu corte mínimo (o, mejor dicho, uno de ellos) allí mismo. El tiempo de ejecución será (asintóticamente) idéntico a Ford-Fulkerson (o Edmonds-Karp o cualquier versión que esté usando), lo que debería darle lo que estaba buscando.stst

Magnus Lie Hetland
fuente
-1

¿Existe una referencia rápida para la definición de un flujo st disperso?

En el caso general, tener el flujo máximo es bastante fácil de determinar el corte mínimo, a través del teorema de flujo mínimo, corte mínimo. Los bordes que están completamente saturados forman un conjunto de corte, por lo que al seleccionar un vértice para cada borde, se puede formar un corte mínimo. Trivialmente, esto es O (m) en el peor de los casos, y también si uno hace que el tiempo de ejecución sea sensible a la salida, entonces el número de bordes en el flujo o incluso mejor, el número de bordes saturados en el flujo, siempre es superior dependiente del tiempo de ejecución del algoritmo para encontrar el corte mínimo del flujo máximo. Entonces, si tiene una modificación que encuentra esos flujos dispersos en tiempo lineal en el tamaño del flujo, encontrar el corte mínimo no cambiará el tiempo de ejecución del algoritmo asintóticamente.

chazisop
fuente
2
No tengo una definición específica. Simplemente algo donde Ford Fulkerson es asintóticamente más rápido que cualquier otra cosa. Si todos mis bordes tienen capacidad de unidad, ¿muchos de ellos no estarán saturados, incluidos los bordes que si se eliminan podrían reemplazarse fácilmente sin afectar el volumen de flujo máximo? Podría eliminar todos estos bordes y formar un corte, pero no estoy seguro de cómo reemplazaría los que realmente no necesitaba eliminar.
Elliot JJ
Depende de la gráfica. Si tuviera capacidades unitarias y un gráfico denso, es muy probable que tenga muchos flujos con el valor máximo, esto a su vez podría interpretarse como que también podría tener una gran cantidad de min-cortes diferentes. Eche un vistazo también a esta referencia: en.wikipedia.org/wiki/Max-flow_min-cut_theorem
chazisop