Apakah mungkin untuk memutuskan apakah algoritma yang diberikan optimal secara asimptotik?

11

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 ) ) ?M1L
M2Lt2(n)=o(t1(n))

Fungsi dan t 2 adalah waktu menjalankan terburuk dari mesin Turing M 1 dan M 2 masing-masing.t1t2M1M2

Bagaimana dengan kompleksitas ruang?

StaticBug
sumber
1
Jawabannya jelas tidak. Menentukan waktu menjalankan kasus terburuk dari TM diketahui tidak dapat diputuskan.
chazisop

Jawaban:

9

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.Nn
Mn
Mn2n

Ada dua kasus:

  1. 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.MNΘ(2n)nΘ(2n)N

  2. 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.MNnO(1)N

Pendeknya:

M halts on blank tape N is optimial 

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.MNNM

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;).

Kaveh
sumber
Hanya ingin menyebutkan bahwa dalam pertanyaan awal, OP berasumsi bahwa memutuskan bahasa dalam waktu kuadratik. M1
Pål GD
Harap jelaskan bahwa Anda melihat optimalitas asimptotik . Bahkan dalam kasus 2, tidak sepenuhnya optimal; fungsi n YA dapat dihitung dalam satu langkah, sedangkan N membutuhkan lebih dari n 0 (untuk n besar ), dengan n 0 panjang perhitungan M pada pita kosong. nnYESNn0nn0M
Raphael
Ah, pertanyaannya berubah sejak saya terakhir membacanya. Sudahlah.
Raphael
@ PålGD, saya pikir OP menggunakan itu sebagai contoh (berdasarkan pertanyaan asli yang diposting di cstheory). Anda dapat memeriksa komentar di bawah pertanyaan itu.
Kaveh
2

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!

Reza
sumber
-3

Ha! Jika jawabannya ya, kita akan hidup di dunia yang berbeda.

A0ALA0A

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).

t ke t
sumber
1
Ω(N)
1
Ω(nlogn)
@vonbrand - itulah yang saya maksud dengan algoritma yang proporsional dengan ukuran input.
t ke t
1
@Tetapi Ok, aku khawatir ini tidak akan membuahkan hasil, tetapi aku akan mencoba lagi. 1) Tidak, tidak sama sekali. Jika Anda hanya menyimpan satu langkah pada setiap input, Anda memiliki algoritma yang lebih baik dari sebelumnya, meskipun memiliki runtime asimptotik yang sama. 2) Tidak, tidak. Ini juga bisa berarti "Saya tidak tahu, tetapi jika ya, maka X". Ini tidak biasa (cf P? = NP). 3) Anda mengklaim tidak ada batas bawah non-sepele (pada asimptotik, saya kira) sama sekali . Itu salah. Tolong kerjakan pekerjaan rumah Anda.
Raphael
1
@ MartinJonáš Maksud saya mesin Turing 2-tape. Kaveh ada benarnya, bukti dari teorema hierarki waktu memang memberikan masalah yang dapat dipecahkan dengan waktu yang rumit dengan kompleksitas tinggi, tetapi contoh-contohnya tidak alami dan tidak terasa terlalu eksplisit. Juga, tidak ada hierarki yang diketahui untuk waktu probabilistik, jadi di sana kita tidak punya apa-apa.
Sasho Nikolov