Esta pergunta pode ter uma resposta óbvia ... mas aqui está a pergunta de qualquer maneira. Intuitivamente, é a seguinte declaração plausível - "uma máquina com uma sub-rotina A que, por sua vez, possui uma sub-rotina B é a mesma que uma máquina com uma sub-rotina A que tem acesso à sub-rotina B".
Para definir esse problema formalmente, usarei uma notação não convencional. Quando eu digo , eu estou dando um oráculo para um B - C o m p l e t e problema. por exemplo, N P N P = N P S A T = Σ 2 . Com essa notação "nova", é possível definir A B C e assim por diante. Minha pergunta é, é
- Essa é uma maneira válida de pensar sobre oráculos?
- é
Por exemplo,
Não consigo pensar em nenhum contra-exemplo óbvio a essa regra. Qualquer um?
complexity-classes
oracles
gabgoh
fonte
fonte
Respostas:
Como Venkat disse nos comentários, parece difícil entender sua definição para oracle que não é definida como uma caracterização de máquina.
Seja o conjunto de TM em A com um oráculo que é uma máquina em ( B com um oráculo em uma máquina em C ). É óbvio que uma máquina em A pode chamar C : ele só chama a máquina em B e pede-lhe para levar a mensagem diretamente para C .UMA(BC) UMA B C UMA C B C
Eu acho que seria uma máquina em A que pode chamar um oráculo em C ou um oráculo que é (uma máquina em B que pode chamar uma máquina em C ), portanto é exatamente a mesma definição.( AB)C UMA C B C
Finalmente, você pode querer , que certamente é diferente dos outros dois (basta pegar B = C = N P e A = P , então A B , C = N P ∪ c o N P enquanto A ( B C ) = Σ P 2 ∪ ¸ p 2 .UMAB , C B = C=NP A = P UMAB , C=NP∪ c o NP UMA( BC)= ΣP2∪ Πp2
fonte
Eu escreveria o seguinte como um comentário, mas era muito longo para caber.
Vamos primeiro descrever o significado de "algoritmos na classe com um oráculo para uma linguagem A." (A necessidade disso foi apontada por Tsuyoshi Ito). Usaremos a mesma convenção usada por Ladner e Lynch . A convenção é bem descrita por Bennett & Gill :C
A definição padrão de classes de complexidade de máquinas Oracle é a seguinte: Seja B e C sejam classes de complexidade . Então, é uma classe de complexidade legítimo, definida como X = ⋃ L ∈ C B G . Aqui, B L representa a classe complexidade dos problemas de decisão solucionável por um algoritmo na classe B com um oráculo para uma linguagem L.X=BC X=⋃L∈CBL BL
Desde X é uma classe de complexidade legítimo, para qualquer classe de complexidade A, podemos falar de classes de complexidade e X A = ( B C ) A .AX=A(BC) XA=(BC)A
refere-se à classe de complexidade de problemas de decisão que podem ser resolvidos por um algoritmo de classe A, com um Oracle para qualquer língua L ' ∈ X = ⋃ L ∈ C B G . Em outras palavras, A XAX L′∈X=⋃L∈CBL .AX=⋃L′∈{⋃L∈CBL}AL′
refere-se à classe de complexidade de problemas de decisão que podem ser resolvidos por um algoritmo de classe X = ⋃ L ∈ C B G com um Oracle para qualquer língua L ' ∈ Uma . Em outras palavras, X A = ⋃ L ′ ∈ A X L ′ = ⋃XA X=⋃L∈CBL L′∈A .XA=⋃L′∈AXL′=⋃L′∈A(⋃L∈CBL)L′
Reivindicação: .(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.
Portanto, pode-se escrever .XA=⋃L′∈A(⋃L∈CBL)L′=⋃L∈C,L′∈A(BL′)L
Exemplo
Deixe . Sabemos que c O N P ⊆ X . Dando aos dois lados acesso do oráculo a N P , obtém-se:X=PNP coNP⊆X NP .coNPNP⊆XNP=(PNP)NP
Epílogo
Uma discussão frutuosa com Tsuyoshi Ito revelou (para mim) que não é fácil relativizar duplamente uma aula de complexidade. De fato, mesmo definir um deles parece ser problemático. Eu definitivamente deveria estudar mais para ver se alguma definição satisfatória é dada. Enquanto isso, aprecio qualquer comentário que possa ser usado para resolver esse problema.
fonte