Aus platz Hierarchie Theorem bekannt ist , daß , wenn raumkonstruierbar dann DSPACE ( ) , die gleich ist nicht DSPACE ( .
Mit DSPACE ( meine ich hier die Klasse aller Probleme, die im Raum von einer Turing-Maschine mit einem festen Alphabet gelöst werden können . Dies ermöglicht es, den Satz der Raumhierarchie mit einer solchen Genauigkeit zu betrachten.
Das Standardargument gibt die multiplikative Konstante : Wir benötigen den Raum um eine Berechnung einer Turing-Maschine durch eine universelle zu konstruieren. Wir brauchen auch , um ein Problem mit dem Anhalten zu lösen.
Frage: Ist DSPACE ( ) gleich DSPACE ( )?
cc.complexity-theory
complexity-classes
Alexey Milovanov
quelle
quelle
Antworten:
Es kann bewiesen werden, dass DSPACE DSPACE wenn zumindest linear wächst, indem eine einfache Variante des Standard-Padding-Arguments verwendet wird. Für eine Sprache sei .(f(32n))≠ (f(n))fLL'={x0| x| /2∣x∈L}(f(n)) f L L′={x0|x|/2∣x∈L}
Anspruch. DSPACE genau dann, wenn DSPACE wenn .L∈ ( f ( n ) ) L ' ∈ ( f ( 2)(f(n)) L′∈ (f(23n)) f(n)≥32n
(Meine erste Antwort hatte mehrere falsche Aussagen, danke an Emil, der dies entdeckt hat.)
Ich werde zuerst zeigen, wie man den Anspruch verwendet, um die Hierarchie zu beweisen. Da zumindest linear wächst, haben wir DSPACE DSPACE . Nehmen Sie eine Sprache DSPACE DSPACE . Unter Verwendung der Behauptung ist DSPACE DSPACE , wobei die letzte Gleichheit durch die indirekte Annahme erfolgt. Aber dann ist DSPACE DSPACE , wobei die letzte Gleichheit wiederum durch die indirekte Annahme erfolgt, was einen Widerspruch ergibt.f ( 2 f ( n ) ) ⊂ ( f ( 2 n ) ) L ∈ ( f ( 2 n ) ) ∖ ( f ( n ) ) L ' ∈ ( f ( 4)(2f(n))⊂ (f(2n)) L∈ (f(2n))∖ (f(n)) L′∈ (f(43n))= (f(n))L∈(f(3)(f(n)) L∈ (f(32n))= (f(n))(f(n))
Nachweis des Anspruchs. Wenn DSPACE , dann müssen wir zum Beweis von DSPACE nur Nullen an das Ende der Eingabe schreiben und simulieren die Maschine, die akzeptierte . Da , erhöht dies nicht den von uns verwendeten Speicherplatz. (Tatsächlich ist es überhaupt nicht klar, wie viele Nullen zu schreiben sind, wenn klein ist und wir die Alphabetgröße nicht erhöhen können. Stattdessen können wir ein anderes Band verwenden und auf alles schreiben, was nach dem Ende von kommen würde .)L′∈ ( f ( 2(f(23n)) L∈ (f(n))| x| /2xL'f(n)≥3(f(n)) |x|/2 x L′ f(n)≥32n f x
Die andere Richtung ist einfach so einfach, indem die Nullen durch * ersetzt werden, wenn wir * schreiben dürfen. (Siehe die Probleme damit in meinem Kommentar zur Frage.) Wenn wir keine Sterne schreiben dürfen, ändern wir die Definition von leicht als . Anstatt Sterne zu schreiben, behalten wir jetzt die ursprüngliche EingabeL′ L′={x10|x|/2∣x∈L} x10|x|/2 und damit arbeiten. Aber wenn wir eine 1 erreichen, gehen wir nach rechts, bis wir eine weitere 1 treffen, um zu überprüfen, ob es das Ende von Wort 1 war oder nicht. Wenn wir eine weitere 1 gefunden haben, kehren wir einfach zu unserer 1 zurück. Wenn nicht, gehen wir immer noch zurück, aber wir werden wissen, dass sie als Stern behandelt werden sollte - wenn wir darauf schreiben würden, dann Wir schreiben auch eine 10 danach, um einen neuen Marker für das Ende des aktuellen Wortes zu erhalten. (Tatsächlich gibt es in diesem Teil auch einen kleinen Haken, wenn klein ist - wie können wir überprüfen, ob die Eingabe die Form ? Ohne die Eingabe zu zerstören, kann ich dies nur mit lösen mehrere Köpfe für kleine .)f x10|x|/2 f
quelle