J'ai un graphique orienté avec des bords colorés (rouge & bleu) qui peut contenir des cycles. La question est d'écrire un algorithme à deux sommets (s, t) qui trouve le chemin avec le nombre minimal de changements de couleur entre s et t (si un tel chemin existe).Chemin avec le nombre minimum de modifications dans le graphique avec les couleurs
J'ai trouvé une solution en utilisant une variante de Dijkstra (j'ai créé un nouveau graphique où chaque sommet correspond à un bord du graphique précédent, et contient la couleur du bord. une arête dans l'ancien graphe, alors (1/2) est un sommet dans le nouveau.J'ai connecté les sommets "bords adjacents", et les arêtes du nouveau graphe qui change de couleur ont un poids de 1, où la même transition de couleur est 0).
Je cherche une solution en temps linéaire (de V et E). Celui ci-dessus utilise des arêtes VxE dans le nouveau graphique.
Y a-t-il une telle solution pour trouver le chemin minimal?
Merci. Mais comment puis-je faire cette réduction au problème du plus court chemin en temps linéaire? la construction du graphe pondéré prend E fois V bords si je suis correct – lc26
@ lc26 Désolé, négligé cela. J'ai ajouté une réduction linéaire au plus court chemin vers ma réponse. – ead