Dalam kursus pengantar saya untuk pemrograman, kita belajar tentang metode Inisialisasi-Pemeliharaan-Pemutusan untuk membuktikan suatu algoritma melakukan apa yang kita harapkan. Tapi kami hanya perlu membuktikan bahwa suatu algoritma yang sudah diketahui benar, benar. Kami tidak pernah diminta untuk menunjukkan bahwa suatu algoritma tidak benar.
Apakah ada contoh algoritma klasik yang terlihat benar, tetapi tidak? Saya mencari kasus-kasus di mana pendekatan Inisialisasi-Pemeliharaan-Pengakhiran menangkap sesuatu yang intuisi pandangan pertama tidak.
ds.algorithms
proofs
Marin
sumber
sumber
Jawaban:
Maksimum lokal 2D
maka setiap sel yang dicetak tebal adalah maksimum lokal. Setiap array yang tidak kosong memiliki setidaknya satu maksimum lokal.
Dengan demikian, kami telah membuktikan teorema berikut:
Atau sudahkah kita?
sumber