Lewati ke konten utama

Subbab 3.10 Diskusi

Kelompok itu sedang memperdebatkan nilai bukti kombinatorial dibandingkan dengan bukti formal melalui induksi. Xing mengatakan bahwa ia sebenarnya lebih suka melakukan pembuktian dengan induksi karena, menurut suatu pandangan, bukti kombinatorial bukanlah bukti yang sesungguhnya. Dave bergumam, “Bukti kombinatorial selalu dapat dibuat ketat.” Mereka berdebat cukup lama hingga Alice berkata, “Tetapi profesor tidak pernah menjelaskan barisan aneh
\begin{equation*} 1,2,3,4,1,2,3,4,5,1,2,3,4,5,2,3,4,5,6,2,3,4,5,6,1,2,3,4,5,2,3,4,5,6,\dots, \end{equation*}
itu, bukan?”
Dave sedang bersemangat. Ia bertanya, “Siapa yang punya uang receh untuk menukar satu dolar?” Namun, tak seorang pun memahami mengapa ia mengalihkan perdebatan tentang pembuktian, padahal semua orang sudah membayar kopinya. Alice langsung menegur, “Dave, kadang-kadang aku sungguh tidak mengerti mengapa kamu mengatakan hal-hal seperti itu.” Dave tersenyum (mungkin lebih tepat menyeringai), “Ini tentang membentuk uang kembalian. Suku-suku dalam barisan ini adalah banyaknya koin paling sedikit yang diperlukan untuk membentuk setiap nilai uang kembalian.” Bob berkata, “Aku tidak paham.” Dave melanjutkan, “Suku \(a_n\) adalah banyaknya koin Amerika Serikat paling sedikit yang diperlukan agar jumlahnya tepat \(n\) sen.” Kini semua orang mengeluh, kecuali Carlos, yang merasa bahwa setidaknya kali ini Dave benar-benar cerdik.
“Baiklah”, kata Bob, “itu menjelaskan barisan aneh tadi, tetapi aku masih tidak melihat perbedaan antara induksi dan rekursi.” Dave tidak dapat menahan diri, “Memang tidak ada yang bisa.” Xing berpendapat lain dan berkata, “Dalam banyak bahasa pemrograman, kita berusaha menghindari rekursi dan lebih memilih menggunakan perulangan. Jika tidak, kita akhirnya membebani tumpukan secara berlebihan. Sebagai satu contoh saja, kita dapat menghitung faktor persekutuan terbesar \(d\) dari \(m\) dan \(n\text{,}\) sekaligus menentukan \(a\) dan \(b\) sehingga \(d=am+bn\text{,}\) dengan menggunakan perulangan—dan hanya sedikit ruang penyimpanan. Pendekatan rekursif yang dibahas sebelumnya, dengan penelusuran balik yang tak terhindarkan pada bagian akhir, sebenarnya tidak diperlukan.” Yolanda terkesan oleh luasnya pengalaman dan pengetahuan pemrograman Xing, tetapi Alice tidak terlalu terkesan.
Zori mulai kehilangan kesabaran dan hari itu suasana hatinya sangat buruk. “Aku tidak melihat manfaat apa pun dari semua ini. Siapa yang akan membayarku untuk mencari faktor persekutuan terbesar?” Dave menjawab, “Tidak ada.” Alice berkata, “Tetapi mungkin ada beberapa prinsip di sini yang memiliki penerapan praktis.” Carlos ikut berbicara, “Menurutku, prinsip-prinsip dasar untuk menetapkan bahwa suatu program komputer melakukan apa yang kita kehendaki sangat berkaitan dengan induksi dan rekursi.” Bob berkata, “Aku tidak mengerti. Ketika menulis program, aku hanya memperhatikan detail dan, setelah beberapa koreksi saja, programku selalu berhasil.” Alice menimpali dengan tajam, “Mungkin itu karena kamu tidak pernah membuat sesuatu yang rumit.” Carlos berbicara lebih lembut, “Proyek perangkat lunak besar bisa memiliki ratusan ribu baris kode, dan bagian-bagian produk akhir dapat ditulis oleh kelompok pemrogram yang berbeda pada waktu yang berbeda pula. Menetapkan kebenaran suatu program bisa menjadi tugas yang sangat sulit.” Telinga Zori langsung tegak karena ia merasa bagian terakhir percakapan itu mungkin menunjukkan cara untuk memperoleh penghasilan.