Ich bin auf die folgende Frage gestoßen, die eine einfache Übung ist (Spoiler unten).
Wir erhalten Instanzen des Stoppproblems (dh TMs ), und wir müssen genau entscheiden, welche von ihnen auf anhalten . Das heißt, wir müssen ausgeben . Wir bekommen ein Orakel für das Problem des Anhaltens, aber wir müssen es nur minimal verwenden.
Es ist nicht schwer zu zeigen, dass dies mit -Aufrufen möglich ist.
Meine Frage ist: Können wir eine Untergrenze beweisen? Gibt es Grund zu der Annahme, dass eine solche Bindung sehr schwer zu finden sein wird?
Die Antwort auf die Frage selbst (Spoiler, Schwebemaus):
Betrachten Sie den Fall von TMs. Wir können ein TM konstruieren , das parallel läuft und anhält, wenn mindestens zwei von ihnen anhalten (andernfalls bleibt es stecken). In ähnlicher Weise können wir ein TM konstruieren , das anhält, wenn mindestens einer von ihnen anhält. Wir können dann das Orakel auf . Wenn es anhält, können wir die Maschinen parallel laufen lassen und warten, bis eine anhält. Wir können dann das Orakel beim letzten nennen. Wenn das Orakel "Nein" sagt, führen wir das Orakel auf . Wenn es anhält, lassen wir die Maschinen laufen, bis eine anhält, und es ist die einzige, die anhält. Wenn nicht anhält, hält keiner von ihnen an. Die Erweiterung auf Maschinen ist einfach.
Die erste Beobachtung zu dieser Frage ist, dass es unmöglich erscheint, sie mit informationstheoretischen Werkzeugen zu lösen, da wir uns entscheidend auf unsere Fähigkeit verlassen, Informationen zu erhalten, indem wir die Maschinen ohne Orakel betreiben.
quelle
Antworten:
Das Ergebnis finden Sie in
Ihr Beweis zeigt tatsächlich, dass Ihr Problem nicht mit weniger als Abfragen an eine beliebige Menge X gelöst werden kann , geschweige denn mit dem Stoppproblem selbst. Bei einigen Notationen wird Ihr Problem manchmal als C K n oder C H A L T n bezeichnet (abhängig von Ihrer bevorzugten Notation für das Stoppproblem).log2n X CKn CHALTn
Zu diesem und vielen verwandten Ergebnissen siehe auch:
Diese Umfrage von Gasarch
Das Buch Bounded Queries in Recursion Theory von Gasarch und Martin.
quelle
EDIT: Das Argument, mit dem ich geantwortet hatte, war nicht falsch, aber es war ein bisschen irreführend, da es nur zeigte, dass die Obergrenze für einige eng sein musste (was eigentlich trivial ist, da es eng sein muss, wenn n = 2 und die Grenze ist 1).n n=2
Hier ist ein genaueres Argument. Es zeigt, dass, wenn die Obergrenze von für ein bestimmtes n locker ist , für alle n die Anzahl der erforderlichen Orakelaufrufe O ( 1 ) ist .log2n n n O(1)
(Sicher ist es nicht , also ist die Obergrenze nie locker! Aber ich beweise das hier nicht wirklich, und angesichts der anderen Antwort auf das Problem scheint es nicht wert zu sein, es zu verfolgen.)O(1)
Betrachten Sie das Problem der Berechnung der maximalen Leistung :
In Abhängigkeit von die zur Berechnung dieser Funktion erforderliche Worst-Case-Anzahl von Orakelaufrufen der Anzahl, die erforderlich ist, um zu entscheiden, welche von n bestimmten Maschinen anhalten. (Wenn ich weiß, welche Maschinen anhalten, kann ich leicht die maximale Ausgabe berechnen. Wenn ich umgekehrt wissen möchte, welche Maschinen anhalten, kann ich gemäß der Konstruktion in der Problemstellung Maschinen { M ′ i } ( i = 1 , 2) erstellen , … , N ) wobei M ' i alle n gegebenen Maschinen parallel laufen lässt , dann anhält und i ausgibtn n {M′i} (i=1,2,…,n) M′i n i wenn von ihnen jemals aufhöre. Die maximale Ausgabe gibt mir die Nummer an, die anhält. Daraus kann ich genau berechnen, welcher Halt.)i
Nun sei die kleinste ganze Zahl n (falls vorhanden), so dass Folgendes gilt:n0 n
Klar , weil C ( 1 ) = - 1 . Tatsächlich ist n 0 > 2 auch, weil C ( 2 ) = 0 ist , aber es ist unentscheidbar, die maximale Ausgabe von 2 gegebenen Maschinen (ohne Orakelaufrufe) zu berechnen . Betrachten Sie nun ein größeres n :n0>1 C(1)=−1 n0>2 C(2)=0 2 n
Behauptung: Wenn endlich ist, kann man für jedes n die maximale Ausgabe von n gegebenen Maschinen in C ( n 0 ) Orakelaufrufen berechnen .n0 n n C(n0) (Beachten Sie, dass wenn endlich ist, C ( n 0 ) = O ( 1 ) ist .)n0 C(n0)=O(1)
Beweis. . Wir beweisen es durch Induktion auf . Die Basisfälle sind n ≤ n 0 , die per Definition von n 0 und C gelten .n n≤n0 n0 C
quelle