Entscheiden, ob eine NC


27

Ich möchte einen Sonderfall der Frage „ Entscheiden, ob eine gegebene NC 0- Schaltung eine Permutation berechnet “ von QiCheng ansprechen, der unbeantwortet geblieben ist.

Eine Boolesche Schaltung wird als NC 0 k- Schaltung bezeichnet, wenn jedes Ausgangsgatter syntaktisch von höchstens k Eingangsgattern abhängt . (Wir sagen, dass ein Ausgangsgatter g syntaktisch von einem Eingangsgatter g ' abhängt , wenn es einen gerichteten Weg von g ' nach g in der Schaltung gibt, wenn man es als gerichteten azyklischen Graphen betrachtet.)

In der oben genannten Frage fragte QiCheng nach der Komplexität des folgenden Problems, wobei k eine Konstante ist:

Beispiel : Eine NC 0 k- Schaltung mit n- Bit-Eingang und n- Bit-Ausgang.
Frage : Berechnet die angegebene Schaltung eine Permutation für {0, 1} n ? Mit anderen Worten, ist die von der Schaltung berechnete Funktion eine Bijektion von {0, 1} n nach {0, 1} n ?

Wie Kaveh zu dieser Frage bemerkte, ist es leicht zu erkennen, dass das Problem in coNP liegt. In einer Antwort zeigte ich, dass das Problem für k = 5 coNP-vollständig ist und dass es für k = 2 in P ist .

Frage . Was ist die Komplexität für k = 3?

Erläuterung am 29. Mai 2013 : „Eine Permutation auf {0, 1} n “ bedeutet eine bijektive Zuordnung von {0, 1} n zu sich selbst. Mit anderen Worten, das Problem fragt, ob jede n- Bit-Folge die Ausgabe der gegebenen Schaltung für irgendeine n- Bit-Eingabe-Folge ist.


1
Persönliche Anmerkung: Als ich eine Antwort auf QiChengs Frage veröffentlichte, tat ich dies nur, weil das Problem interessant aussah, ohne dass eine bestimmte Anwendung in Betracht gezogen wurde. Einige Monate später befand ich mich zufällig in einer Situation, in der ich jemandem erklären musste, dass es alles andere als trivial ist, zu entscheiden, ob ein bestimmtes Programm eine Permutation berechnet oder nicht. Dank der Frage von QiCheng hatte ich ein perfektes Beispiel (was für ein Zufall!). Danach wurde ich neugieriger auf die Fälle von k = 3 und k = 4. Ich vermute, dass der Fall von k = 3 bereits coNP-vollständig ist, aber ich habe nicht in der Lage gewesen, so oder so zu beweisen.
Tsuyoshi Ito

Dieses Problem scheint ein besonderer Fall des von Papadimitriou ( sciencedirect.com/science/article/pii/S0022000005800637 ) definierten Pigeonhole Circuit-Problems zu sein, das für PPP in Bezug auf die Poly-Time-Reductions zwischen Suchproblemen vollständig ist.
Marcos Villagra

@Marcos Villagra: Vielen Dank für den Kommentar, aber ich befürchte, dass Sie die Definition des Pigeonhole Circuit-Problems erheblich ändern, wenn Sie „bestimmten Fall von“ sagen. Eine wichtige Eigenschaft des Pigeonhole Circuit-Problems ist, dass es sich um ein Gesamtsuchproblem handelt , wohingegen das aktuelle Problem (das als Suchproblem für zwei Eingaben angesehen wird, die dieselbe Ausgabe erzeugen) kein Gesamtsuchproblem darstellt.
Tsuyoshi Ito

Antworten:


3

Dieses Problem mit ist coNP-hart (und daher coNP-vollständig).k=3

Um dies zu beweisen, werde ich von 3-SAT auf das Komplement dieses Problems reduzieren (für eine gegebene -Schaltung übernimmt die Schaltung eine nicht-bijektive Funktion).NC30

Zuerst eine vorläufige Definition, die hilfreich sein wird:

Wir definieren einen beschrifteten Graphen als gerichteten Graphen, dessen Kanten teilweise mit Literalen beschriftet sind, mit der Eigenschaft, dass jeder Scheitelpunkt entweder eine unbeschriftete eingehende Kante, eine beschriftete eingehende Kante oder zwei unbeschriftete eingehende Kanten hat.

Die Reduzierung

Angenommen , wir haben eine 3-SAT Formel , bestehend aus m - Klauseln, von denen jede drei Literale. Der erste Schritt besteht darin, einen beschrifteten Graphen G aus ϕ zu konstruieren . Diese beschriftete Grafik enthält eine Kopie des folgenden Gadgets (Entschuldigung für das schreckliche Diagramm) für jede Klausel in ϕ . Die drei mit L1, L2 und L3 bezeichneten Kanten sind stattdessen mit den Literalen in der Klausel bezeichnet.ϕmGϕϕ

   |
   |               |
   |               |
   |               O<-----\
   |               ^      |
   |               |      |
   |               |      |
   |        /----->O      |
   |        |      ^      |
   |        |      |      |
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |L1    |L2    |L3
   |        |      |      |
   |        O      O      O
   |        ^      ^      ^
   |        |      |      |
   |        |      |      |
   |        \------O------/
   |               ^
   |               |
   |               |
   |               O
   |               ^
   |               |
   |

Die Minianwendungen (eine für jede Klausel) sind alle in einem großen Zyklus angeordnet, wobei die Unterseite einer Minianwendung mit der Oberseite der nächsten verknüpft ist.

Beachten Sie, dass diese Anordnung der Minianwendungen tatsächlich ein beschriftetes Diagramm bildet (jeder Scheitelpunkt hat einen Grad 1 oder 2, wobei nur Kanten zu beschrifteten Scheitelpunkten des Grads 1 führen).

Aus der Formel und dem mit G bezeichneten Graphen (der aus ϕ konstruiert wurde) konstruieren wir als nächstes eine N C 0 3 -Schaltung (dies schließt die Reduktion ab). Die Anzahl der Ein- und Ausgänge für diese Schaltung beträgt n + v, wobei n die Anzahl der Variablen in ϕ und v die Anzahl der Eckpunkte in G ist . Jeder Variablen in ϕ und jedem Scheitelpunkt in G ist ein Eingang und ein Ausgang zugeordnet . Wenn x eine Variable in ϕ istϕGϕNC30n+vnϕvGϕGxϕdann bezeichnen wir die mit verbundenen Eingangs- und Ausgangsbits als x i n und x o u t . Außerdem, wenn L ein Literal mit ist l = x dann definieren wir l i n = x i n und wenn l ist ein Literal mit l = ¬ x dann definieren wir l i n = ¬ x i n . Schließlich, wenn v ein Scheitelpunkt in G istxxinxoutll=xlin=xinll=¬xlin=¬xinvGdann beziehen wir uns auf die Eingangs- und Ausgangsbits, die mit assoziiert sind, als v i n und v o u t .vvinvout

Es gibt vier Arten von Ausgangsbits:

1) für jede Variable in φ , x o u t = x i n . Beachten Sie, dass dieser Ausgang nur von einem Eingangsbit abhängt.xϕxout=xin

2) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante unmarkiert, v o u t = V i nu i n . Beachten Sie, dass dieser Ausgang nur von zwei Eingangsbits abhängt.v(u,v)vout=vinuin

3) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante markiert l , v o u t = V i n( u i nL i n ) . Beachten Sie, dass dieser Ausgang auf nur drei Eingangsbits hängt da l i n hängt nur von x i n für was auch immer Variable x im wörtlichen verwendet l .v(u,v)lvout=vin(uinlin)linxinxl

4) für jede Ecke in dem markierten Graph mit genau zwei ankommenden Kanten ( u , v ) und ( w , v ) , v o u t = V i n( u i nw i n ) . Beachten Sie, dass dieser Ausgang nur von drei Eingangsbits abhängt.v(u,v)(w,v)vout=vin(uinwin)

Da der Ausgang in allen Fällen nur von drei Eingängen abhängt, befindet sich die von uns gebildete Schaltung wie gewünscht in .NC30

Korrektheitsnachweis Fall 1: ist erfüllbarϕ

Angenommen, es gibt eine zufriedenstellende Zuordnung für . Erstellen Sie dann die folgenden zwei Wertesätze für die Eingaben.ϕ

1) Die Eingänge , die mit den Variablen von werden die Werte der Befriedigung Zuordnung gegeben. Allen Eingaben, die den Eckpunkten von G zugeordnet sind, wird der Wert 0 gegeben.ϕG

2) Die den Variablen von Eingänge erhalten die Werte der erfüllenden Zuordnung. Betrachten Sie die Eckpunkte in einer Klausel Gadget in G . Wenn der Wert einer Beschriftung 0 ist (unter der befriedigenden Zuweisung), erhält die Eingabe, die dem Scheitelpunkt am Zielendpunkt der mit dieser Beschriftung beschrifteten Kante zugeordnet ist, den Wert 0. Wenn sowohl L1 als auch L2 den Wert 0 haben, dann den zweiten -top vertex im Gadget (wie oben gezeigt) erhält ebenfalls den Wert 0. Alle anderen Vertices erhalten den Wert 1.ϕG

Wir möchten zeigen, dass diese beiden Eingangssätze identische Ausgänge liefern und daher die -Schaltung keine Permutation codiert.NC30

Betrachten Sie die vier Arten von Ausgangsbits:

1) für jede Variable in φ , x o u t = x i n . Da x i n ist das gleiche für beiden Sätze von Eingängen, Ausgänge dieser Form werden immer das gleiche für die zwei Sätze von Eingängen.xϕxout=xinxin

2) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante unmarkiert, v o u t = V i nu i n . Betrachtet man das Gadget, dessen Kopien G bilden , so stellt man fest, dass alle diese Kanten nur aus Scheitelpunktpaaren bestehen, deren Eingabewerte unter der zweiten Eingabemenge immer 1s betragen. Somit v o u t = V i nu i n = 0 0 =v(u,v)vout=vinuinG unter dem ersten Satz von Eingängen und v o u t = V i nu i n = 1 1 = 0 unter dem zweiten Satz von Eingängen. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vinuin=00=0vout=vinuin=11=0

3) Für jeden Scheitelpunkt in dem markierten Graph mit genau einem ankommenden Kante ( u , v ) , so dass die Kante markiert l , v o u t = V i n( u i nL ) . Wenn l unter der Zuordnung falsch ist , dann v i n ist 0 unter beiden Sätzen von Eingängen; dann ist v o u t = v i n( u i nv(u,v)lvout=vin(uinl)lvin unter beiden Sätzen von Eingängen. Wenn l wahr unter der Zuweisung ist, V i n 0unter dem ersten Satz von Eingängen und 1 unter dem zweiten; Beachten Sie auch, dass in der Minianwendung die einzigen beschrifteten Kanten ( u , v ) Scheitelpunkte u haben, die immer u i n = 1 habenvout=vin(uinl)=vin(uin0)=vin=0lvin(u,v)uuin=1unter dem zweiten Satz von Eingaben. Als Ergebnis sehen wir, dass unter beiden Mengen von Eingaben wann immer l wahr ist; dann gilt v o u t = v i n( u i nl ) = v i n( u i n1 ) = v i nu i n = v i nvuin=vinl. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin(uinl)=vin(uin1)=vinuin=vinvin=0

4) für jede Ecke in dem markierten Graph mit genau zwei ankommenden Kanten ( u , v ) und ( w , v ) , v o u t = V i n( u i nw i n ) . In jedem Gadget gibt es zwei solcher Eckpunkte. Der obere Scheitelpunkt und der zweite Scheitelpunkt von oben. Wir betrachten diese beiden Fälle getrennt.v(u,v)(w,v)vout=vin(uinwin)

4a) Wenn der zweithöchste Scheitelpunkt in einem Gadget ist, sind u und w die beiden Zielendpunkte der mit L1 und L2 bezeichneten Kanten. Unter dem ersten Satz von Eingängen, v o u t = V i n( u i nw i n ) = 0 ( 0 0 ) = 0 . Unter dem zweiten Satz von Eingängen ist u i n 0, wenn L1 unter der befriedigenden Zuweisung den Wert 0 hat (auch bekannt als u i n =vuwvout=vin(uinwin)=0(00)=0uin ); in ähnlicher Weise ist w i n 0, wenn L2 unter der erfüllenden Zuweisung den Wert 0 hat (auch bekannt als w i n = L 2 ); und schließlich v i n ist definiert 0 sein iff sowohl L1 und L2 habenWert 0 (auch bekannt als v i n = L 1 L 2 ). Somit unter dem zweiten Satz von Eingängen, v o u t = V i n( u i nw i n ) = (uin=L1winwin=L2vinvin=L1L2 . Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin(uinwin)=(L1L2)(L1L2)=0

4b) Wenn der oberste Scheitelpunkt in einem Gadget ist, ist u der zweitoberste Scheitelpunkt und w ist der Zielendpunkt der mit L3 bezeichneten Kante. Unter dem ersten Satz von Eingängen, v o u t = V i n( u i nw i n ) = 0 ( 0 0 ) = 0 . Unter dem zweiten Satz von Eingängen ist u i n 0, wenn sowohl L1 als auch L2 den Wert 0 haben (auch bekannt als u i n = L)vuwvout=vin(uinwin)=0(00)=0uin ); w i n ist 0, wenn L3 den Wert 0 hat (aka w i n = L 3 ); und schließlich v i n = 1 . Somit unter dem zweiten Satz von Eingängen, v o u t = V i n( u i nw i n ) = 1 ( ( L 1 L 2 ) L 3 )uin=L1L2winwin=L3vin=1 wobei die Gleichheit ( L 1 L 2 L 3 ) = 1 per definitionem in einer zufriedenstellenden Zuordnung für jede Klausel gilt. Somit sind die Ausgaben dieser Form über die beiden Eingabesätze immer gleich (und tatsächlich Null).vout=vin(uinwin)=1((L1L2)L3)=1(L1L2L3)=11=0(L1L2L3)=1

Wir sehen klar, dass die Ausgänge für zwei verschiedene Sätze von Eingängen gleich sind und daher der -Schaltkreis eine nicht-bijektive Funktion ausübt.NC30

Korrektheitsnachweis Fall 2: ist nicht befriedigendϕ

Nehmen wir jetzt an, dass es für keine befriedigende Zuordnung gibt . Nehmen wir dann zum Zwecke des Widerspruchs an, dass einige zwei verschiedene Sätze von Eingängen dazu führen, dass der N C 0 3 -Schaltkreis den gleichen Ausgang hat.ϕNC30

Es ist klar, dass die beiden Eingänge für für jede Variable x in ϕ dieselben Werte haben müssen . Somit können wir uns jetzt eindeutig auf den Wert von x beziehen .xinxϕx

Definieren der Satz von Scheitelpunkten sein v in G , so daß v i n in den beiden Sätzen von Eingangswerten unterscheiden.SvGvin

Wir werden die folgenden Lemmata beweisen:

Lemma 1: Wenn in einigen Gadget alle drei Scheitelpunkte an den Zielendpunkten der markierten Kanten nicht in sind dann keine Eckpunkte über jene drei im Gadget sind in S .SS

Lemma 2: Wenn in irgendeinem Gerät der obere Scheitelpunkt ist nicht in im nächsten Gadget dann nach oben keine Ecke in ist S .SS

Da die Minianwendungen eine Schleife bilden, bedeutet dies, dass, wenn sich in einer Minianwendung alle drei Eckpunkte an den Zielendpunkten der markierten Kanten nicht in kein Eckpunkt in G in S befindet (mit anderen Worten, S ist leer).SGSS

Betrachten Sie jedoch ein Gadget, das mit einer Klausel verknüpft ist, die nicht erfüllt ist. In diesem Gadget alle drei Etiketten Wert 0. Wir wissen , dass Kante ( u , v ) markierte L erfüllen muss , v o u t = v i n( u i nL ) , aber L = 0 , so v o u t = v i n(L1L2L3)(u,v)Lvout=vin(uinL)L=0 . Somitda der Ausgang das gleiche für beiden Eingänge ist, die Werte von v i n müssen auch das gleiche für die zwei Sätze von Eingängen sein. Mit anderen Worten, wir haben gezeigt, dass v nicht in S ist . Wir sehen also, dass in diesem bestimmten Gadget die drei Eckpunkte an den Zielendpunkten der markierten Kanten nicht in S liegen .vout=vin(uinL)=vin(uin0)=vin0=vinvinvSS

Infolgedessen schließen wir, dass leer ist. Dies impliziert jedoch, dass es zwischen den beiden Eingabesätzen keine Unterschiede gab, was der Annahme widerspricht, dass diese Eingabesätze unterschiedlich sind. Infolgedessen sehen wir, dass die von der N C 0 3 -Schaltung ausgeübte Funktion injektiv und daher eine Bijektion ist.SNC30

Alles was übrig bleibt ist, die Deckspelzen zu beweisen.

Zu diesem Zweck ist zu beachten, dass für jeden Scheitelpunkttyp in (Grad 1 mit Beschriftung, Grad 1 ohne Beschriftung und Grad 2), wenn alle eingehenden Kanten von Scheitelpunkten stammen, die nicht in S liegen, der betreffende Scheitelpunkt auch nicht in S liegt . Dies liegt daran , dass in allen drei Fällen v o u t = V i nX , wo X ist eine Funktion der zugehörigen Eingänge mit Variablen und / oder Ecken mit Kanten v . Da sich nicht alle derartigen Eckpunkte unter der Annahme in S befinden , muss der Wert von X für beide Eingabesätze gleich sein. Deshalb v iGSSvout=vinXXvSXist auch bei beiden Eingangssätzen gleich. Mit anderen Wortenvist nicht inS.vin=voutXvS

Nachdem wir nun die Regel haben, dass ein Scheitelpunkt nicht in wenn alle seine Vorgänger nicht in S liegen , folgen die Lemmas, indem Sie die Regel einfach wiederholt auf das obige Minitool-Diagramm anwenden.SS


-1

Nicht die Antwort, die der Autor suchte, finden Sie in Kommentaren, die verdeutlichen, was "Permutation" in diesem Kontext ist.

Ich habe die Größe des minimalen dominierenden Satzes für das Einschluss-Digraph der monogenen Permutationsgruppe herausgearbeitet: https://oeis.org/A186202

Alles, was Sie tun müssen, ist, ein Mitglied jeder Zerlegung des Primärzyklus zu testen.

Für jeden Primärzyklus sollte es ausreichend sein, die Elemente als (10101010 ...) zu codieren, dann (01010101 ..)?

------ Erläuterung ------ Ziel dieses Ansatzes ist es, Ihre 2 ^ n-Testfälle als Digraphen zu modellieren. Wenn ein erfolgreicher Testfall einen anderen erfolgreichen Testfall impliziert, müssen Sie nur die min-dominierende Menge dieses Testraum-Digraphen testen. Im Bereich der Permutationen ist OEIS A186202 das Maximum, das Sie testen müssen, um entweder eine nicht-triviale Untergruppe zu erkennen oder zu beweisen, dass keine vorhanden ist. Diese Zahl ist immer noch groß, aber viel kleiner als n !.

--Musing-- Mithilfe von n-1 Nullen und 1 Eins in n Iterationen können Sie die gesuchte feste Permutation ermitteln. Danach können Sie in O (n {(n-1) \ choose (k-1)} (2 ^ (k-1)) testen, dass nicht jeder Satz von (k-1) Variablen jeden Index des Shuffle beeinflusst Da k fest ist, ist das Polynom. Fehle ich etwas?


Hmm. Ich bin mir nicht sicher, ob (01) *, (10) * ausreichen. Möglicherweise müssen Sie alle 2 ^ p-Konfigurationen für jeden Primärzyklus ausprobieren.
Chad Brewbaker

2
(2n)!n11

2
C:{0,1}n{0,1}nx,x{0,1}nC(x)=C(x)xxCpermutiert (mischt / ordnet neu / ordnet neu) die Eingangsbits. Siehst du den unterschied Ich vermute, Sie haben die falsche Frage beantwortet.
DW

2
Vielen Dank, dass Sie versucht haben zu helfen, aber wie DW erklärte, fürchte ich, dass die von Ihnen beantwortete Frage sich von der von mir gestellten unterscheidet. "Eine Permutation auf {0,1} ^ n" bedeutet eine bijektive Funktion von {0,1} ^ n zu sich selbst und bedeutet nicht, die n Bits neu anzuordnen.
Tsuyoshi Ito

3
Chad, würde es dir etwas ausmachen, diese Antwort zu löschen oder zumindest eine Anmerkung an die Spitze zu setzen, dass dies nicht die Frage von Tsuyoshi beantwortet?
Kaveh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.