Considere un árbol dirigido con un nodo raíz . Dejar ser el nodo fuente de y sus hojas son los nodos sumideros (llame a estas hojas ). (Y, por supuesto, los bordes tienen sus respectivas capacidades como cualquier problema de flujo de red).
- fuente
- hundir
- flujo en el borde
- capacidad en el borde
- valor del flujo
Demuestre que este algoritmo codicioso calcula con éxito el flujo máximo de , o mostrar un contraejemplo.
Originalmente creí que este problema era falso, ya que encontré algunos ejemplos de algoritmos codiciosos que se utilizan para demostrar la incorrección. Pero después de pensarlo, me di cuenta de que me perdí un detalle crucial que lo diferencia de cualquier otro intento de flujo máximo codicioso de gráficos, ya que este es un árbol . Creo en este mismo hecho de que es un árbol: ¡no hay ciclos! – hace la diferencia para permitir que este algoritmo funcione.
La razón por la que esto funciona parece bastante obvia al principio, pero me cuesta convencerme de ello.
Al elegir una ruta arbitraria desde el nodo raíz hasta una hoja y aumentar el flujo, aunque esto puede afectar la cantidad de flujo que se puede enviar a lo largo de una ruta similar. ruta que comparte algunos bordes desde el nivel superior, no debería alterar el valor de flujo general enviado a los sumideros, ya que cualquier flujo que ingrese debe llegar al sumidero (hojas) (Este detalle es más aparente si miro el árbol usando su definición recursiva usando subárbol nodos). Dado que cada nodo tiene solo uno en grado, solo recibe flujo de una sola fuente, por lo que simplemente puede distribuirlo a sus hijos (si los hay) libremente sin tener que concentrarse mucho para maximizar el flujo en gráficos generales. Simplemente podemos repetir este proceso hasta que los bordes, ya sea en el nivel superior en el origen o en cualquier otro lugar de la ruta, estén llenos a su máxima capacidad.
Creo que tengo los conceptos básicos para comenzar la prueba, pero tengo problemas para formalizarla (no estoy seguro de cómo aplicar su prueba de algoritmo codicioso habitual aquí, ya que técnicamente no hay "conflicto" per se ...). Pero, de nuevo, podría estar equivocado y perderme un contraejemplo.
Cualquier entrada sería apreciada. Gracias.
En primer lugar, el algoritmo termina porque al menos un borde está saturado en cada paso y hay un número finito de bordes. Ahora deja Sea el flujo resultante, y suponga hay un mayor flujo a través del árbol. Para ser un flujo mayor que , Debemos tener por al menos un borde que se aleja de la fuente. Ahora aplique el mismo argumento a los bordes que se alejan del vértice final de y continúa este proceso hasta que hayas llegado a una hoja. El resultado es un camino de a una hoja en la que cada borde tiene mayor flujo en que en . Así que este es un camino a lo largo del cual el algoritmo podría haber aumentado . La contradicción muestra que no existe tal flujo. , y entonces es máximo.
MJD
Ángela Pretorio
Sumudu Fernando