Question

Même si je sais que le Hamilton problème de chemin est $ {\ sf NP} $ - complète, je pense que la variante suivante peut être résolu en temps polynomial:

Etant donné un noeud plan graphique avec commencer ensemble de sommets V $ $, bord fixé $ E $, $ S $ et le noeud cible $ F $, notre tâche est de trouver le chemin hamiltonien de $ S $ à $ F $ ou écrire que le chemin n'existe pas.

dernière condition : Dans le chemin, en plus de sélectionner les sommets reliés directement, nous pouvons aussi choisir ceux qui sont liés à un seul voisin.

Modifier :. Le degré de tout sommet est au plus quatre ($ \ ° (v_i) \ le 4 $)

Est-ce que quelqu'un a des idées sur la façon de prouver que cela peut être résolu en temps polynomial?

Il peut être difficile à comprendre, donc je vais donner un exemple:

Exemples

Dans l'exemple de gauche, pour $ S = 1, F = 12 $, la solution est la voie 1 $, 11, 8, 7, 5, 9, 2, 10, 4, 6, 3, 12 $.

Dans l'exemple de droite, pour $ S = 1, F = 15 $, il n'y a pas de chemin hamiltonien.

Était-ce utile?

La solution

Peut-être que le problème est toujours NP-complet; cette réduction devrait fonctionner: étant donné un graphe planaire $ G $ et deux nœuds $ s $ et $ t $ (début et fin), l'étendre à un nouveau graphe $ G '$ de cette façon: pour chaque nœud u $ $ de $ G $ ajouter deux noeuds U_1 $, U_2 $ et deux bords: $ (u, U_1), (U_1, U_2) $ (ajouter officieusement tail fait avec deux nouveaux nœuds).

Il n'y a que deux façons de traverser le gadget trois de noeud avec un chemin Hamiltonien valide (à savoir couvrir les trois noeuds):

a) $ sur \ rightarrow u \ rightarrow U_2 \ rightarrow U_1 \ rightarrow $ et à son inverse

b) $ sur \ rightarrow U_1 \ rightarrow U_2 \ rightarrow u \ rightarrow $ sur

Dans les deux cas, le nœud u $ $ et doivent être déplacés ne peuvent pas être réutilisés dans une autre partie du chemin.

, afin de forcer l'un des deux traversals dans chaque nœud, ajoutez deux queues à l'$ de $: $ (s, s_1), (s_1, s_2) $ et $ (s, S_3), (S_3, s_4) $ et choisissez comme noeud à partir de $ G '$ le nœud de s_1 $ $. La seule façon de parcourir et de congé $ s $ est s_1 $ \ rightarrow s_2 \ rightarrow s \ rightarrow s4 \ rightarrow s3 \ rightarrow $ sur. Cela force traversal (a) sur tous les nœuds restants (gadgets) de '$ G. Choisissez t_2 $ $ que le nœud se terminant par '$ G.

Ainsi, le graphique d'origine $ G $ a un chemin hamiltonien de $ s $ à $ t $ si et seulement si $ G '$ a un « modifié » (un noeud sauts autorisé) chemin hamiltonien de $ s_2 $ à $ t_2 $.

EDIT:

  • Si $ deg (v_i) \ leq 4 $ la réduction ci-dessus fonctionne toujours parce que la voie hamiltonien est NP-complet, même sous forme de graphiques cubiques planes. Dans un diagramme de planr cubique $ deg (v_i) = 3 $, de sorte que des noeuds peuvent être étendus avec les queues de la manière décrite ci-dessus. Si le noeud de départ est de degré 3, il suffit d'ajouter un autre nœud $ de '$, un $ de bord (s, s') $ et ajouter deux queues au $ s de $.

  • Mais, si $ deg (v_i) \ leq 3 $, alors le problème se situe dans $ \ mathsf {P} $, l'algorithme suivant devrait travail (mais je ne pensais pas à ce sujet trop):

calculer le chemin le plus court de $ s $ à $ t $: $ s \ rightarrow U_1 \ rightarrow ... \ rightarrow u_m \ rightarrow $ t, puis développez le chemin en utilisant une profondeur d'abord rechercher de chaque noeud; cela conduira à un arbre couvrant ayant le chemin le plus court comme une « colonne vertébrale ». Pour chaque $ u_i $ du chemin le plus court il n'y a qu'une seule branche de u_i $, B_1, B_2, ..., b_k $ (parce que le degré de $ v_i $ est $ \ leq 3 $) et il peut être couvert en utilisant des sauts:

$ u_i> B_2> b_4> ...> b_k> b_ {k-1}> ...> b_3> B_1> u_ {i + 1} $ si $ $ k est même
$ U_i> B_2> b_4> ...> b_ {k-1}> b_k> b_ {k-2} ...> b_3> B_1> u_ {i + 1} $ si k $ est impair

Le seul problème est de savoir si $ s $ et / ou $ t $ ont degré 3. Dans ce cas, la procédure ci-dessus doit être répétée plusieurs fois en utilisant un seul bord incident de $ s $ (et éventuellement un seul bord incident de $ t $).

Afin de prouver formellement que l'algorithme est correct on doit prouver que chaque chemin hamiltonien (avec des sauts) de $ s $ à $ t $ en $ ° (v_i) \ leq 3, deg (s) = 1, deg (t) = 1 $ graphique peut être transformé en un chemin hamiltonien (avec des sauts) de la forme ci-dessus (un arbre recouvrant du chemin le plus court). Il n'est pas immédiat, mais il semble intuitif (mais peut-être que je suis juste errant:).

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top