Soit les variables . La distance entre deux variables est définie comme. La distance entre deux littéraux est la distance entre les deux variables correspondantes. d ( x a , x b ) = | a - b |
Supposons que j'ai une instance 3-SAT telle que pour chaque clause nous avons pour une valeur fixe .d ( x a , x b ) ≤ N ∧ d ( x a , x c ) ≤ N ∧ d ( x b , x c ) ≤ N N
Conceptuellement, vous pouvez imaginer cela comme tous les littéraux étant physiquement sur une ligne et toutes les clauses sont incapables d'atteindre au-delà d'une certaine longueur pour des raisons physiques.
Compte tenu de cette contrainte, existe-t-il des instances dures de 3-SAT? À quel point puis-je faire le quartier et trouver des instances difficiles? Que faire si j'autorise quelques clauses à violer la contrainte?
Par dur, je veux dire qu'un solveur heuristique retomberait sur le pire des cas.
la source
Réponses:
Non. Si l'instance 3-SAT a clauses, vous pouvez tester la satisfiabilité en temps O ( m 2 N ) . Puisque N est une constante fixe, il s'agit d'un algorithme à temps polynomial qui résout toutes les instances de votre problème.m O ( m 2N) N
L'algorithme fonctionne en étapes. Soit φ i la formule composée des clauses qui n'utilisent que des variables de x 1 , … , x i . Soit S i ⊆ { 0 , 1 } n l'ensemble des affectations à x i - N , x i - N + 1 , … , x i qui peut être étendu à une affectation satisfaisante pour φ i . Notez que compte tenu de Sm φje X1, … , Xje Sje⊆ { 0 , 1 }n Xi - N, xi - N+ 1, … , Xje φje , nous pouvons calculer S i en tempsO( 2 N ): pour chaque( x i - N - 1 ,…, x i - 1 )∈ S i - 1 , nous essayons les deux possibilités pour x i et vérifions si il satisfait toutes les clauses de φ i qui contiennent la variable x i ; si oui, on ajoute( x i - N ,…Si - 1 Sje O ( 2N) ( xi - N- 1, … , Xi - 1) ∈ Si - 1 Xje φje Xje à S i . Dans la i ème étape, nous calculons S i . Une fois que nous avons terminé toutes les m étapes, l'instance 3-SAT est satisfiable si et seulement si S m ≠ ∅ . Chaque étape prend O ( 2 N ) et il y a m étapes, la durée totale de fonctionnement est donc O ( m 2 N ) . Il s'agit d'un polynôme dans la taille de l'entrée, et constitue donc un algorithme polynomial temps.( xi - N, … , Xje) Sje je Sje m Sm≠ ∅ O ( 2N) m O ( m 2N)
Même si vous autorisez un nombre fixe de clauses à violer la contrainte, le problème peut toujours être résolu en temps polynomial. En particulier, si compte le nombre de clauses qui violent la contrainte, vous pouvez résoudre le problème en temps O ( m 2 ( t + 1 ) N ) , en énumérant d'abord toutes les valeurs possibles pour les variables de ces clauses, puis en poursuivant avec l'algorithme ci-dessus. Lorsque t est une constante fixe, il s'agit du temps polynomial. Il peut y avoir des algorithmes plus efficaces.t O ( m 2( t + 1 ) N) t
la source
Le graphique des incidents d'une formule SAT est un graphique bipartite qui a un sommet pour chaque clause et chaque variable. Nous ajoutons des bords entre une clause et toutes ses variables. Si le graphe incident a une largeur d'arbre limitée, alors nous pouvons décider de la formule SAT dans P, en fait, nous pouvons faire beaucoup plus. Votre graphique d'incident est très restreint. Par exemple, il s'agit d'un graphe de largeur de chemin borné, il est donc soluble dans le temps polynomial. Pour le résultat structurel bien connu ci-dessus, par exemple, consultez: https://www.sciencedirect.com/science/article/pii/S0166218X07004106 .
la source