To pytanie może mieć oczywistą odpowiedź ... ale oto i tak pytanie. Intuicyjnie jest to następujące prawdopodobne stwierdzenie - „maszyna z podprogramem A, który z kolei ma podprogram B, jest tym samym, co maszyna z podprogramem A, który ma dostęp do podprogramu B”.
Aby formalnie zdefiniować ten problem, użyję niekonwencjonalnej notacji. Kiedy mówię , daję wyrocznię za problem . np. . Za pomocą tej „nowej” notacji można zdefiniować i tak dalej. Moje pytanie brzmi: jest
- czy jest to prawidłowy sposób myślenia o wyroczniach?
- to
Na przykład
Nie mogę wymyślić żadnych oczywistych kontrprzykładów tej zasady. Ktoś?
complexity-classes
oracles
Gabgoh
źródło
źródło
Odpowiedzi:
Jak powiedział Venkat w komentarzach, wydaje się, że trudno jest zrozumieć twoją definicję wyroczni, która nie jest zdefiniowana jako pewna charakterystyka maszyny.
Niech będzie zbiorem TM w A z wyrocznią, która jest maszyną w ( B z wyrocznią w maszynie w C ). Jest oczywiste, że maszyna w A mogą dzwonić C : to właśnie nazywa się maszynę w B i prosi go, aby nieść wiadomość bezpośrednio do C .A(BC) A B C A C B C
Myślę, że byłaby maszyną w A, która może wywoływać wyrocznię w C lub wyrocznią, która jest (maszyna w B, która może wywoływać maszynę w C ), więc jest to dokładnie ta sama definicja.(AB)C A C B C
Wreszcie, możesz chcieć , który z pewnością różni się od pozostałych dwóch (wystarczy wziąć B = C = N P i A = P , następnie A B , C = N P ∪ c o N P podczas gdy A ( B C ) = Σ P 2 ∪ Π p 2 .AB,C B=C=NP A=P AB,C=NP∪coNP A(BC)=ΣP2∪Πp2
źródło
Chciałbym napisać następujący komentarz, ale było to zbyt długie, aby zmieściło się w nim.
Najpierw opiszmy znaczenie „algorytmów w klasie z wyrocznią dla języka A.” (Potrzeba tego została wskazana przez Tsuyoshi Ito). Będziemy korzystać z tej samej konwencji, z której korzystają Ladner i Lynch . Konwencja jest dobrze opisana przez Bennett & Gill :C
Standardowa definicja klas złożoności maszyn Oracle jest następująca: Niech B i C będą klasami złożoności . Następnie jest uzasadniony klasa złożoności, określone jako X = ⋃ L ∈ C B L . Tutaj B L reprezentuje klasę złożoności problemów decyzyjnych rozwiązanych przez algorytm w klasie B z wyrocznią dla języka L.X=BC X=⋃L∈CBL BL
Ponieważ X jest uzasadniony klasa złożoności, dla każdej klasy A złożoność, możemy mówić o klasami złożoności i X A = ( B C ) A .AX=A(BC) XA=(BC)A
odnosi się do klasy złożoności problemów decyzyjnych rozwiązany przez algorytm w klasie A z Oracle dla dowolnego językaAX . Innymi słowy, A X = ⋃ L ′ ∈ { ⋃ L ∈ C B L } A L ′ .L′∈X=⋃L∈CBL AX=⋃L′∈{⋃L∈CBL}AL′
odnosi się do klasy złożoności problemów decyzyjnych możliwych do rozwiązania przez algorytm z klasy X = ⋃ L ∈ C B L z wyrocznią dla dowolnego języka L ′ ∈ AXA X=⋃L∈CBL L′∈A . Innymi słowy, .XA=⋃L′∈AXL′=⋃L′∈A(⋃L∈CBL)L′
Zastrzeżenie: .(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.
Dlatego można napisać .XA=⋃L′∈A(⋃L∈CBL)L′=⋃L∈C,L′∈A(BL′)L
Przykład
Niech . Wiemy, żeco,NP⊆X. Dając dostęp zarówno boki ORACLENP, dostaje:CON P N P ⊆ X N P =( P N P ) N P .X=PNP coNP⊆X NP coNPNP⊆XNP=(PNP)NP
Epilog
Owocna dyskusja z Tsuyoshi Ito ujawniła (dla mnie), że podwójna relatywizacja klasy złożoności nie jest łatwa. W rzeczywistości nawet zdefiniowanie jednego wydaje się problematyczne. Powinienem zdecydowanie przestudiować więcej, aby zobaczyć, czy kiedykolwiek zostanie podana zadowalająca definicja. Tymczasem doceniam każdy komentarz, który można wykorzystać do rozwiązania tego problemu.
źródło