Ändert sich die Komplexität stark NP-harter oder -vollständiger Probleme, wenn ihre Eingabe unärkodiert ist?

12

Ändert sich die Schwierigkeit eines stark NP-harten oder NP-vollständigen Problems (wie hier definiert ), wenn seine Eingabe unär anstatt binär codiert ist?

Welchen Unterschied macht es, wenn die Eingabe eines stark NP-harten Problems unärkodiert ist? Ich meine, wenn ich zum Beispiel das schwach NP-vollständige Knapsack-Problem nehme, ist es NP-vollständig, wenn es binär codiert ist, kann aber in Polynomzeit durch dynamisches Programmieren gelöst werden, wenn es unär codiert ist. Vielleicht hat es einige Implikationen für die Härte höherer Ebenen der polynomiellen Zeiterbschaft?

Gilt der Begriff stark ...- auch für andere Komplexitätsklassen, z. B. höhere Klassen der polynomiellen Zeithierarchie?

Ich habe diese Frage zuvor bei stackoverflow.com gestellt, aber es wurde darauf hingewiesen, dass dies hier angemessener ist.

user2145167
quelle
Sollte ich diese Frage vielleicht besser unter cstheory.stackexchange.com stellen ? Ich wusste einfach nicht, dass es existiert. Die Antworten hier gehen nicht in die Richtung, auf die ich gehofft habe.
user2145167
Warum nicht? Sie sind (soweit ich das beurteilen kann) korrekt, also ist Ihre Frage vielleicht nicht die, die Sie stellen möchten? Außerdem ist Theoretische Informatik für Fragen des TCS auf Forschungsniveau gedacht, was dies sicherlich nicht ist.
Raphael

Antworten:

4

Eine in Unary codierte Problemgröße von ist Größe N und log N, wenn binär. Wenn die Zeit , ist F ( N ) , dies ist F ( size ) im ersten Fall und F ( 2 size ) im zweiten Fall. Ein für den ersten Fall polynomischer Algorithmus wird für den zweiten wahrscheinlich exponentiell sein. Die Kodierung des Problems kann so die Komplexität eines Algorithmus radikal verändern.NNLogNF(N)F(Größe)F(2Größe)

vonbrand
quelle
3

Nein.

Wenn Sie die Codierung der Eingabe ändern, haben Sie die formale Definition des Problems geändert. Dies bedeutet, dass es sich um ein anderes Problem handelt . Die Komplexität des ursprünglichen Problems ändert sich nicht, aus dem gleichen Grund, dass das Zeigen auf ein anderes Licht am Himmel die Masse des Mondes nicht ändert.

JeffE
quelle
2
PP1
2

Die kurze Antwort lautet: Wenn die Eingabe unär verschlüsselt ist, ist sie länger . Es ist exponentiell länger. Nun hat ein Algorithmus, der in Polynomialzeit in der Größe der Eingabe arbeitet, "genug Zeit", um das Problem zu lösen, nur weil die Eingabe selbst exponentiell länger ist als im ursprünglichen Problem.

Ran G.
quelle
1

Nach der Formulierung, auf die JeffE in seiner Antwort hingewiesen hat, lautet die Antwort ja.

Betrachten Sie das Knapsack- Problem. Es gibt einen Pseudo-Polynom- Algorithmus, bei dem die Laufzeit durch ein Polynom in einer in der Eingabe codierten Zahl begrenzt ist. Da in der unären Codierung die Werte der Länge entsprechen, handelt es sich um einen Polynom-Zeit-Algorithmus für die unäre Version.

Tatsächlich fällt jedes schwach NP-vollständige Problem in diese Kategorie.

Raphael
quelle
Nebenfrage, aber ich habe nie verstanden - wie kann man überhaupt etwas in Unary "kodieren"? Benötigen Sie keinen Begrenzer?
User541686
@Mehrdad Ja und nein. Ja; Trennsymbole werden normalerweise nicht in diesem Sinne gezählt, vgl. auch Eingabe gegen Bandalphabet; hier berücksichtigen wir nur die größe des eingabealphabets. Nein; Im Prinzip genügt eine Zahl, um Tupel und zählbare Zahlenmengen zu codieren, sodass Sie keine Trennsymbole benötigen. Dies ist eindeutig nicht nützlich, um mit solchen Maschinen zu "arbeiten", rechtfertigt jedoch das Ignorieren von Trennsymbolen (und anderen Steuerungssymbolen).
Raphael
Hmm ... Ich bin mir nicht sicher, ob ich deinen "Nein" Teil verstehe. Woher wüsstest du, wo die Zahl endet, wenn du am Ende kein Trennzeichen hättest? Es scheint mir ein bisschen wie eine zirkuläre Logik: Wenn wir Trennzeichen ignorieren, lautet die Frage: Wenn wir die Eingabe dazu zwingen, exponentiell mehr Platz einzunehmen, ändert sich dadurch die Laufzeit eines Exponentialalgorithmus im Verhältnis zur Eingabegröße ? " deren Antwort ist trivial ja ... per definitionem. Die Kodierung wird nicht so sehr geändert, sondern es werden künstlich redundante Bits hinzugefügt, wenn Sie die Trennzeichen berücksichtigen.
user541686
@Mehrdad Okay, ich habe nur darüber nachgedacht, mehrere Zahlen voneinander zu trennen. In jedem Fall benötigen Sie Endmarker bzw. "leere" Symbole auf Turingmaschinen; dass Sie nicht loswerden können. Den Rest kannst du in die eine Nummer verschlüsseln (bei einer Laufzeitstrafe natürlich).
Raphael