Il existe (sauf erreur de ma part

) un moyen pour résoudre ce problème de manière exacte à l'aide d'un algorithme de labelling :
Un label va définir un chemin partiel. Un label est composé de différent éléments :
-un pointeur vers le noeud ou ce chemin partiel fini : $N$
-un pointeur vers le label représentant ce chemin partiel finissant sur le noeud précédent du chemin partiel : $Lp$
-une variable $c_i$ qui va stocker le cout de ce chemin partiel pour chacun de tes critères $i$
On va définir le concept de domination, un label L domine un label L' si n'importe quel chemin issue de L' aura un cout supérieur ou égale pour chaque critère au(x) meilleur(s) chemin issues de L une fois arrivé au noeud puits. Dans ce cas si tu considère que le parcours d'un arc à un coût positif ou nul tu peux dire que L domine L' si :
L et L' représentent un chemin partiel finissant sur le même noeud et le coût de chaque critère pour L est inférieur ou égale à celui de L' avec au moins une de ces égalité étant stricte.
Du coup ton algo va se dérouler de la manière suivante :
Initiallement tu part avec un seul Label étant sur ton noeuds source et ayant un coût de 0 pour chacun des critères.
A chaque pas tu étant tout les labels non dominés, n'ayant pas encore été étendu, à tout leur voisins n'appartenant pas déjà au chemin partiel représenté par le Label non dominé que tu étend.
Pour tout les label créés tu va les comparer à tous les label non dominé. Si tu détecte des label dominé tu peux les retirer.
Ton algorithme est terminé quand tu ne peux plus étendre aucun label non dominé. A ce moment tout les Label représentant un chemin terminant sur le noeud puit non dominé représentent ton front Pareto.
Bon, je suis pas sur d'avoir été clair, ni que cette approche soit la plus efficace pour trouver le front pareto pour ce problème...
Bon courage
Partager