EDIT: Argumen yang saya jawab dengan itu tidak salah, tapi itu agak menyesatkan, dalam hal itu hanya menunjukkan bahwa batas atas harus ketat untuk beberapa (yang sebenarnya sepele, karena harus ketat ketika dan terikat 1).n = 2nn=2
Ini argumen yang lebih tepat. Ini menunjukkan bahwa jika batas atas
longgar untuk tertentu , maka untuk semua jumlah panggilan oracle yang diperlukan adalah .n n O ( 1 )log2nn nO(1)
(Tentunya itu bukan , jadi batas atas tidak pernah longgar! Tapi saya tidak benar-benar membuktikannya di sini, dan memberikan jawaban lain untuk masalah ini, sepertinya tidak layak dikejar.)O(1)
Pertimbangkan masalah penghitungan output maksimum :
Diberi -tupel dari mesin Turing, menghitung output maksimum (dari mesin Turing yang berhenti, jika dijalankan pada ). Jika tidak ada yang berhenti, kembalikan 0.( M 1 , ... , M n ) ϵn(M1,…,Mn)ϵ
Sebagai fungsi dari , jumlah panggilan oracle kasus terburuk yang diperlukan untuk menghitung fungsi ini sama dengan jumlah yang diperlukan untuk memutuskan mesin mana dari diberikan yang berhenti. (Jika saya tahu mesin mana yang berhenti, saya dapat dengan mudah menghitung output maksimum. Sebaliknya, jika saya ingin tahu mesin mana yang berhenti, mengikuti konstruksi dalam pernyataan masalah, saya dapat membuat mesin
di mana berjalan semua mesin yang diberikan secara paralel, maka perhentian dan output jika dari mereka pernah berhenti. Output maksimum akan memberitahu saya nomor yang berhenti. dari yang saya dapat menghitung persis yang berhenti.)n { M ′ i } ( i = 1 , 2 , … , n ) M ′ i n i inn{M′i} (i=1,2,…,n)M′inii
Sekarang, misalkan menjadi bilangan bulat terkecil (jika ada) sedemikian rupa sehingga berlaku sebagai berikut: nn0n
Menggunakan panggilan oracle, seseorang dapat menghitung output maksimum dari mesin yang diberikan. (Yaitu, batas atas tidak ketat untuk .)C(n)=max{k∈Z:2k<n}nn
Jelas , karena . Bahkan, juga, karena , tetapi tidak dapat ditentukan untuk menghitung output maksimum dari mesin yang diberikan (tanpa panggilan oracle). Sekarang pertimbangkan lebih besar :n0>1C(1)=−1n0>2C(2)=02n
Klaim: Jika terbatas, maka untuk apa pun , seseorang dapat menghitung output maksimum dari mesin yang diberikan dalam panggilan oracle . n0nnC(n0)(Perhatikan bahwa jika terbatas, maka .)n0C(n0)=O(1)
Bukti. . Kami membuktikannya dengan induksi pada . Kasus-kasus dasar yang , yang dipegang oleh definisi dan .nn≤n0n0C
Biarkan menjadi TM yang, mengingat mesin Turing apa pun , menghitung output maksimum hanya dengan menggunakan panggilan ke oracle.Q0n0C(n0)
Perbaiki . Diberikan mesin apa pun , hitung output maksimum sebagai berikut.n>n0nM1,…,Mn
Fokus pada mesin . Pertimbangkan menjalankan pada mesin ini . Perhatikan bahwa membuat panggilan ke oracle, dan hanya ada kemungkinan tanggapan oleh oracle untuk panggilan ini. Perhatikan bahwa menurut definisi . Biarkan menyatakan th respon mungkin. Untuk setiap , buat sebuah mesin
yang mensimulasikan pada mesin-mesin ini sebagai berikut:M1,…,Mn0Q0n0Q0C(n0)n′=2C(n0)n′=2C(n0)<n0oiii=1,…,n′M′iQ0
TM (pada input ):M′iϵ
- Simulasikan pada mesin , tetapi alih-alih memanggil oracle, anggap oracle merespons sesuai dengan .Q0n0(M1,…,Mn0)oi
- Simulasi ini mungkin tidak berhenti (misalnya jika bukan apa yang akan dikembalikan oleh oracle).oi
- Jika simulasi berhenti, biarkan menjadi output maksimum yang dikatakan akan diberikan.hiQ0
- semua mesin . Jika salah satu dari mereka mengeluarkan , berhenti dan keluaran .n0(M1,…,Mn0)hihi
Sekarang, dalam urutan mesin yang diberikan, ganti mesin pertama dengan mesin . Kembalikan nilai yang dihitung dengan mengulangi urutan mesin ini. (Perhatikan bahwa oracle tidak dipanggil sebelum berulang, sehingga oracle hanya dipanggil setelah case dasar tercapai.)nn0M1,…,Mn0n′<n0M′1,…,M′n′n−(n0−n′)<n
Inilah mengapa perhitungan ini benar. Untuk sedemikian rupa sehingga adalah respons `` benar '' oleh oracle ke kueri, akan berhenti dan memberikan output maksimum yang benar dari mesin asli . Dengan demikian, output maksimum dari mesin
setidaknya output maksimum dari mesin . Di sisi lain, pada langkah 4, tidak ada
dapat memberikan output yang lebih besar dari output maksimum . Dengan demikian, output maksimum dari mesinioiQ0M′in0n′(M′1,…,M′n′)n0(M1,…,Mn0)M′i(M1,…,Mn0)n′(M′1,…,M′n′)
sama dengan output maksimum dari mesin yang mereka ganti. QEDn0