Apakah ada algoritma untuk masalah berikut:
Diberikan mesin Turing yang menentukan bahasa L , Apakah ada mesin Turing M 2 yang memutuskan L sedemikian rupa sehingga t 2 ( n ) = o ( t 1 ( n ) ) ?
Fungsi dan t 2 adalah waktu menjalankan terburuk dari mesin Turing M 1 dan M 2 masing-masing.
Bagaimana dengan kompleksitas ruang?
Jawaban:
Berikut ini adalah argumen sederhana untuk menunjukkan bahwa mereka tidak dapat diputuskan, yaitu tidak ada algoritma untuk memeriksa apakah algoritma yang diberikan optimal mengenai waktu penggunaan atau penggunaan memorinya.
Kami mengurangi masalah penghentian pada pita kosong untuk masalah Anda tentang optimalitas waktu berjalan.
Biarkan menjadi mesin Turing yang diberikan. Biarkan N menjadi mesin Turing berikut:M
: pada input n 1. Jalankan M pada pita kosong untuk (paling banyak) n langkah. 2. Jika M tidak berhenti dilangkah n , jalankan loop ukuran 2 n , lalu kembali NO. 3. Kalau tidak, kembalikan YA.N n
M. n
M. n 2n
Ada dua kasus:
Jika tidak berhenti pada pita kosong, mesin N akan berjalan selama Θ ( 2 n ) menginjak input n . Jadi waktu menjalankannya adalah Θ ( 2 n ) . Dalam hal ini, N jelas tidak optimal.M. N Θ(2n) n Θ(2n) N
Jika berhenti pada pita kosong, maka mesin N akan berjalan untuk jumlah langkah konstan untuk semua cukup besar n , sehingga waktu berjalan adalah O ( 1 ) . Dalam hal ini, N jelas optimal.M N n O(1) N
Pendeknya:
Selain itu diberikan kode untuk kita dapat menghitung kode untuk N . Karenanya kami mengalami pengurangan dari penghentian masalah pada pita kosong ke masalah waktu berjalan yang optimal. Jika kita bisa memutuskan apakah mesin Turing yang diberikan N optimal, kita bisa menggunakan reduksi di atas untuk memeriksa apakah mesin yang diberikan M berhenti pada pita kosong. Karena berhenti pada pita kosong tidak dapat dipastikan, masalah Anda juga tidak dapat diputuskan.M N N M
Argumen serupa dapat digunakan untuk ruang, yaitu juga tidak dapat dipastikan untuk memeriksa apakah mesin Turing yang diberikan optimal mengenai ruang yang digunakannya.
Bahkan pernyataan yang lebih kuat adalah benar: kita tidak dapat memutuskan apakah fungsi yang dapat dihitung adalah batas atas pada kompleksitas waktu dari komputasi fungsi yang dapat dihitung. Begitu pula untuk ruang. Yaitu bahkan teori kompleksitas dasar tidak dapat diotomatisasi oleh algoritma (yang dapat dianggap sebagai berita baik untuk teori kompleksitas;).
sumber
Seperti yang disebutkan orang lain jawabannya adalah tidak.
Tetapi ada artikel menarik yang ditulis oleh Blum " Teori Mesin-Independen dari Kompleksitas Fungsi Rekursif ". Dia menunjukkan bahwa ada beberapa fungsi dengan properti yang tidak peduli seberapa cepat suatu program untuk menghitung fungsi-fungsi ini ada program lain untuk menghitung mereka sangat jauh lebih cepat .
properti yang sangat bagus!
sumber
Ha! Jika jawabannya ya, kita akan hidup di dunia yang berbeda.
Sayangnya, ini tidak mungkin, dan memang saya pribadi menganggap pembuktian (non-sepele) optimalitas adalah masalah paling menarik (dan sulit) dalam ilmu komputer. Sejauh yang saya tahu - saya akan senang untuk dikoreksi - tidak ada hasil optimal untuk masalah polinomial (kecuali hasil optimalitas sepele tentu saja algoritma mengambil waktu sebanding dengan ukuran input).
sumber