Este es el problema:¿Qué algoritmo puedo usar para encontrar la ruta más corta entre tipos de nodos especificados en un gráfico?
Tengo n puntos (p1, p2, p3, .. pn), cada uno de ellos se puede conectar a cualquier otro con un costo x determinado.
Cada punto pertenece a uno de un conjunto de tipos de puntos (por ejemplo, "A" "B" "C" "D" ...).
La entrada del método es la ruta que quiero seguir, por ejemplo "A-B-C-A-D-B".
La salida es la ruta más corta que conecta los puntos del tipo I give in input, por ejemplo "p1-p4-p32-p83-p43-p12" donde p1 es un tipo A, p4 un tipo B, p32 un tipo C, p83 un tipo A, p43 un tipo D y p12 un tipo B.
La solución "fácil" consiste en calcular TODAS las rutas posibles pero el costo computacional es muy alto.
¿Alguien puede encontrar un mejor algoritmo?
Como dije en el título, ¡no sé si existe!
Actualización:
El punto clave que me impide el uso de Dijkstra y los otros algoritmos similares es que tengo para enlazar los puntos según el tipo.
Como entrada tengo una variedad de tipos y tengo que enlazar en ese orden.
Esta es una imagen de Kent Fredric (muchas gracias) que describe la situación inicial (en enlaces rojos permitidos)!
alt text http://img13.imageshack.us/img13/3856/immagineaol.jpg
Un ejemplo de la vida real:
Un hombre quiere visitar una iglesia en la mañana, ir al restaurante y, finalmente, visitar un museo por la tarde.
En el mapa hay 6 iglesias, 30 restaurantes y 4 museos.
Quiere que la distancia church-rest-museum sea la mínima posible.
No entiendo exactamente lo que quiere decir. ¿No es solo algún tipo de árbol de expansión mínimo? –
¿Planea vender algo en cualquiera de estos puntos? http://en.wikipedia.org/wiki/Travelling_salesman_problem –
¿Espera que solo pueda seguir un nodo por cada letra? – EFraim