Saya menemukan pertanyaan berikut, yang merupakan latihan yang mudah (spoiler di bawah).
Kami diberikan contoh masalah penghentian (yaitu TMs ), dan kami harus memutuskan mana yang benar-benar berhenti di . Artinya, kita perlu menampilkan . Kami diberi oracle untuk masalah penghentian, tetapi kami harus menggunakannya beberapa kali.M 1 , . . . , M n ϵ { i : M saya berhenti ϵ }
Tidak sulit untuk menunjukkan bahwa itu dapat dilakukan dengan panggilan .
Pertanyaan saya adalah: bisakah kita membuktikan batas bawah? Adakah alasan untuk curiga bahwa ikatan seperti itu akan sangat sulit ditemukan?
Jawaban atas pertanyaan itu sendiri (spoiler, hover mouse):
Pertimbangkan kasus TM. Kita dapat membuat TM yang menjalankan secara paralel, dan berhenti jika setidaknya dua dari mereka berhenti (jika tidak macet). Demikian pula, kita dapat membuat TM yang berhenti jika setidaknya satu dari mereka berhenti. Kami kemudian dapat memanggil oracle pada . Jika berhenti, maka kita dapat menjalankan mesin secara paralel, dan menunggu satu untuk berhenti. Kita kemudian dapat memanggil oracle pada yang terakhir. Jika oracle mengatakan "tidak", maka kami menjalankan oracle pada . Jika berhenti, maka kami menjalankan mesin sampai satu berhenti, dan hanya itu yang berhenti. Jika tidak berhenti, maka tidak ada yang berhenti. Memperluas ini ke mesin itu mudah.H 2 M 1 , M 2 , M 3 H 1 H 2 H 1 H 1 n
Pengamatan pertama tentang pertanyaan ini adalah bahwa tampaknya tidak mungkin untuk diselesaikan dengan menggunakan alat informasi-teoretis, karena kita sangat bergantung pada kemampuan kita untuk mendapatkan informasi dengan menjalankan mesin tanpa nubuat.
sumber
Jawaban:
Hasilnya dapat ditemukan di
Bukti mereka sebenarnya menunjukkan bahwa masalah Anda tidak dapat diselesaikan dengan kueri yang kurang dari untuk set apa pun , apalagi untuk masalah penghentian itu sendiri. Untuk beberapa notasi, masalah Anda terkadang dinotasikan dengan atau (tergantung pada notasi favorit Anda untuk masalah penghentian).X C K n C H A L T nlog2n X CKn CHALTn
Untuk ini dan banyak hasil terkait, lihat juga:
Survei ini oleh Gasarch
Buku Bounded Queries in Recursion Theory oleh Gasarch dan Martin.
sumber
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 = 2n n=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 )log2n n n O(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 :
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 in n {M′i} (i=1,2,…,n) M′i n i i
Sekarang, misalkan menjadi bilangan bulat terkecil (jika ada) sedemikian rupa sehingga berlaku sebagai berikut: nn0 n
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>1 C(1)=−1 n0>2 C(2)=0 2 n
Klaim: Jika terbatas, maka untuk apa pun , seseorang dapat menghitung output maksimum dari mesin yang diberikan dalam panggilan oracle .n0 n n C(n0) (Perhatikan bahwa jika terbatas, maka .)n0 C(n0)=O(1)
Bukti. . Kami membuktikannya dengan induksi pada . Kasus-kasus dasar yang , yang dipegang oleh definisi dan .n n≤n0 n0 C
Biarkan menjadi TM yang, mengingat mesin Turing apa pun , menghitung output maksimum hanya dengan menggunakan panggilan ke oracle.Q0 n0 C(n0)
Perbaiki . Diberikan mesin apa pun , hitung output maksimum sebagai berikut.n>n0 n M1,…,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,…,Mn0 Q0 n0 Q0 C(n0) n′=2C(n0) n′=2C(n0)<n0 oi i i=1,…,n′ M′i Q0
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.)n n0 M1,…,Mn0 n′<n0 M′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 mesini oi Q0 M′i n0 n′ (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
sumber