Je vais essayer de montrer que ce problème est NP-difficile, par réduction de .Planar- 3 -SAT
Réduction de Planar- 3 -SAT
Quelques gadgets de base
Les gadgets sont des configurations internes de géométrie qui nous permettront de construire des portes pour une utilisation dans un circuit, auquel nous réduirons .Planar- 3 -SAT
4X3-gadget
Ce gadget a deux états de partition minimal-carré valides :
Gauche Un gadget 4X3 . Au milieu et à droite: Deux états de partition carré minimal possibles .
5X4-gadget
Ce gadget est exactement comme un gadget 4X3 , juste avec des dimensions plus grandes.
Gauche Un gadget 5X4 . Au milieu et à droite: Deux états de partition carré minimal possibles .
gadget de point de terminaison
TF
Gauche: filaire du gadget de point de terminaison . Centre: point final à valeur réelle. Droite: point final à valeur fausse.
gadget i-wire
Un gadget i-wire est l'abréviation de fil d'implication .
Règles:
Exemple:
sept2
Voici comment il est utilisé:
Figure 8,9 , à gauche: filaire i-wire sur deux points d'extrémité . À droite: Union.
Maintenant, si un point d'extrémité est dans le bon état, il force l'autre point d' extrémité dans une position poussée. Exemple:
Gauche: Diagramme de séparation carré; l'interrupteur gauche est baissé, "pousse" tous les carrés sur le fil i et enfin, pousse l'autre interrupteur ( point final ). À droite: schéma de séparation carré; le point d'extrémité gauche est plein, "pousse" tous les carrés vers le bas sur l' i-wire et force le point d' extrémité gauche à être "vers le haut".
UNE⟹¬ BUNE⟹B
Cependant, cela laisse le cas sans contrainte:
Si nous combinons deux i-fils , nous pouvons obtenir une implication bidirectionnelle, essentiellement une égalité booléenne (in):
Ainsi, deux i-fils peuvent transporter une relation pleine d'égalité, tout comme un circuit - en fait, il est un circuit. Nous utiliserons ces paires pour construire un fil utilisable .
l - 12+ 2
les fils i peuvent être orientés selon les besoins.
câble
Un fil se compose d'une paire de fils i qui sont connectés aux mêmes portes à chaque extrémité.
- Les fils i sont de couleur rouge et verte.
- 3
- Chaque broche de porte aura un contact vert et rouge; un fil doit se connecter correctement.
- Règle invariante: un i-wire doit être poussé dans la direction opposée à l'autre i-wire , chaque porte le suppose et s'en assure (sauf indication contraire).
- Étant donné que chaque fil contient une implication bidirectionnelle, il transporte les valeurs de porte à porte comme un fil dans un circuit.
- Chaque fil doit être connecté à une porte aux deux extrémités. . À défaut, cela peut ruiner les hypothèses de certaines portes que je décris et la règle invariante ci-dessus; cependant, les portes qui ont des points de terminaison à travers les fils sont sûres - vous pouvez connecter des fils parasites à ces points de terminaison sans vous soucier de la ruine de la porte.
- les fils doivent être de longueur impaire, y compris les fils de tout circuit auquel ils se connectent; Cependant, je décrirai ci - dessous une porte à sauts impairs qui permet à un fil de longueur paire de devenir de longueur impaire.
Images :
Ci-dessus: un fil .
Gauche et droite: Deux états de partition carrés minimaux possibles d'un fil . Notez que si le fil n'a que cette longueur, il ne pourra pas se déplacer vers la droite ou la gauche et devra casser un carré en morceaux plus petits.
les fils peuvent être orientés selon les besoins.
bend-gate : Plier un fil
Gauche: vue filaire. À droite: vue de l'Union.
Notez l'utilisation du gadget 4X3 . Il est utilisé pour fixer le fil rouge à une longueur impaire.
Voici les deux états de partition carré minimal possibles du virage:
Gauche et droite: Deux états de partition minimale-carré-carré possibles d'un fil de flexion.
La porte peut être orientée selon les besoins. De toute évidence, cette porte peut être mise en miroir pour fonctionner dans l'autre sens.
Incliner un fil
Il est facile de déplacer un fil. Illustration filaire:
porte-valeur-nommée
Une porte de valeur nommée est essentiellement un point d'extrémité en tant que porte avec un contact filaire:
odd-skip-gate : Odd sautant un fil
Parfois, il n'est pas pratique d'avoir uniquement des fils de longueur impaire. Par exemple:
Comme vous pouvez le voir, cette petite extension est un peu ennuyeuse. Voici une solution correspondante, utilisant la porte 4X3 :
Donc, en transformant cela en une porte, nous obtenons la porte impaire (en filaire):
La porte peut être orientée selon les besoins.
twist-gate : torsion d'un fil
Parfois, vous obtenez les fils i rouges et noirs sur les mauvais côtés pour une utilisation avec une porte . Dans ce cas, une porte torsadée est fournie pour tordre les fils i rouges et noirs sur les côtés opposés.
Illustration filaire:
Convainquez-vous que cela fonctionne:
UNE
La porte peut être orientée selon les besoins.
split-gate : Fractionnement d'un fil
Fractionnement d'un fil, filaire:
Convainquez-vous que cela fonctionne:
UNE
A
Remarque: Chaque fil entrant et sortant du séparateur doit absolument se connecter à un point d'extrémité quelque part, afin de maintenir l'invariant. Vous pouvez également ajouter des points de terminaison à chacune des paires de fils du séparateur.
La porte peut être orientée selon les besoins.
pas de porte
La porte non prend un fil et sort un fil qui a les implications inverses. Il s'agit essentiellement d'une porte torsadée, sauf qu'elle réétiquette les colorations des fils. Le not-gate ressemble à ceci:
Et une vue des deux états possibles:
La porte peut être orientée selon les besoins.
clause-gate
Pour la clause-gate , nous introduisons d'abord le clause-gadget :
3
Voici à quoi ressemble la porte:
3
Explication:
- Commencez par le gadget de clause et suivez les flèches.
- Les lignes sans flèche signifient qu'il fait partie d'un circuit, mais il n'est pas forcé dans un état par la porte.
- L'état du gadget-clause oblige l'un des noeuds finaux à être évalué comme vrai .
3-CNF
La porte peut être orientée selon les besoins.
Réduction
Φ(x)Planar-3-SAT
Φ(x)=∧niCi,C={(xj∨xk∨xl)}
Une aide visuelle (source originale: Terrain Guarding is NP-Hard (PDF) , reproduit en tikz):
Alors:
- xi∈xxi¬xi
- Connectez les portes les unes aux autres avec une non-porte , de sorte qu'elles nient logiquement les valeurs des autres.
- Placez les polygones de portes des variables à leur emplacement dans l'incorporation planaire.
- Pour chaque clause, placez une porte de clause à l'emplacement de la clause dans l'incorporation planaire.
- En utilisant les portes décrites ci-dessus, connectez toutes les variables à leurs clauses.
- Exécutez un algorithme de parition carré minimal sur l'union résultante de tous les polygones de la porte (le circuit entier).
- Si l'algorithme retourne la somme de toutes les tailles d' état de partition carrée minimale (soustrayant pour les coins partagés), alors il est satisfaisable. S'il n'est pas satisfaisable, il forcera un gadget contraint à se diviser en carrés plus petits, augmentant ainsi le nombre de carrés nécessaires pour partitionner le circuit.
Pourquoi ça marche
- Chaque gadget a une taille d' état de partition carrée minimale ; c'est-à-dire qu'une partition carrée minimale de ce gadget a une certaine taille.
- Certains gadgets ont plusieurs états avec cette taille; chacun de ces états est une partition minimale carrée valide .
- Lorsque les gadgets sont combinés uniquement dans les coins, la somme des états de partition carrée minimale des gadgets est * toujours l' état de partition carrée minimUM de leur union; vous pouvez le voir intuitivement: se joindre au coin ne donne pas suffisamment d'espace pour qu'un carré se développe / se connecte avec un carré d'un autre gadget.
- En combinant gadgets à l'angle ne diminue pas la taille minimale partition surface totale , il ne se rapporte et contraignent les gadgets à chaque-autre.
- Avec les portes illustrées ci-dessus, vous pouvez contraindre suffisamment les états, de sorte que si la formule logique n'est pas satisfaisante, un ou plusieurs gadgets devront se diviser en carrés encore plus petits et augmenter la taille minimale de la partition carrée .
sources de graphe
Vous pouvez également voir des images plus grandes en supprimant les suffixes "s", "m", "l" des URL imgur. Par exemple, vous pouvez voir une image plus grande de ceci: http://i.stack.imgur.com/6CKlGs.jpg en allant sur
http://i.stack.imgur.com/6CKlG.jpg . Remarquez les «s» manquants avant le .jpg
.