Quelle est la complexité du problème suivant?
Entrée :
- unchemin hamiltonienen K n
- un sous-ensemble de paires de sommets
- un entier positif
Requête : existe-t-il un correspondant tel que pour chaque , ?
(où G = ( [ n ] , M ∪ H ) )
J'ai eu une discussion avec un ami sur ce problème. Mon ami pense que le problème est en temps polynomial. Je pense que c'est NP-complet.
Réponses:
Cette réponse est incorrecte .
Votre ami a raison. Votre problème (tel qu'interprété par Sasho) ne place aucune restriction sur la cardinalité du correspondant . Par conséquent, choisir C à une mise en correspondance entre les paires de R . Alors pour tout entier positif k , la distance entre chaque paire dans R est inférieure à k .C C R k R k
Votre problème devient intéressant si vous forcez les chemins pour contenir les bords de la fois la mise en correspondance et le chemin P .C P
la source
MISE À JOUR: la réponse ci-dessous n'est pas correcte, car j'ai supposé à tort que le chemin hamiltonien est dans un graphe arbitraire, pas dans . Je ne le supprime pas, je pourrai peut-être le réparer ou il donnera quelques indices pour une autre réponse.Kn
Je pense que c'est NP-complet. Ceci est une idée de réduction très informelle / rapide de 3SAT
Pour chaque variable ajouter un « gadget variable » avec:Xje
Ajoutez un nœud source et connectez-le à toutes les variables X i .S Xje
Pour chaque clause ajoutez un nœud C j et connectez-le aux variables correspondantes + X i ou - X i qui forment la clause.Cj Cj + Xje - Xje
L'image suivante représente:( + x1∨ - x2∨ - x3) ∧ ( - x2∨ x3∨ x4)
L'ensemble (nœuds qui doivent être liés) contient ( S , C 1 ) , ( S , C 2 ) , . . .R ( S, C1) , ( S, C2) , . . .
Le chemin simple doit inclure toutes les arêtes "BLEUES" à l'exception des arêtes variables ( X i , + X i ) et ( X i , - X i ) (dans l'image ci-dessus, les arêtes bleues représentent les arêtes que nous incluons dans P ).P ( Xje, + Xje) ( Xje, - Xje) P
À ce stade, la formule initiale est satisfaisable si et seulement si le chemin le plus court de à chaque nœud de clause C j n'est pas supérieur à trois. En effet pour atteindre une clause de S en trois étapes il faut parcourir au moins une variable X i : S → X i → ± X i → C j . Il faut donc traverser l'une des deux arêtes: X i → + X i ou X i → - X i ) et l'inclure dans CS Cj S Xje S→ Xje→ ± Xje→ Cj Xje→ + Xje Xje→ - Xje) C (car par construction ça ne fait pas partie de ). Mais les deux ne peuvent pas être inclus, car ils partagent un sommet.P
Mais nous ne sommes pas sûrs de pouvoir construire un chemin P simple qui inclut tous les bords bleus car certains nœuds ont plus d'un bord bleu incident.P
Pour résoudre ce problème, nous remplaçons chaque nœud par plusieurs bords bleus incidents, par un arbre qui ne contient que des paires de bords bleus incidents qui seront inclus dans et des bords qui les séparent et qui devraient être inclus dans C pour atteindre les nœuds de la clause:P C
Le graphique d'origine devient:
la source