Bonjour à tous,
Je cherche à trouver une solution optimale à un problème de manière polynomiale. Le problème ressemble à une recherche de plus court chemin, mais dans un graphe spécial, que j'aurais envie d'appeler "graphe de dépendances" (si vous avez un terme plus officiel pour ça je suis preneur). Il s'agit d'un graphe pour lequel on peut visiter un nœud si et seulement si un certain ensemble de nœud a déjà été visité.
Par exemple, là ou dans un graphe normal, on peut visiter un nœud N si on a visité "A ou B ou C", dans mon cas, on peut visiter un nœud N si et seulement si on a visité "(A et D) ou (B et E) ou C"
Chaque arête (dépendance) a un certain poids, et je veux calculer l'ensemble des arêtes de poids total minimal nécessaire pour aller d'un certain nœud de départ à un certain nœud d'arrivée.
Voici un exemple de "graphe de dépendances" assez simple. On part de A, et on veut atteindre H avec un coût minimal.
Dans cet exemple, on a deux choix de "chemin" (c'est pas vraiment des chemins puisque on passe donc par plusieurs endroits à la fois, mais vous voyez l'idée):
- soit on passe par B, C, D et E. Le coût dans ce cas là est 2 + 7 + 7 + 0 + 3 = 19.
- soit on passe par C, F et G. Le coût dans ce cas là est 7 + 3 + 1 + 9 = 20.
On aimerait donc trouver la 1ère solution.
Voilà, je n'ai pas trouvé d'algorithme sur internet pour ce problème, mais ne connaissant pas quels mots-clés utiliser pour la recherche, je pourrais très bien avoir raté une solution. Quelqu'un connaît un algo ou a des idées pour résoudre ce problème ? Il me faudrait un algo polynomial. Donc en n^3, n^4... ça ne me dérange pas tant que ce n'est pas exponentiel. Au passage, dans mon cas, les poids seraient seulement des 0 ou 1, mais je ne sais pas si ça rend les choses plus facile.
Merci d'avance pour votre expertise !
Partager