Wie so oft bei NP-Reduktionen ist es sinnvoll, nach ähnlichen Problemen zu suchen . Insbesondere ist es schwierig, globale Bedingungen zu codieren, wie sie "einige Knoten" in PCP "gesehen" haben (mit polynomiell vielen Kacheln), was Graphprobleme kontraindiziert, Packprobleme erfordern würden, dass wir unäre Zahlen in PCP codieren (was eine exponentiell große Instanz erzeugt), und bald. Daher kann erwartet werden, dass ein Zeichenfolgenproblem mit nur lokalen Einschränkungen am besten funktioniert.
Betrachten Sie die Entscheidungsversion des kürzesten allgemeinen Supersequenzproblems :
Gegeben seien zwei Strings mit | a | = n und | b | = M und k ∈ N , entscheiden , ob ein String ist c ∈ & Sgr; + mit | c | ≤ k so, dass a und b Teilfolgen von c sind .a,b∈Σ+|a|=n|b|=mk∈Nc∈Σ+|c|≤kabc
Die Idee ist, dass PCP die Supersequenzen von und b von links nach rechts aufbaut und dabei die Überlappungen der Kacheln codiert, an welcher Position wir uns in a bzw. b befinden . Es wird eine Kachel pro Symbol in c verwendet , also entspricht k der BPCP-Grenze: Wenn wir diese PCP mit ≤ k Kacheln lösen können , können Sie die gemeinsame Supersequenz gleicher Länge ablesen und umgekehrt.ababck≤k
Die Konstruktion der Fliesen ist etwas mühsam, aber recht übersichtlich. Beachten Sie, dass wir keine Kacheln erstellen, die weder noch b weiterleiten . solche können niemals Teil einer kürzesten gemeinsamen Supersequenz sein, so dass sie überflüssig sind. Sie können leicht zugesetzt werden, ohne die Eigenschaften der Reduktion zu beeinträchtigen.ab
Die Zahlen in den Überlappungen sind binär codiert, verwenden jedoch Symbole außerhalb von und füllen sie auf eine gemeinsame Länge log max ( m , n ) auf . Auf diese Weise stellen wir sicher, dass die Kacheln so verwendet werden, wie es die Grafiken vermuten lassen (Tetris), dh, dass Zeichen und Überlappungen der Indexcodierung nicht gemischt werden (PCP verhindert dies nicht per se). Wir brauchen:Σlogmax(m,n)
- Startplättchen : kann mit a 1 , b 1 oder beiden beginnen, wenn sie gleich sind.ca1b1
- Zwischenplättchen: kann mit dem nächsten Symbol in a , in b oder beiden fortfahren , wenn sie gleich sind.cab
- Kacheln beenden: endet mit dem letzten Symbol von a (wenn das letzte von b bereits gesehen wurde), ähnlich für b , oder mit dem letzten Symbol von beiden.cabb
Dies sind die Kachelschemata. Beachten Sie, dass die Zwischenkacheln für alle Paare instanziiert werden müssen . Wie oben erwähnt, erstellen Sie die Kacheln ohne ∗ nur, wenn die entsprechenden Zeichen in a und b übereinstimmen.(i,j)∈[n]×[m]∗ab
[ Quelle ]
Das symbolisch für "egal"; In den eigentlichen Kacheln muss das andere Symbol dort kopiert werden. Beachten Sie, dass die Anzahl der Kacheln in Θ ( m n ) angegeben ist und jede Kachel eine Länge von maximal 4 log ( m , n ) + 1 hat , sodass die erstellte BPCP-Instanz (über dem Alphabet Σ ∪ { 0 , 1 })∗Θ(mn)4logmax(m,n)+1Σ∪{0,1}plus Trennzeichen) hat Polynomgröße. Darüber hinaus ist die Konstruktion jeder Fliese in polynomialer Zeit eindeutig möglich. Daher ist die vorgeschlagene Reduktion in der Tat eine gültige Polynomtransformation, die das NP-vollständige Problem der kürzesten gemeinsamen Supersequenz auf BPCP reduziert.