Jika Anda dapat mengubah nama pemrograman dinamis, apa sebutannya?
Jika Anda dapat mengubah nama pemrograman dinamis, apa sebutannya?
Jawaban:
Otobiografi Richard Bellman menunjukkan bahwa ia memilih istilah "pemrograman dinamis" untuk sengaja dikacaukan.
Tahun 1950 bukanlah tahun yang baik untuk penelitian matematika. Kami memiliki seorang pria yang sangat menarik di Washington bernama Wilson. Dia adalah sekretaris Pertahanan, dan dia benar-benar memiliki ketakutan dan kebencian patologis terhadap kata 'penelitian'. Saya tidak menggunakan istilah ini dengan ringan; Saya menggunakannya dengan tepat. Wajahnya akan suffuse, dia akan memerah, dan dia akan menjadi kejam jika orang menggunakan istilah 'penelitian' di hadapannya. Anda dapat membayangkan bagaimana perasaannya, kemudian, tentang istilah 'matematika'. RAND Corporation dipekerjakan oleh Angkatan Udara, dan Angkatan Udara memiliki Wilson sebagai bosnya, pada dasarnya. Oleh karena itu, saya merasa harus melakukan sesuatu untuk melindungi Wilson dan Angkatan Udara dari kenyataan bahwa saya benar-benar mengerjakan matematika di dalam RAND Corporation.
Judul apa, nama apa, yang bisa saya pilih? Pertama-tama saya tertarik dalam perencanaan, pengambilan keputusan, dan pemikiran. Namun perencanaan, bukan kata yang baik karena berbagai alasan. Karena itu saya memutuskan untuk menggunakan kata 'pemrograman'. Saya ingin menyampaikan gagasan bahwa ini dinamis, ini multistage, ini beragam waktu — saya pikir, mari kita bunuh dua burung dengan satu batu. Mari kita ambil sebuah kata yang memiliki makna yang sangat tepat, yaitu 'dinamis', dalam pengertian fisik klasik. Ia juga memiliki sifat yang sangat menarik sebagai kata sifat, dan tidak mungkin menggunakan kata 'dinamis' dalam arti merendahkan. Coba pikirkan beberapa kombinasi yang mungkin akan memberinya makna merendahkan. Tidak mungkin. Jadi, saya pikir "pemrograman dinamis" adalah nama yang bagus. Itu adalah sesuatu yang bahkan tidak bisa ditolak oleh anggota Kongres.
(Seperti yang ditunjukkan Russell dan Norvig dalam buku teks AI mereka, cerita ini harus menjadi hiasan kreatif dari kebenaran. Bellman pertama kali menggunakan frasa "pemrograman dinamis" pada tahun 1952 , dan Charles Erwin Wilson tidak menjadi Sekretaris Pertahanan sampai tahun 1953. )
Bagaimanapun, motivasi asli Bellman menyarankan perencanaan multistage , tetapi setidaknya untuk tujuan algoritmik, saya lebih suka sesuatu seperti rekursi bottom-up yang hemat , hanya dengan suku kata yang lebih sedikit.
Ada dua aspek penting dari DP: (1) mendefinisikan subproblem (yaitu, menyiapkan "tabel", yang bisa berupa array multidimensi yang mungkin diindeks oleh bilangan bulat, simpul, subset simpul dll.) Dan (2) memecahkan secara rekursif submasalah. Saya mengusulkan "rekursi tabular / tabulasi" sebagai nama yang merujuk pada kedua aspek.
Memoisasi adalah varian yang cukup umum.
Untuk pergi dengan memecah-dan-menaklukkan , saya akan mengatakan sambatan-dan-gabungkan.
Saya biasanya menggunakan kedua kata, sambatan dan menggabungkan saat mengajar / menjelaskan DP; tetapi tidak digunakan sambatan-dan-gabungkan secara eksplisit. Kadang-kadang saya menggunakan tumpang tindih-divide-and-conquer untuk membandingkan kedua paradigma tersebut.
Setelah kuliah terakhir saya tentang pemrograman dinamis dalam desain algoritma, saya telah meminta siswa untuk menyarankan nama baru untuk teknik ini. Sementara saya merasa geli dengan "pemrograman Tough," saya menginginkan sesuatu yang mungkin membuat teknik lebih berkesan. Setelah diskusi di sini, saya dapat mengusulkan dua nama, satu untuk top-down dan satu untuk bottom-up:
Multiway-Divide dan Memoized-Conquer (alias Divide ^ M & Conquer ^ M), dan
Gabungkan semua submasalah (alias Merge_all)
Makalah ini ( paywalled doi ) menyebut masalah yang dapat diserang menggunakan DP "decomposable".
Saya membahas hal ini dengan beberapa rekan baru-baru ini, dan setelah diskusi panas kami menemukan caching panggilan tabular .
Saya akan menyarankan nama Pemrograman Induktif - sebagai semacam jembatan seperti dari zaman kita ke masa-masa indah Euler, Kepler et al. Atau mungkin bahkan Pemrograman Induktif Balik . Dan ya, bagi saya DP sangat terkait dengan Induksi, dalam pengertian lama yang baik. Memoisasi, cache, tabel dll hanyalah elemen teknik, bukan inti dari pendekatan untuk memecahkan masalah.
Mungkin sesuatu yang memasukkan kata-kata tabel dan isi , karena inilah yang terjadi.
Tampilan rekursif atau cakrawala rekursif