Buku matematika yang bagus tentang algoritma [ditutup]

11

Saya seorang pengisap untuk keanggunan dan ketelitian matematika, dan sekarang saya sedang mencari literatur seperti pada algoritma dan analisis algoritma. Sekarang, tidak masalah bagi saya algoritma apa yang dibahas, tetapi sangat banyak bagaimana mereka disajikan dan diperlakukan. ”Saya paling menghargai bahasa yang sangat jelas dan tepat yang mendefinisikan semua gagasan yang digunakan dalam cara yang ketat dan abstrak.

Saya menemukan bahwa Pengantar klasik untuk Algoritma , oleh Cormen, Leiserson, Rivest dan Stein cukup rapi, tetapi tidak menangani matematika dengan baik dan cukup informal dengan bukti dan definisi. Pengantar Sipser untuk Teori Komputasi tampaknya lebih baik dalam hal itu, tetapi masih tidak menawarkan transisi mulus dari matematika ke algoritma.

Adakah yang bisa merekomendasikan sesuatu?


¹: Algoritme setidaknya harus melibatkan pengelolaan data yang mereka butuhkan menggunakan struktur data abstrak non-sepele seperti grafik, array, set, daftar, pohon dan sebagainya - lebih disukai juga beroperasi pada struktur data tersebut. Saya tidak akan terlalu tertarik jika masalah penggunaan dan pengelolaan struktur data diabaikan sama sekali. Saya tidak terlalu peduli dengan masalah yang dipecahkan bersama mereka.

k.stm
sumber
2
Ini subjektif; mendefinisikan "baik". Juga, sementara kami tidak memiliki kebijakan ketat untuk daftar pertanyaan, ada ketidaksukaan umum . Harap perhatikan juga ini dan diskusi ini ; Anda mungkin ingin meningkatkan pertanyaan Anda untuk menghindari masalah yang dijelaskan di sana. Jika Anda tidak yakin bagaimana cara meningkatkan pertanyaan Anda, mungkin kami dapat membantu Anda dalam Obrolan Ilmu Komputer ?
Raphael
Pertanyaan terkait .
Raphael
@Raphael Terima kasih. Saya hanya menggunakan kata "baik" dalam judul, dalam pertanyaan saya, saya menentukan apa yang saya inginkan. Walaupun saya sengaja tidak terlalu spesifik, setidaknya harus jelas bahwa fokus saya (seperti yang ditunjukkan) pada keanggunan dan ketelitian matematika . Saya tidak berpikir jawaban ini berteriak untuk daftar buku, karena seharusnya tidak ada terlalu banyak buku yang termasuk dalam kategori itu, - dan bahkan jika demikian, saya tidak percaya bahwa “menjaga kemurnian pertanyaan yang ketat– jawab struktur ”hal yang terjadi di beberapa situs stackexchange di sini - tetapi bukan panggilan saya, saya kira. Saya tidak yakin apakah saya dapat meningkatkan pertanyaan.
k.stm
Juga, saya tidak berpikir "permintaan referensi" sesuai untuk pertanyaan. Setidaknya tidak sesuai dengan uraiannya: Saya juga tidak mencari kertas atau tertarik pada masalah yang spesifik dan sempit. Bahkan, saya cukup terbuka untuk apa konten yang dibahas, lihat kalimat kedua saya. Apakah boleh jika saya menghapus tag lagi? Mungkin saya bisa dan harus mempersempit algoritma seperti apa yang akan saya isi?
k.stm
2
Mungkin Anda harus memeriksa semantik denotasi dan verifikasi program.
Yuval Filmus

Jawaban:

7

Hendrik Lenstra menulis pada tahun 1992 :

Meskipun, dari sudut pandang matematika yang ketat, diinginkan bahwa saya mendefinisikan apa yang saya maksud dengan suatu algoritma dan waktu berjalannya, saya tidak akan melakukannya. Alasan utama saya adalah saya tidak tahu definisi ini sendiri. Lebih buruk lagi, saya tidak pernah melihat perlakuan terhadap teori yang tepat yang tepat, elegan, dan nyaman untuk diajak bekerja sama. Adalah perusahaan yang patut dipuji untuk mengisi kesenjangan yang tampak dalam literatur.

Saya tidak tahu apakah ada kemajuan yang telah dibuat sejak itu, atau apakah ini bahkan dianggap sebagai "celah" oleh konsensus. Tetapi intinya tetap bahwa setidaknya beberapa matematikawan terkemuka telah tidak puas dengan kerasnya matematika dari derivasi algoritma. Jadi, mungkin tidak ada buku dengan tingkat formalisme yang diinginkan OP.

Tumpukan perspektif praktis yang kita miliki karena Knuth, Gries , Stepanov, dan lainnya dimaksudkan untuk membantu programmer lebih dari matematika dan dengan demikian tidak dapat dihindarkan karena kekakuan dan panjang pada subjektivitas.

Meskipun demikian, karya Stepanov secara luas diakui di Silicon Valley sebagai salah satu upaya terbaik untuk sintesis ilmiah.

Dalam Elements of Programming , Alexander Stepanov dan Paul McJones berusaha untuk meletakkan dasar aljabar abstrak dari algoritma. Buku ini dimulai dengan definisi aksioma yang agak informal yang diakui secara informal tentang entitas, nilai dan atributnya, tetapi dalam 288 halaman berkembang secara deduktif melalui serangkaian lemma ke dasar-dasar Perpustakaan Templat Standar.

TOC, kata pengantar dan bab contoh tentang Transformasi dan Orbits mereka dapat ditemukan di sini , dan kuliah pengantar di sini .

Buku Stepanov yang lebih baru dan santai, Dari Matematika ke Pemrograman Generik , lebih terstruktur dengan peta jalan sejarah matematika, membangun dari perkalian Mesir ke monoids, semi-grup, dan teorema Lagrange, akhirnya mengembangkan struktur data modern dengan iterator dan algoritma yang digunakan dalam STL.


sumber
?!? "Saat ini tidak ada derivasi matematis yang tepat, elegan, dan nyaman dari konsep algoritma ..." bagaimana dengan mesin Turing!
vzn
1
Lenstra memang membahas mesin-mesin Turing dalam makalah yang tertaut, tetapi saya pikir idenya adalah mereka tidak menyediakan analisis aljabar lengkap. Kutipan ini cukup banyak kata demi kata, termasuk bagian "celah", jika Anda ingin membacanya sendiri. Saya akan mengedit posting untuk menghapus "konsensus" yang disarankan, kalau-kalau harus dianggap dapat diperdebatkan.
ofc am / sadar Anda mengutip Lenstra tetapi Anda dapat menambahkan kutipan atau blockquote yang lebih panjang dari pernyataannya yang luar biasa / dapat diperdebatkan / dipertanyakan
vzn
berpikir bahwa mesin Turing tidak dapat diturunkan , sebaliknya mereka membentuk aksioma sistem komputasi (ala tesis Gereja-Turing ). itu semua analisis Lenstras dan CS secara umum yang berasal dari aksioma keberadaan TM.
vzn
1
@Raphael, jika ibu mengatakan itu akan menjadi "usaha yang patut dipuji" untuk membersihkan kamar saya dengan benar, inti dari pidatonya adalah "jangan repot-repot membersihkan kamar Anda." Apakah saya salah paham, atau Anda salah paham?
7

Saya pikir buku yang Anda gambarkan memiliki nama. Itu ada dalam tujuh volume, hanya tiga dan setengahnya telah diterbitkan. Itu disebut The Art of Computer Programming , (TAOCP) dan ditulis oleh Donald Knuth.

Mungkin dia kadang-kadang akan menjelaskan aplikasi. Tetapi Anda selalu dapat melewati itu, dan saya ragu itu membuat banyak konten. Anda seharusnya tidak terlalu kecewa dengan matematika.

babou
sumber
Saya khawatir jawaban ini akan muncul. Saya terpaksa melihatnya dan itu tidak cocok untuk saya. "Kamu seharusnya tidak terlalu kecewa dengan matematika." - mungkin, tetapi Knuth juga tampaknya tidak mendefinisikan hal-hal, tetapi dia agak memperkenalkannya secara informal, menjelaskannya. Hebat untuk menyampaikan gagasan, bukan yang saya harapkan dari matematika.
k.stm
Mungkin Anda dapat berkontribusi pada bidang ini dengan menerbitkan versi karyanya yang secara matematis dikaburkan. Tetapi jika apa yang menarik bagi Anda adalah "transisi mulus dari matematika ke algoritma", topik yang lebih baik untuk Anda adalah tipe teori. Hubungan antara matematika dan algoritma masih menjadi topik penelitian.
babou
1
NB Jika Anda "takut jawaban ini akan muncul", Anda seharusnya mengatakan demikian dalam pertanyaan Anda karena ini adalah salah satu buku referensi utama. Pertanyaan yang lengkap dan terdokumentasi mendapatkan jawaban yang lebih baik.
babou
Itu hanya datang kepada saya setelah mengajukan pertanyaan, ketika saya jauh dari komputer saya. Komentar saya tentang buku Knuth seharusnya tidak diambil dengan cara yang merendahkan (itulah yang saya pikir Anda telah mengambilnya untuk komentar "menerbitkan versi matematika yang dikaburkan") - yang mungkin seperti di samping penistaan ​​agama, mungkin. Caranya saja bukan apa yang saya cari. Mungkin tidak ada yang seperti yang saya bayangkan di luar sana ...
k.stm
2
@ k.stm Nah, lupakan hal kebingungan yang merupakan keseluruhan topik itu sendiri. Intinya, saya percaya bahwa algoritmik bukan matematika (belum?). Mungkin Anda bisa mendapatkan formalisasi, tetapi cenderung berupa penyandian sederhana yang kehilangan substansi, dengan sedikit manfaat. Itu tergantung pada topiknya. Ini mungkin jauh kurang benar untuk teori automata, yang memang memiliki algoritma yang signifikan. Intinya adalah bahwa mengidentifikasi secara memadai sifat matematika abstrak struktur tidak jelas. Ini masalah pemahaman, bukan formalisasi, dan itu butuh bertahun-tahun. Anggap saja seperti fisika
babou