Me gustaría saber si el siguiente problema se puede resolver en (espacio de registro no determinista):
Dado un grafo dirigido con dos distinguidos vértices y , es que hay un único camino de a en ?
Creo que es probable que esté en ya que podemos decidir si hay una ruta - y si no existe esa ruta. Sin embargo, contar el número de tales caminos es -hard (Valiant, 1979).
Entonces mis preguntas: ¿Tiene referencias sobre esto? ¿Es obvio que está en ? ¿O que no está en ?
Respuestas:
Parece que tu problema está en . Aquí hay un algoritmo.NL
En primer lugar, nondeterministically adivinar un camino de a . Si adivinas incorrectamente, rechaza . Llame a este algoritmo .t As t A
Considere el siguiente algoritmo no determinista , que determina si hay al menos dos rutas. Dado un gráfico , para todos los pares de aristas distintas , adivine una ruta de a que incluya pero no , luego adivine una ruta de a que incluya pero no . Si las conjeturas son correctas, acepte . Si no hay aceptación para todas las opciones de y , rechazar . Nota es implementable en espacio de registro no determinista.s , t e , f s t e f s t f e e f BB s,t e,f s t e f s t f e e f B
Ahora, el conjunto es el conjunto de gráficos - con al menos dos rutas de a . Debido , el complemento de es también en , es decir, podemos determinar si y tienen menos de dos caminos, en logspace no determinista.s t s t N L = c o N L B N L s tL(B) s t s t NL=coNL B NL s t
El algoritmo final es: "Ejecutar Si acepta, ejecute el complemento de y envíe su respuesta".A BA A B
No sé de una referencia.
ACTUALIZACIÓN: Si realmente desea una referencia, consulte el primer párrafo de la Sección 3 de este documento . Pero esta es probablemente solo una de las muchas referencias que citan esta consecuencia. Sería más razonable llamar al resultado "folklore" en lugar de citar un artículo que lo menciona.
ACTUALIZACIÓN 2: Supongamos que desea determinar si hay una ruta simple única. En ese caso, el algoritmo no tiene que cambiar: si hay una ruta, entonces hay una ruta simple. Creo que la siguiente modificación trabajará para el algoritmo .BA B
Queremos reescribir el algoritmo para que acepte si hay al menos dos rutas simples.B
Primero considere el siguiente algoritmo de tiempo polinómico para el problema. Encontrar un camino más corto desde a . Para cada borde en , verifique si hay otra ruta - que no pase por . Si encuentra ese camino, acepte . Si nunca encuentras otro camino, rechaza . Debido a que es el más corto, no tiene un ciclo, y si hay otra ruta que no usa algún borde de , entonces hay otra ruta que es simple y no usa algún borde des t e P s t e P P PP s t e P s t e P P P . (Este algoritmo se usa para el problema del "segundo camino más corto").
Implementaremos este algoritmo en . Si tuviéramos un algoritmo para consultar los bordes en una ruta fija , podríamos implementar lo anterior en un espacio de registro no determinista: iterando a través de todos los bordes en , adivine una ruta - y verifique eso para cada borde visitado en el camino , ninguno de ellos es igual a .NL NL e P e P s t e
Entonces, lo que necesitamos es un "oráculo de ruta", un algoritmo con la propiedad: dado , en cada ruta de cálculo, el algoritmo informa el borde en una ruta - fija particular , o rechazar . Podemos obtener un oráculo de ruta usando para aislar la primera ruta lexicográfica.NL i=1,…,n i s t NL=coNL
Aquí hay un bosquejo del oráculo del camino.
Dado , este algoritmo da salida a ya sea el ésimo borde en el camino lexicográficamente más corto de a , o rechazos.i P s ti i P s t
fuente