Dalam buku Andrew W. Appel, Implementasi Kompiler Modern dalam ML , ia mengatakan di bawah bab 17 bahwa teori Komputasi menunjukkan bahwa akan selalu mungkin untuk menciptakan transformasi optimisasi baru dan hasil untuk membuktikan bahwa kompiler yang mengoptimalkan sepenuhnya akan menyelesaikan masalah yang terhenti: Sebuah program Q yang tidak menghasilkan output dan tidak pernah berhenti dapat dengan mudah digantikan oleh representasi optimalnya, Opt (Q) , menjadi "L: goto L". Jadi kompiler yang sepenuhnya mengoptimalkan dapat memecahkan masalah penghentian.
Jadi pertanyaan saya adalah ini: Apakah ada kompiler yang mengoptimalkan sepenuhnya ada untuk mengakhiri program? Pikiran saya satu-satunya adalah sebagai berikut: Meskipun sebuah program dijamin akan berakhir, ia masih bisa rumit, dan untuk setiap kompiler pengoptimal yang konkret, C, orang mungkin dapat membangun sebuah program yang mengambil C sebagai input dan entah bagaimana menghasilkan program yang lebih buruk seperti semacam kasus sudut.
Juga, Apa implikasi dari membatasi diri kita sendiri untuk menghentikan program?
sumber
Jawaban:
Saya menganggap Anda tertarik pada optimasi runtime. Seperti yang saya sudah menulis dalam komentar saya, yang tidak cukup menentukan tujuan: apakah optimasi mengurangi runtime pada setiap masukan, setiap masukan, semua kasus terburuk input atau bahkan rata-rata ?
Saya akan menunjukkan bahwa mereka semua tidak mungkin. Buktinya meluas hingga mengoptimalkan panjang program.
Ingatlah bahwa masalah berikut ini tidak dapat dihitung:
Perhatikan lebih lanjut bahwa dengan diberikan tata bahasa bebas konteks , kita dapat melakukan hardcode, katakanlah, algoritma CYK untuk tata bahasa yang satu itu; menunjukkan algoritma ini dengan C Y K G . Kita mengamati bahwa C Y K G berakhir untuk semua masukan (dari Σ * ).G C Y KG C Y KG Σ∗
Sekarang asumsikan bahwa ada optimiser yang, mengingat algoritma selalu terminating A , menghasilkan algoritma yang setara dengan hasil yang optimal sehubungan dengan runtime. Jelas,Memilih SEBUAH
dan dengan demikian kami telah membangun penentu untuk masalah yang tidak dapat dihitung, bertentangan dengan asumsi.
sumber