¿Qué algoritmo utilizarías para crear una aplicación que proporcionara los datos apropiados (lista de ciudades, rutas de tren, estaciones de tren) capaz de devolver una lista de conexiones entre dos ciudades seleccionadas por el usuario? La aplicación tiene que elegir solo aquellas conexiones que caen dentro del límite de cambios de tren aceptados.Algoritmo: buscar conexiones entre ciudades con un límite de cambios de tren
Ejemplo: Pregunto a la aplicación qué tren tomar si tengo que viajar de París a Moscú con un máx. 1 parada/cambio - la aplicación devuelve una ruta: Tren 1 (París-Berlín) -> Tren 2 (Berlín-> Moscú) (No existe conexión directa).
Ejemplo gráfico
Si pido el sistema acerca de las posibles conexiones de Ciudad Un a Ciudad G puedo obtener una respuesta:
- línea marrón (0 interruptores = directo)
- Line Brown a Ciudad Línea B/naranja a Ciudad G (1 Interruptor)
- línea marrón a Ciudad Línea B/naranja a Ciudad del D/línea roja a G (2 Interruptor)
- ... todas las demás posibilidades
Y si la segunda y la tercera opción son más cortas que la primera, es la primera que debería tener prioridad (ya que no se requiere cambio de tren).
He actualizado mi pregunta. ¿Estás seguro de la respuesta? – Queequeg
* @ Queequeg La respuesta aún se cumple. Dada una ciudad de origen y una ciudad objetivo t, ejecute BFS desde s.La ruta encontrada por BFS es la más corta, y por lo tanto requiere menos conmutadores que cualquier otra ruta. *
Pero BFS consideraría cada ciudad/nodo como un interruptor y eso no es cierto, es decir, la línea marrón no sería elegida por BFS pero es LA óptima solución – Queequeg
@Queequeg: Entiendo dónde estaba tu confusión. Actualicé la respuesta [vea la Nota en negrita], se elegirá la línea marrón, ya que agregará un borde directo de 'townA' a' townG', por lo que la ruta más corta encontrada por BFS es '(townA, townG)' - que es el camino sin interruptores, como se esperaba. – amit