2012-02-18 23 views
10

Hace algunos días, alguien me preguntó: si tenemos algunos agentes en nuestro entorno, y quieren ir desde sus fuentes a sus destinos, cómo podemos encontrar el camino más corto para todos de tal manera que no deberían tener conflicto durante su caminata.Cómo encontrar el camino más corto en situación dinámica

El punto del problema es que todos los agentes caminan simultáneamente en el entorno (que puede modelarse mediante un gráfico ponderado no dirigido), y no debería haber ninguna colisión. Pensé en esto, pero no pude encontrar la ruta óptima para todos ellos. Pero seguro que hay demasiadas ideas heurísticas para este problema.

Supongamos entrada es un gráfico G (V, E), agentes m que están en: S , S , ..., S m nodos del gráfico de la puesta en marcha y que deben ir a los nodos D , ... D m al final. También puede haber es conflicto en nodos S i o D i, ... pero estos conflictos no son importantes que no deberían haber conflicto cuando están en sus nodos internos de su camino.

Si su ruta no debe tener el mismo nodo interno, será un tipo de problema k-disjoint paths que es NPC, pero en este caso las rutas pueden tener los mismos nodos, pero el agente no debe estar en el mismo nodo al mismo tiempo. No sé, puedo decir la declaración exacta del problema o no. Si es confuso, dígame en los comentarios para editarlo.

¿Hay algún algoritmo óptimo y rápido (por óptimo quiero decir que la suma de la longitud de todas las rutas sea lo más pequeña posible, y por rápido quiero decir un buen algoritmo de tiempo polinomial).

+0

¿Los agentes pueden permanecer en un nodo determinado? ¿O tienen que caminar en cada iteración? (Podría modelar un costo para quedarse creando una ventaja para el nodo en sí) – Zeta

+0

@Zeta, De hecho, sí, pero no dije esto porque pensé que sería más complicado. Pero si tienes una solución para esto, sería bueno. –

+0

No tengo una solución (aún), lo siento, pero esto cambiará las mejores soluciones posibles: [Ejemplo] (http://i.imgur.com/I6vAP.png). Si no se permite esperar, entonces la suma mínima de todas las longitudes es '100 + 100 + 2 = 202'. Si se permite esperar y cuesta menos de 66 (digamos 40), entonces la suma mínima de todas las longitudes es '40 + 1 + 1 + 40 + 40 + 1 + 1 + 2 = 42 + 82 + 2 = 126'. – Zeta

Respuesta

5

una búsqueda en Google revela dos enlaces que pueden ser útiles:

Editar: Desde el capítulo del libro (primer enlace):

Hay varios enfoques para planificar el camino Sin embargo, encontrar la solución óptima es NP-hard. Hopcraft et al. (1984) simplifican el problema de planificación al problema de mover rectángulos en un contenedor rectangular. Probaron la dureza NP de encontrando un plan de una configuración dada a una configuración de objetivo con la menor cantidad de pasos . Por lo tanto, todos los enfoques factibles para la planificación de rutas son un compromiso entre la eficiencia y la precisión del resultado.

No puedo encontrar el artículo original de Hopcroft en línea, pero dado que cita, sospecho que el problema se reduce a la tarea de navegación es similar a Rush Hour, que es PSPACE-completo.

+0

Sus documentos de referencia hablan de diferentes heurísticas, lo cual no es difícil (lo mencioné en mi pregunta), le preguntaba sobre el algoritmo exacto. Puede ser para el primer OP (que me hizo esta pregunta), la heurística es agradable, pero para mí el algoritmo exacto o NP-Completeness es interesante. –

+0

Actualicé la respuesta con una cita del primer enlace; el problema parece ser NP-difícil. – DataWraith

+0

Correcto, sería NP-hard, no NP-complete, tiene sentido. – ldog

0

Si es sólo una cuestión de ir del punto A al punto B para cada robot, sólo podría utilizar un algoritmo de búsqueda como A* (A Star) o Best-First.

Dale una heurística simple como la suma de distancias del objetivo.

+0

La heurística más simple es encontrar el camino más corto para todos ellos, luego ejecutar algoritmo, si algún robot tiene colisión con otros por alguna prioridad detenerlo, y ejecutar otros robots, este algoritmo es rápido y termina pronto (no es difícil mostrar esto), estoy buscando el algoritmo exacto. –

Cuestiones relacionadas