Super Mario Flows en NP?

15

Una extensión clásica del problema del flujo máximo es el problema del "flujo máximo en el tiempo": se le da un dígrafo, dos de los cuales se distinguen como la fuente y el sumidero, donde cada arco tiene dos parámetros, una capacidad por -unidad-tiempo y un retraso. También se le dará un horizonte de tiempo . El objetivo es calcular un flujo a través del tiempo que se pone la cantidad máxima de material de la fuente al sumidero por el tiempo . Se puede calcular un flujo de valor máximo en tiempo polinómico mediante una inteligente reducción clásica al flujo mínimo de costo máximo.TTT

Estoy interesado en una extensión de este modelo donde los bordes tienen un tercer parámetro de "vida útil". Si un arco tiene una vida útil , y es el tiempo más temprano en el que se envía flujo positivo a través del arco, entonces destruimos el arco en el tiempo . Puede pensar en esto como las plataformas en Super Mario Brothers que se caen / se destruyen poco después de pisarlas, o puede pensar en ellas como baterías necesarias para alimentar los bordes, que no se pueden apagar después de encenderlas . ( Editar :) El problema de decisión es, cuando también se le da un límite inferior de valor de flujo , si uno puede programar un flujo que cumpla tanto el límite superior del horizonte de tiempo como el límite inferior de valor de flujo.t t + Btt+B

Hasta ahora puedo ver que este problema es fuertemente NP-hard (a través de 3 particiones). Pero, en realidad no sé si está en NP: ¿hay alguna garantía de una forma de expresar una solución de forma compacta? En la versión clásica, se utiliza algún tipo especial de flujo óptimo para sortear este problema.

Nota: el modelo anterior está un poco poco especificado, ya que puede permitir o no permitir el almacenamiento de flujo en los nodos, y puede tener un modelo de tiempo discreto o continuo. Resolver la pregunta para cualquiera de estos modelos sería excelente.

daveagp
fuente
1
No estoy seguro de entender. ¿Por qué hay un problema en expresar un plan de flujo particular de manera compacta y verificar que el flujo total es al menos F en el tiempo polivinílico?
Suresh Venkat
3
Puede estar pensando en cómo probar que la salida de un problema de optimización, cuya salida es un flujo temporizado, puede verificarse para la optimización en el tiempo polivinílico. Sin embargo, a menudo se muestra que los problemas de decisión con solo respuestas sí / no están en NP, y los problemas de optimización que maximizan algunas funciones, como el flujo, generalmente se convierten en un problema de decisión al agregar un valor límite inferior B a la entrada, y el problema de decisión se convierte en "¿Hay una solución con valor al menos B?"
andy_fingerhut
Suresh: digamos que en el modelo discreto, la forma natural de expresar un plan de flujo toma enteros para cada arco, pero esto no es polinomial, solo es pseudo-polinomial en el tamaño de entrada. En el modelo continuo de manera similar, no veo cómo comprimir esto. T
daveagp
Andy: Tienes razón, en términos formales, es mejor para mí afirmar esto como un problema de decisión al tener un límite inferior de valor además de un horizonte de tiempo, entonces es algo por lo que podríamos preguntarnos si está en NP.
daveagp
1
@daveagp: ¿Probaste la dureza PSPACE, por ejemplo, reduciendo QBF a tu problema?
Yoshio Okamoto

Respuestas:

13

Ha pasado mucho tiempo, pero estoy bastante seguro de que este problema está en P.

Escribí mi tesis doctoral sobre esto en 1995. Ver "Algoritmos de flujo de red dinámica eficiente" por Bruce Hoppe enviado al departamento de Cornell CS. En línea en http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

Vea el Capítulo 8 "Extensiones" sección 8.1 sobre "bordes mortales"

Bruce Hoppe
fuente
3
"Era una noche oscura y tormentosa. Jack yacía inmóvil en su cabaña, inmóvil a excepción de su estómago, que giraba en sus entrañas como un loco paseo de carnaval ..." (página xiii, donde el autor discute aplicaciones prácticas).
Neal Young el
Buena cita, Neal! :) BTW daveagp hace un buen punto sobre la necesidad de espacio pseudo-polinomial para almacenar el "flujo" que responde a la pregunta de decisión. Cómo no solo encontrar el flujo óptimo, sino también representar que el flujo en P está en los capítulos 1-7 de mi disertación
Bruce Hoppe
¡Excelente! Finalmente leí todo esto. Una vez que arreglamos el flujo de la primera vez que llega a un límite, la viabilidad de la red con las horas de inicio y finalización resultantes es en P (suponiendo que el remanente está permitido) y, por lo tanto, el problema original está en NP: nuestro certificado de tamaño polinómico enumera la hora de inicio para cada borde Super Mario por lo tanto fluye NP-completamente. Preguntas aleatorias: ¿la prohibición del remanente cambia algo? ¿Hay un algoritmo de aproximación decente?
daveagp
2

EDITAR: la respuesta es incorrecta. Hice la suposición implícita (tonta) de que cuando un flujo de ruta comienza en el tiempo sy termina en el tiempo t y pasa por el borde e, bloquea el borde e durante este tiempo. Sin embargo, eso no es verdad. Ver *.

Nota: Quizás este enfoque sea innecesariamente complicado o incorrecto. Aunque traté de verificarlo y lo escribí cuidadosamente, no pasé mucho tiempo en ello.

Suponiendo que no se permite el "almacenamiento", por ejemplo, el flujo debe transferirse inmediatamente. Sea el número de aristas y N la longitud de entrada. No especifiqué un tiempo continuo o discreto, ya que no lo tomé en consideración. Debería funcionar para el pensamiento discreto, para continuo, estoy seguro.mN

Luego, podemos describir la solución como un conjunto de "rutas-flujos" desde el origen hasta el sumidero. Un flujo de ruta es un cuádruple que consiste en lo siguiente: Una ruta simple P desde la fuente hasta el sumidero; Hora de inicio del flujo de ruta s ; Cantidad de flujo a través del camino a ; Tasa de rendimiento r .(P,s,a,r)Psar

Deje que una solución sea dada por un conjunto de flujos de ruta. Podemos verificar si la solución dada por estos flujos de ruta es correcta en el tiempo polinomial en | F | y N :F|F|N

  • Para cada borde y un momento de tiempo t , sume la tasa de rendimiento de todos los flujos de ruta que pasan por e en el tiempo t . Cada flujo de ruta tiene un tiempo de inicio y finalización, por lo tanto, solo necesitamos considerar los momentos de tiempo en que comienza o termina un flujo de ruta (entre estos momentos, nada cambia con respecto a los flujos de ruta que pasan por el borde e .etete
  • Para cada camino de flujo podemos verificar si todos de que el flujo llega al fregadero antes de tiempo .T
  • Para cada borde podemos verificar si un flujo de ruta pasa después de que ha sido destruido o no.
  • El límite inferior del flujo simplemente podemos verificarlo sumando las cantidades de flujo de las rutas de flujo.B

Ahora, que 'sólo' necesidad de mostrar que el número de ruta de los flujos es polinomio en .N

Para una solución dada, podemos determinar el tiempo en que un flujo pasó por un borde y cuándo se destruyó el borde. Convierta esto en un problema con una solución equivalente: hay límites duros en cada borde cuando se puede usar y cuando no, una hora de inicio y finalización. Deje denota el conjunto de todos estos tiempos.{t1,...,tk}

Considere alguna solución no compacta y (inicialmente) un conjunto vacío de flujos de ruta. La idea es que iterativamente encontremos un flujo de ruta en la solución no compacta, lo eliminemos y lo almacenemos en nuestro conjunto de flujos de ruta.

titji<jtptq[tp,tq][ti,tj]Fi,jtjtj

[i,j][ti,tj][ti+1,tj1]|Fs,t|m

Fti,tjti+1tj1

i,j[k]|Fi,j|cm3c

Ruub
fuente
Para mí, el límite de descomposición parece defectuoso, intentaré dar un contraejemplo ilustrativo. Supongamos que la red es solo una fuente-> sumidero de capacidad 100, retraso 0, vida útil 100. Ahora considere este programa de flujo: en el intervalo de tiempo [0, 1) envíe el flujo a una velocidad de 1; en [1, 2) a una tasa de 2, etc. hasta una tasa de 100 en [99, 100). Cualquier descomposición necesita> = 100 rutas-flujos que contradigan su afirmación tal como la entiendo. Debo mencionar que Ford y Fulkerson evitan este obstáculo en su solución clásica (sin períodos de vida) al considerar un tipo específico de solución óptima, no arbitraria.
daveagp
Probablemente esto se pueda evitar maximizando también la 'vida útil' del flujo, pero hay otro problema en la prueba, lo he editado para que quede claro.
Ruub
1

Según tengo entendido, necesitaría almacenar solo un número por arco, que representa el instante en que el flujo comienza a enviarse a través del arco. Eso supone que después de eso, el arco queda inutilizable. Si, de lo contrario, el arco se puede usar nuevamente después de dejar de usarse, debería tener soluciones arbitrarias cercanas a las soluciones para el flujo máximo a lo largo del tiempo (ya que el flujo podría dejar de enviarse durante un período de tiempo arbitrariamente pequeño y luego comenzar a bombearse nuevamente )

Leandro M.
fuente
No puedo entender cuál es su reclamo.
Tsuyoshi Ito
No creo que esto sea correcto. Por ejemplo, imagine una red con tres nodos, la fuente s, la terminal t y otro nodo v, con tres arcos a1 = (s, v), a2 = (s, v), a3 = (v, t). Las capacidades de los arcos son todas 1, y los tiempos de viaje se establecen en 0 para a1 y a3, y 100 para a2. Los períodos de vida son 1 para a1 y 1000 para a2 y a3. Luego, en el tiempo 0, uno puede enviar una unidad de flujo a través de a1 y a3 de sa t, y comienza a enviar una unidad de flujo a través de a2. Durante el tiempo 1 a 99, a3 no lleva flujo, ya que a1 se ha ido, pero en el tiempo 100, el flujo a través de a2 llega a v, y a3 se usa nuevamente.
Yoshio Okamoto
Si entiendo correctamente, usted afirma en parte que una vez que se arreglan los tiempos de nacimiento / muerte de los bordes, el problema restante se puede resolver utilizando el enfoque clásico de flujo máximo en el tiempo, pero no veo cómo es este el caso.
daveagp
@Yoshio: en ese caso, si, en lugar de comenzar a enviar una unidad de flujo a lo largo de a2 inmediatamente, deja de enviar flujos por completo, después de un período de tiempo arbitrariamente corto, a1 podría usarse una vez más, y eso arrojaría una mejor solución.
Leandro M.
@Dave: no, eso no es exactamente lo que digo. Lo que estoy diciendo es que cada arco puede usarse solo un número finito de veces, o las soluciones al problema deberían aproximarse arbitrariamente a las soluciones al flujo máximo en el tiempo. En resumen, me preocupan los detalles de la definición del problema.
Leandro M.