«Parents» du problème du chemin le plus court


10

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.s,tst

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.st

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 .st

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.st

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.st

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).stst

Réponses:


8

Voici une réponse au premier problè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.st

Un article de 1984 montre que chaque fois que nous pouvons décider de la faisabilité (existe-t-il une solution dans le cas non pondéré) pour un problème d'optimisation combinatoire en temps polynomial, alors nous pouvons également trouver en temps polynomial une solution qui minimise la différence entre le plus grand et le plus petit coefficient de coût (dans le cas pondéré):

S. Martello, WR Pulleyblank, P. Toth, D. de Werra
Problèmes d'optimisation équilibrés
Operations Research Letters 3, 1984, Pages 275-278

Cela implique un algorithme de temps polynomial pour votre question.


1
Cela peut également être fait par une recherche de force brute sur toutes les paires d'arêtes qui pourraient constituer le max et le min, et leur ordre / orientations.
Yonatan N

3

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|2kk1

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.
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 dansSΘ(n/logn)PSmê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

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|)ns=v0,v1,...,t=vnxii<nvivi+1xi¬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.


Je pense que le chemin le plus lisse est en P, en raison de la transformation suivante. Soit un sommet de degré . Remplacez par une clique de taille , de sorte que chaque arête qui était à l'origine adjacente à se termine maintenant à un sommet différent de la clique. Si sont deux arêtes originales de ce type, affectez le poidsau bord dans la clique. Effectuez cette transformation pour chaque sommet et attribuez une pondération 0 aux bords du graphique d'origine. Puis un poids minimumvdvdevvee,f|w(e)w(f)|(ve,vf)vs,tstchemin dans le nouveau graphique donne un chemin plus lisse dans l'original, après avoir annulé la transformation.
Andras Farago

@AndrasFarago Le problème avec votre argument est que certains chemins simples dans le graphique étendu ont des sommets répétés dans le graphique d'origine. J'aime que le problème de chemin le plus fluide soit d'une simplicité trompeuse.
Dmytro Taranovsky

@ Dmytro Taranovsky Il semble que vous ayez raison, il peut en effet arriver qu'après le retour au graphique d'origine, nous puissions obtenir des sommets répétés sur le chemin (mais pas de bords répétés). Cependant, si chaque degré du graphique d'origine est au maximum de 3, aucune répétition ne peut se produire. Cela signifie que le problème de chemin le plus lisse est en P au moins pour les graphiques avec un degré maximum . 3
Andras Farago

Désolé, dans le graphique transformé, nous devons trouver un chemin avec le plus petit poids maximum (qui est également en P), plutôt que le plus petit poids total. Le poids total conduirait à un chemin avec une altitude minimale (dans les graphiques avec un degré maximum , de sorte que les sommets répétés sont exclus). 3
Andras Farago
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.