Considérons un graphique connecté non orienté avec des poids de bord non négatifs et deux sommets distincts . Voici quelques problèmes de chemin qui sont tous de la forme suivante: trouver un chemin , de sorte qu'une fonction des poids de bord sur le chemin soit minimale. En ce sens, ils sont tous «apparentés» au problème du chemin le plus court; dans ce dernier, la fonction est simplement la somme.
Remarque: Nous recherchons des chemins simples, c'est-à-dire sans aucun sommet répété. Comme je n'ai pas trouvé de noms standard pour ces problèmes dans la littérature, je les ai nommés moi-même.
Chemin avec un écart de poids minimum: trouvez un chemin , de sorte que la différence entre le plus grand et le plus petit poids de bord sur le chemin soit minimale.
Chemin le plus lisse: trouvez un chemin , de sorte que la plus grande taille de pas sur le chemin soit minimale, où une taille de pas est la valeur absolue de la différence de poids entre deux bords consécutifs .
Chemin avec altitude minimale: Définissons l'altitude d'un chemin par la somme des tailles de pas le long du chemin (voir la définition de taille de pas ci-dessus). Trouvez un chemin avec l' altitude minimum.
Chemin avec poids premier minimum: en supposant que tous les poids de bord sont des entiers positifs, trouvez un chemin , de sorte que son poids soit un nombre premier. S'il existe un tel chemin, trouvez-en un avec le plus petit poids premier possible.
Question: que sait-on de ces problèmes de chemin? (Et d'autres qui pourraient être conçus dans un esprit similaire, en appliquant une fonction différente des poids.) En général, existe-t-il des indications permettant de déterminer quelles fonctions des poids de bord peuvent être minimisées en temps polynomial et lesquelles sont NP-dures?
Remarque: il est intéressant, par exemple, que bien que la somme des poids soit facile à minimiser (c'est le problème classique du chemin le plus court), mais minimiser la moyenne étroitement liée des poids sur le chemin est NP-difficile. (2 à pondérer tous les bords incident et , et le poids 1 à tous les autres. Puis un chemin min de poids moyen sera un plus long chemin).
la source
Chemin avec écart de poids minimum : Cela peut être résolu dans le temps , oùest le nombre d'arêtes (en supposant que est au moins linéaire dans le nombre de sommets). Vous pouvez parcourir le poids minimum, effectuer une recherche binaire (ou des mises à jour efficaces) sur le poids maximum et vérifier la connectivité. Je ne sais pas si cela peut être amélioré.O~(|E|2) |E| |E|
Chemin avec l'altitude minimale (dans votre terminologie): Cela peut être résolu dans le temps . Vous pouvez calculer la distance (comme la somme des tailles de «pas») à tous les bords de façon analogue au chemin le plus court pondéré ordinaire. Notez que les sommets répétés ne peuvent pas raccourcir un chemin. Pour gérer efficacement les sommets de haut degré (comme pour éviter le temps ), vous pouvez diviser un sommet de degré en un chemin de sommets.O~(|E|) |E|2 k k−1
Chemin avec poids premier minimal: si les poids sont en binaire, ce doit être NP complet: utilisez les bords de poids 1, à l'exception du bord de poids élevé initial de sorte que seul un chemin de Hamilton ait un poids premier (le poids est la somme des poids de bord) . (Une mise en garde est que nous n'avons pas prouvé que des nombres premiers suffisamment grands (même sans écarts premiers minimaux) peuvent être rapidement trouvés sans caractère aléatoire.) Même pour les poids unaires, je ne m'attends pas à ce qu'il soit en P.S Θ(n/logn) PS même pour les poids binaires: il suffit de garder une trace des poids de chemin polynomialement les plus bas (en fonction de ) à chaque point. Cependant, avec les poids premiers, nous devrons peut-être diversifier les diviseurs des différences de poids (au lieu de simplement suivre les poids les plus bas), et il n'est pas clair si cela suffit.S
Poids premier minimal permettant intersections: En P pour les poids unaires. Si, à la place de l'ensemble des nombres premiers, nous avons utilisé un ensemble de nombres aléatoires de densité , alors avec la probabilité 1, c'est dans
Chemin le plus fluide: NP terminé. Si nous autorisions les auto-intersections, cela serait résoluble dans le temps , mais pour la version sans auto-intersections, voici une réduction de 3-SAT avec variables. Avoir des sommets , plus un sommet pour chaque clause. Pour chaque variable ( ), ajoutez un chemin lisse (en utilisant des sommets supplémentaires si nécessaire) de à qui traverse toutes les clauses avec occurrence positive de , et un chemin similaire pour les clauses avecO~(|E|) n s=v0,v1,...,t=vn xi i<n vi vi+1 xi ¬xi . Définissez le poids du premier et du dernier bord de chaque chemin sur 1 (ou une autre constante), mais sinon choisissez des poids tels qu'aucun autre chemin ne soit lisse. Enfin, dupliquez tous les sommets de clause et les bords adjacents; de cette façon, chaque clause peut être visitée au plus deux fois, ce qui suffit pour 3-SAT.
la source