Questo è il problema:Quale algoritmo posso utilizzare per trovare il percorso più breve tra i tipi di nodo specificati in un grafico?
Ho n punti (p1, p2, p3, .. pn), ognuno di essi può connettersi a qualsiasi altro con un costo determinato x.
Ogni punto appartiene a un gruppo di tipi di punti (ad esempio "A" "B" "C" "D" ...).
L'input del metodo è il percorso che voglio seguire, ad esempio "A-B-C-A-D-B".
L'uscita è il percorso più breve che collega i punti del tipo dò in ingresso così per esempio "p1-p4-P32-P83-P43-p12" dove p1 è un tipo A, p4 un tipo B, p32 un tipo C, p83 un tipo A, p43 un tipo D e p12 un tipo B.
La soluzione "facile" consiste nel calcolare TUTTI i possibili percorsi ma il costo computazionale è molto alto!
Qualcuno può trovare un algoritmo migliore?
Come ho detto nel titolo, non so se esiste!
Aggiornamento:
Il punto chiave che mi impedisce di usare Dijkstra e gli altri algoritmi simili è che non ho a collegare i punti in base al tipo.
Come input, ho una serie di tipi e devo collegarmi in questo ordine.
Questa è un'immagine di Kent Fredric (grazie mille) che descrive la situazione iniziale (nei collegamenti consentiti in rosso)!
alt text http://img13.imageshack.us/img13/3856/immagineaol.jpg
Un vero e proprio esempio di vita:
Un uomo vuole visitare una chiesa al mattino, andare al ristorante e, infine, visitare un museo nel pomeriggio.
Nella mappa ci sono 6 chiese, 30 ristoranti e 4 musei.
Vuole che il museo-chiesa-distanza sia il minimo possibile.
Non capisco cosa intendi esattamente. Non è solo una specie di albero spanning minimo? –
Hai intenzione di vendere qualcosa in uno di questi punti? http://en.wikipedia.org/wiki/Travelling_salesman_problem –
L'attesa è che è possibile seguire solo un singolo nodo per ogni lettera? – EFraim