Saya melihat ini pembacaan MIT pada kompleksitas komputasi dan sebentar 15:00 embarks Erik Demaine pada demonstrasi untuk menunjukkan apa yang dinyatakan dalam judul pertanyaan ini. Namun saya tidak dapat mengikuti alasannya, dalam praktiknya apa yang dia katakan adalah ini:
kita dapat menyatakan masalah keputusan sebagai string dan yang dalam praktiknya adalah tabel kebenaran fungsi.
Dia melanjutkan dengan mengatakan bahwa masalah keputusan adalah string bit tanpa batas sementara program adalah string bit terbatas dan hingga di sini tidak ada masalah. Apa yang saya tidak mengerti adalah kelanjutan dari bukti dari titik ini pada: Masalah keputusan ada di
karena Anda dapat menempatkan titik desimal sebelum string yang mewakili masalah, sehingga mendapatkan bagian desimal dari yang nyata
for example if you have 0111011010101010101... it could become x.0111011010101010101...
Suatu program "hanya" bilangan bulat di karena itu adalah rangkaian bit yang terbatas. Poin yang saya gagal pahami adalah bagaimana mungkin bahwa masalah keputusan sebanding dengan bilangan real, bukan bilangan bulat ... Maksud saya, jika kita menggunakan argumen "meletakkan titik di depan angka" tidak bisa alasan yang sama juga diterapkan pada jumlah kemungkinan algoritma yang dapat dihasilkan?
Jawaban:
Jika saya memahami Anda dengan benar, pertanyaan Anda adalah - mengapa solusi dapat dikodekan oleh bilangan alami dan masalah dengan bilangan real. (Saya berasumsi bahwa Anda memahami tahap selanjutnya dari bukti yang didasarkan pada perbedaan antara set kardinalitas dan .)c ℵ0
Alasannya terletak pada teori himpunan, lebih khusus dalam kardinalitas set yang berbeda. Hitung jumlah program - ini adalah ukuran string yang berbeda dari bahasa tertentu atau serangkaian karakter (ASCII misalnya). Ukuran ini setara dengan ukuran set (angka alami). (Setiap string dapat direpresentasikan sebagai nilainya yang dihitung oleh representasi binernya.)N
Tetapi, menghitung jumlah fungsi dari bilangan asli (atau string yang mewakili mereka) ke , yah itu adalah cerita yang sama sekali berbeda, dan di sini kita berurusan dengan perbedaan ukuran antara dua himpunan tak terbatas; ukuran set ini lebih besar. Ada bukti bagus yang didasarkan pada fakta bahwa fungsi dari untuk semua set yang disebutkan di atas tidak dapat "ke", yang mengarah pada kesimpulan perbedaan kardinalitas. Anda bisa membaca buktinya di sini .{0,1} N
sumber
Merumuskan kembali dengan cara yang lebih tepat secara matematis, apa yang dosen coba katakan adalah ini: Setiap algoritma dapat (secara unik) dikodekan sebagai string bit terbatas, dan string bit terbatas (unik) mengkodekan suatu program; oleh karena itu, ada penautan antara dan himpunan algoritma, sehingga keduanya merupakan himpunan yang dapat dihitung. Sebaliknya, setelah memperbaiki urutan string, setiap masalah keputusan dapat (secara unik) dikodekan sebagai string bit tanpa batas, di mana bit ke- menunjukkan apakah string ke- ada di atau tidak, dan string tanpa batas dari bits (unik) mengkodekan masalah keputusan (dengan cara yang sama); karenanya,N P i i P R dan himpunan masalah keputusan merupakan himpunan yang tidak terhitung.
sumber
Setiap algoritma dapat dideskripsikan dengan string yang terbatas, sehingga hanya ada banyak algoritma. Sebaliknya, kita dapat menggambarkan setiap masalah keputusan sebagai desimal tak terbatas dalam basis 2, dan terlebih lagi ini adalah pemetaan surjektif : setiap angka dalam[0,1] dapat "diterjemahkan" menjadi masalah keputusan. Karena itu ada banyak masalah keputusan yang tak terhitung jumlahnya.
Argumen decoding tidak bekerja untuk algoritma - sementara setiap algoritma sesuai dengan desimal terbatas, ini tidak mencakup semuanya[0,1] , tetapi hanya sebagian yang dapat dihitung dari itu.
sumber