Wenn sie nur über (nicht ressourcengebundene) Kolmogorov-Komplexität sprechen würden, wäre nicht berechenbar (andernfalls könnten Sie einen Maschinenrechner , um kurze Beschreibungen der Zeichenfolgen , da Sie nur beschreiben müssen die Maschine und die Länge von , und wir haben aber ), daher wäre auch nicht berechenbar.K x ∈ K N x K ( x ) = n K ( n ) ≤ log n BKKx∈KnxK(x)=nK(n)≤lognB
Das Papier Abadi et al. Die Referenz ( Hartmanis. Verallgemeinerte Kolmogorov-Komplexität und die Struktur realisierbarer Berechnungen. FOCS 1983. ) verwendet eine ressourcengebundene Version der Kolmogorov-Komplexität. Sei eine effiziente universelle Turingmaschine. Definieren Sie als die Mengen von Zeichenfolgen so dass es eine Zeichenfolge der Länge so dass und die Berechnung von höchstens Zeit benötigt. Oben in der zweiten Spalte auf S. In 444 dieses Papiers beschreibt Hartmanis, wie man dieses Konzept verwendet, um ein (berechenbares) Orakel zu konstruieren, relativ zu demK U [ f ( n ) , g ( n ) ] x d | d | ≤ f ( | x | ) x = U ( d ) U ( d ) g ( | x | ) P ≠ N P.UKU[f(n),g(n)]xd|d|≤f(|x|)x=U(d)U(d)g(|x|)P≠NP.
Hier ist Hartmanis 'Idee, angepasst an Abadi et al. Ergebnis. Sei und (was meiner Meinung nach die von Ihnen beschriebene Funktion ist). Konstruieren Sie durch Standarddiagonalisierung (z. B. wie im Zeithierarchiesatz) eine Strichmenge so, dass und . Platzieren Sie nun die erste Zeichenfolge der Länge von in iff . Da , haben wir .tow3(1)=2tow3(n+1)=222nCC⊆{1tow3(n):n≥1}C∈TIME[nlogn]−Ptow3(n)K[logn,nlogn]−K[logn,nloglogn]K1tow3(n)∈CC={1n:(∃x)[|x|=n and x∈K]}C∈NPK
Wir haben auch , also . Nehmen wir im Widerspruch an, dass . Dann gibt es eine Polyzeit-Orakelmaschine so dass . Ich behaupte, dass dies impliziert (ohne das Orakel!), Was der Konstruktion von widerspricht . Hier ist der Poly-Time-Algorithmus: bei Eingabe :C∉PKPK≠NPKC∈PKMC=L(MK)C∈PCx=1tow3(n0)
Berechnen Sie alle Zeichenfolgen in einer Länge von weniger als. Dies kann in Polynomzeit erfolgen, da alle diese Zeichenfolgen höchstensund wir müssen nur die Berechnung von an noch kleineren Strings für Zeiträume testen, die im Vergleich zu noch sehr klein sind .K|x|logloglog|x|U(d)d|x|
Führen Sie und simulieren Sie Orakelabfragen für kleinere Zeichenfolgen mit den Ergebnissen von (1). Wenn jemals eine Zeichenfolge der Länge abfragt , simulieren Sie diese Abfrage mit einer "NEIN" -Antwort.M(x)M(x)|x|
Der Grundschritt (2) funktioniert so, dass bei ausreichend großen Eingabelängen, wenn es eine Zeichenfolge dieser Länge gibt, nicht abfragen kann , so dass wir alle derartigen Abfragen mit einer NEIN-Antwort simulieren können. Wenn es abfragen würde, hätten wir (wobei die Laufzeit von ), was der Tatsache widerspricht, dass wir , um nicht in .M K y y y ∈ K [ log n , n k ] n k M y K [ log n , n log log n ]y∈KMK yyy∈K[logn,nk]nkMy K[logn,nloglogn]