Diese Frage mag eine offensichtliche Antwort haben ... aber hier ist die Frage trotzdem. Intuitiv ist es die folgende plausible Aussage: "Eine Maschine mit einer Subroutine A, die wiederum eine Subroutine B hat, ist dieselbe wie eine Maschine mit einer Subroutine A, die Zugriff auf Subroutine B hat".
Um dieses Problem formal zu definieren, verwende ich eine unkonventionelle Notation. Wenn ich sage , gebe ich A ein Orakel für ein B - C o m p l e t e Problem. zB N P N P = N P S A T = Σ 2 . Mit dieser „neuen“ Notation ist es möglich , zu definieren A B C , und so weiter. Meine Frage ist, ist
- Ist dies eine gültige Denkweise über Orakel?
- ist
Zum Beispiel ist
Ich kann mir keine offensichtlichen Gegenbeispiele zu dieser Regel vorstellen. Jemand?
complexity-classes
oracles
gabgoh
quelle
quelle
Antworten:
Wie Venkat in Kommentaren sagte, scheint es schwierig zu sein, Ihre Definition für Orakel zu verstehen, die nicht als eine maschinelle Charakterisierung definiert ist.
Sei die Menge von TM in A mit einem Orakel, das eine Maschine in ist ( B mit einem Orakel in einer Maschine in C ). Es ist offensichtlich, dass eine Maschine in A C aufrufen kann : Sie ruft nur die Maschine in B auf und fordert sie auf, die Nachricht direkt an C weiterzuleiten .EIN( B.C.) EIN B. C. EIN C. B. C.
Ich denke, wäre eine Maschine in A , die ein Orakel in C oder ein Orakel nennen kann (eine Maschine in B , die eine Maschine in C nennen kann ), also ist es genau dieselbe Definition.( A.B.)C. EIN C. B. C.
Schließlich möchten Sie vielleicht , das sich sicherlich von den beiden anderen unterscheidet (nehmen Sie einfach B = C = N P und A = P , dann A B , C = N P ∪ c o N P, während A ( B C. ) = Σ P 2 ∪ Π p 2 .EINB , C. B = C.= N.P. A = P. EINB , C.= N.P.∪ c o N.P. EIN( B.C.)= ΣP.2∪ Πp2
quelle
Ich würde Folgendes als Kommentar schreiben, aber es war zu lang, um hinein zu passen.
Beschreiben wir zunächst die Bedeutung von „Algorithmen in Klasse mit einem Orakel für eine Sprache A.“ (Die Notwendigkeit dafür wurde von Tsuyoshi Ito hervorgehoben). Wir werden die gleiche Konvention verwenden, die Ladner und Lynch verwendet haben . Die Konvention wird von Bennett & Gill gut beschrieben :C.
Die Standarddefinition von Komplexitätsklassen von Orakelmaschinen lautet wie folgt: B und C seien Komplexitätsklassen . Dann ist ein legitimes Komplexitätsklasse, definiert als X = ⋃ L ∈ C B L . Hier repräsentiert B L die Komplexitätsklasse von Entscheidungsproblemen, die durch einen Algorithmus in Klasse B mit einem Orakel für eine Sprache L lösbar sind.X.= B.C. X.= ⋃L ∈ C.B.L. B.L.
Da X eine legitime Komplexitätsklasse ist, können wir für jede Komplexitätsklasse A von Komplexitätsklassen und X A = ( B C ) A sprechen .EINX.= A.( B.C.) X.EIN= ( B.C.)EIN
bezieht sich auf die Komplexitätsklasse von Entscheidungsproblemen, die durch einen Algorithmus in Klasse A mit einem Orakel für jede Sprache L ' ∈ X = ⋃ L ∈ C B L lösbar sind . Mit anderen Worten, A X = ⋃ L ' ∈ { ⋃ L ∈ C B L } A L ' .EINX. L.'∈ X.= ⋃L ∈ C.B.L. EINX.= ⋃L.'∈ { ⋃L ∈ C.B.L.}}EINL.'
bezieht sich auf die Komplexitätsklasse von Entscheidungsproblemen, die durch einen Algorithmus in der Klasse X = ⋃ L ∈ C B L mit einem Orakel für jede Sprache L ' ∈ A lösbar sind. Mit anderen Worten, X A = ⋃ L ' ∈ A X L ' = ⋃ L ' ∈ A ( ⋃ L ∈ C B L ) L ' .X.EIN X.= ⋃L ∈ C.B.L. L′∈A XA=⋃L′∈AXL′=⋃L′∈A(⋃L∈CBL)L′
Anspruch: .(BL1)L′∪(BL2)L′=(BL′)L1∪L2
Side Note: Since it's 3:00 AM now, I'm too sleepy to check the validity of the above claim! I think it's valid & elementary to prove, yet it's nice to see the actual proof.
Daher kann man schreiben .XA=⋃L′∈A(⋃L∈CBL)L′=⋃L∈C,L′∈A(BL′)L
Beispiel
Epilog
Eine fruchtbare Diskussion mit Tsuyoshi Ito ergab (für mich), dass es nicht einfach ist, eine Komplexitätsklasse doppelt zu relativieren. Tatsächlich scheint es sogar problematisch zu sein, eine zu definieren. Ich sollte auf jeden Fall mehr studieren, um zu sehen, ob jemals eine zufriedenstellende Definition gegeben wird. In der Zwischenzeit freue ich mich über jeden Kommentar, der zur Lösung dieses Problems verwendet werden kann.
quelle