Pertanyaan ini mungkin memiliki jawaban yang jelas ... tetapi inilah pertanyaannya. Secara intuitif, ini adalah pernyataan masuk akal berikut - "mesin dengan subrutin A yang pada gilirannya memiliki subrutin B sama dengan mesin dengan subrutin A yang memiliki akses ke subrutin B".
Untuk mendefinisikan masalah ini secara formal, saya akan menggunakan beberapa notasi yang tidak konvensional. Ketika saya mengatakan , saya memberikan oracle untuk masalah . misalnya . Dengan notasi "baru" ini, dimungkinkan untuk mendefinisikan , dan seterusnya. Pertanyaan saya adalah, apakah
- apakah ini cara berpikir yang valid tentang nubuat?
- adalah
Misalnya,
Saya tidak bisa memikirkan contoh tandingan yang jelas untuk aturan ini. Siapa saja?
complexity-classes
oracles
gabgoh
sumber
sumber
Jawaban:
Seperti yang dikatakan Venkat dalam komentar, tampaknya sulit untuk memahami definisi Anda untuk oracle yang tidak didefinisikan sebagai beberapa karakterisasi mesin.
Misalkan adalah himpunan TM dalam A dengan oracle yang merupakan mesin dalam ( B dengan oracle dalam mesin dalam C ). Jelas bahwa mesin di A dapat memanggil C : ia hanya memanggil mesin di B dan memintanya untuk membawa pesan langsung ke CA(BC) A B C A C B C .
Saya kira akan menjadi mesin di A yang dapat memanggil oracle di C atau oracle yang (mesin di B yang dapat memanggil mesin di C ) jadi definisi yang persis sama.(AB)C A C B C
Akhirnya, Anda mungkin menginginkan , yang tentu saja berbeda dari dua lainnya (ambil saja B = C = N P dan A = P , lalu A B , C = N P ∪ c o N P sedangkan A ( B C ) = Σ P 2 ∪ Π p 2 .AB,C B=C=NP A=P AB,C=NP∪coNP A(BC)=ΣP2∪Πp2
sumber
Saya akan menulis yang berikut sebagai komentar, tapi terlalu panjang untuk masuk.
Pertama mari kita gambarkan arti dari “algoritma di kelas dengan oracle untuk bahasa A.” (Kebutuhan untuk ini ditunjukkan oleh Tsuyoshi Ito). Kami akan menggunakan konvensi yang sama yang digunakan oleh Ladner dan Lynch . Konvensi ini dijelaskan dengan baik oleh Bennett & Gill :C
Definisi standar kelas kompleksitas mesin oracle adalah sebagai berikut: Biarkan B dan C menjadi kelas kompleksitas . Kemudian, adalah kelas kompleksitas yang sah, yang didefinisikan sebagai X = ⋃ L ∈ C B L . Di sini, B LX=BC X=⋃L∈CBL BL mewakili kelas kompleksitas masalah keputusan dipecahkan oleh algoritma di kelas B dengan oracle untuk bahasa L.
Karena X adalah kelas kompleksitas yang sah, untuk setiap kelas kompleksitas A, kita dapat berbicara tentang kelas kompleksitas dan X A = ( B C ) AAX=A(BC) XA=(BC)A .
mengacu pada kelas kompleksitas masalah keputusan dipecahkan oleh algoritma di kelas A dengan oracle untuk setiap bahasa L ' ∈ X = ⋃ L ∈ C B L . Dengan kata lain, A X = ⋃ L ′ ∈ { ⋃ L ∈ C B L } A L ′ .AX L′∈X=⋃L∈CBL AX=⋃L′∈{⋃L∈CBL}AL′
mengacu pada kelas kompleksitas masalah keputusan dipecahkan oleh algoritma di kelas X = ⋃ L ∈ C B L dengan oracle untuk setiap bahasa L ' ∈ A . Dengan kata lain, X A = ⋃ L ′ ∈ A X L ′ = ⋃ L ′ ∈ A ( ⋃ L ∈ C B L ) L ′ .XA X=⋃L∈CBL L′∈A XA=⋃L′∈AXL′=⋃L′∈A(⋃L∈CBL)L′
Klaim:(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.
Oleh karena itu, seseorang dapat menulisXA=⋃L′∈A(⋃L∈CBL)L′=⋃L∈C,L′∈A(BL′)L .
Contoh
Epilog
Sebuah diskusi yang bermanfaat dengan Tsuyoshi Ito mengungkapkan (bagi saya) bahwa tidak mudah untuk secara ganda merelatifkan kelas kompleksitas. Bahkan, mendefinisikan satu pun tampaknya bermasalah. Saya harus belajar lebih banyak untuk melihat apakah ada definisi yang memuaskan yang pernah diberikan. Sementara itu, saya menghargai setiap komentar yang dapat digunakan untuk menyelesaikan masalah ini.
sumber