Subgrafo que contiene todos los nodos y bordes que forman parte de las rutas st simples de longitud limitada en un gráfico no dirigido


12

Muy similar a mi pregunta publicada anteriormente . Esta vez, sin embargo, el gráfico no está dirigido.

Dado

  • Un gráfico G no dirigido sin múltiples bordes o bucles,G
  • Un vértice fuente s ,
  • Un vértice objetivo t ,
  • Longitud máxima del camino l ,

Busco - A subgrafo de G que contiene cualquier vértice y cualquier borde en G (y sólo aquellos), que son parte de al menos un camino simple de s a t con longitud l .GGGstl

Notas:

  • No necesito enumerar los caminos.
  • Estoy buscando un algoritmo eficiente (tiempo y memoria), ya que necesito ejecutarlo en gráficos muy grandes (10 ^ 8 vértices, 10 ^ 9 bordes).

mira esto. Encontré este documento, que parece hacer una reducción de flujo de costo mínimo similar, pero utiliza las características especiales de la red para resolverlo más rápido que los algoritmos generales de MCF.
RB

Respuestas:


6

Bueno, el problema está en después de todo. Mantendré la respuesta anterior, ya que también funciona para el caso dirigido (que es NPC, como se respondió en la otra pregunta), y muestra que es F P T con respecto a l .PFPTl

En el caso no dirigido, es solucionable, determinísticamente a través del flujo de costo mínimo (esto podría no funcionar en las escalas a las que se refiere en la pregunta, pero es mejor que el algoritmo exponencial.

El siguiente procedimiento decidirá si alguna arista debe ser parte del gráfico de salida. Para responder al problema original, simplemente recorra todos los bordes.e=(u,v)E

Para crear la red de flujo, haga lo siguiente:

Paso 1: expanda para tener un vértice x e y reemplace e con los bordes ( u , x e ) , ( x e , u ) , ( v , x e ) , ( x e , v ) (se dirigen como un parte de la red de flujo), establezca su costo en 0.exee(u,xe),(xe,u),(v,xe),(xe,v)

txett+(t,t+)

{a,b}E(a+,b),(b+,a)

ye(s,ye),(t,ye)

Paso 5: establezca todas las capacidades en 1.

xeye


Análisis:

  • xeyexesyexetye
  • Las rutas son disjuntas, ya que para cada vértice solo hay 1 capacidad en el arco .t(t,t+)
  • Las rutas devueltas son las dos rutas cuya suma de distancias es mínima, y ​​ese también es el costo del flujo encontrado. Esto nos permite agregar al gráfico de salida o eliminar de otra manera.e

1
Es más fácil entender el argumento en la respuesta anterior quitando la reducción al flujo dirigido. Hay un camino simple de a que contiene un nodo si y sólo si existe un camino de a y una trayectoria de a tal que y son disjuntos nodo excepto en . Esto usa crucialmente la falta de dirección. Esto se puede verificar a través del flujo y la versión de costo también se puede hacer a través del flujo de costo mínimo. Se puede verificar si hay una ruta simple de a contengastvPvsQvtPQvsteintroduciendo un nodo en el medio de . e
Chandra Chekuri

@ChandraChekuri - eso es correcto, pero tenga en cuenta que si el problema no tiene la restricción de longitud, hay un algoritmo mucho más simple para decidirlo - vea aquí
RB

Claro, también conozco esa solución: conceptualmente, es bueno comprender los componentes conectados a través de rutas disjuntas, aunque uno puede encontrar vértices cortados y componentes conectados directamente a través de DFS.
Chandra Chekuri

@RB: Gracias. El algoritmo sugerido puede ser efectivo cuando l es relativamente grande, pero probablemente sea subóptimo para valores relativamente pequeños de l. Supongo que puedo recortar G primero quitando cualquier vértice más lejos que el piso (l / 2) de sy el techo (l / 2) de t.
Lior Kogan

1
Intente adaptar el sucesivo algoritmo de ruta más corta (también llamado algoritmo de Surballe para el caso de 2 rutas que es de interés aquí). Desea encontrar los 2 caminos más cortos desde (es mejor llamarlo lugar de ya que es el mismo para todos los bordes) a cada . Creo que esto se puede hacer de manera eficiente al calcular primero un árbol de ruta más corto desde y luego implementar el cálculo de la segunda ruta con cuidado. yyyexey
Chandra Chekuri

1

Aquí es un mal respuesta: se da salida a algunos vértices que forman parte de caminos no simples de a y que no forman parte de ningún camino simple de a de longitud . La respuesta aún podría ser relevante para la aplicación del autor de la pregunta, así que la dejo aquí.stst

Aquí hay un algoritmo que se ejecuta en el tiempo (y en realidad es más rápido que esto cuando es pequeño).O(|V|+|E|)

El algoritmo ejecuta una búsqueda BFS desde que termina en profundidad . Este BFS proporciona un conjunto de todos los vértices accesibles desde con una ruta de longitud como máximo , y también calcula las distancias para cada . Luego haría lo mismo desde y obtendría el conjunto y las distancias desde . Finalmente, los vértices que está buscando son exactamente . Los bordes son exactamente esos bordes en (sVssdist(s,v)vVstVttVsolution={v:vVsVt,dist(s,v)+dist(t,v)}E[Vsolution]=(v,u)E:u,vVsolution)

El tiempo de ejecución de este algoritmo es seguramente porque solo hace dos BFS. Pero el tiempo de ejecución es en realidad que será mucho más pequeño que el tamaño del gráfico cuando el radio acerca a y son pequeñas.O(|V|+|E|)O(|Vs|+|Vt|+|E[Vs]|+|E[Vt]|)st

Editar: es probable que haya un algoritmo algo más rápido en la práctica que hace un BFS de y de profundidad única en lugar de . Esto descubre todos los caminos, y luego con un poco de contabilidad puede encontrar todos los vértices. Esto reduce el tiempo de ejecución en una raíz cuadrada para el caso de un gráfico grande de aspecto aleatorio cuando es pequeño.st/2


3
Esto no obliga a que el camino sea simple. Considere el gráfico de ruta simple y . Devolverá como parte de la salida, aunque no hay una ruta st simple que atraviese ...tusvxl=4vv
RB

Gracias por la corrección @RB. Edité mi respuesta para notar que está mal.
mobius dumpling

1

Esto pretende ser un comentario, pero es demasiado largo para publicarlo como comentario.

También podría estar interesado en llaves de gráfico o emuladores para sus propósitos. Una llave de un gráfico es un subgrafo con pocos bordes, pero distancias aproximadamente preservadas. Un emulador es un gráfico cuyos bordes pueden ser ponderados.G=(V,E)H=(V,E)H=(V,E,w)

El mejor resultado para las llaves es bordes y un error aditivo de +6 en las estimaciones de distancia en el gráfico. El mejor resultado para los emuladores es bordes y un error aditivo de +4. Tampoco se sabe si podemos vencer a , incluso si se permite que el error sea pollogarítmico.O(n4/3)O(n4/3)O(n4/3)

Si esto suena útil, puedo intentar desenterrar las construcciones relevantes para usted.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.