Apakah ada ensiklopedia algoritme yang serupa gaya dengan Buku Pegangan Matematika? Tampaknya bermanfaat untuk memiliki sejumlah besar tersedia di satu tempat. Saya tahu Seni Pemrograman Komputer dianggap sebagai sumber yang baik tetapi tidak terlihat seperti ensiklopedis.
Catatan Moderator
Kami mencari jawaban panjang yang memberikan penjelasan dan konteks. Jangan hanya daftar buku: tolong jelaskan mengapa Anda merekomendasikan buku atau sumber daya. Jawaban yang tidak menjelaskan apa pun akan dihapus. Lihat Subjektif Bagus, Subjektif Buruk untuk informasi lebih lanjut.
algorithms
Insinyur Dunia
sumber
sumber
Jawaban:
Saya tidak yakin apakah ini yang Anda cari, tetapi NIST memiliki Kamus Algoritma dan Struktur Data . Ini adalah kamus yang cukup komprehensif untuk struktur data dan algoritma (doh) dan biasanya tempat yang bagus untuk dilihat ketika saya menemukan sesuatu yang belum pernah saya dengar sebelumnya.
sumber
Buku Skiena adalah referensi yang bagus juga: http://www.algorist.com/
Buku ini mencakup segala sesuatu mulai dari latar belakang hingga area masalah yang berbeda (struktur data, pencarian / penyortiran, masalah grafik, kombinasi / permutasi / heuristik) dan bahkan masalah P vs masalah NP-complete.
Bagian yang sangat relevan dari buku ini untuk pertanyaan ini adalah katalog ~ 70-75 algoritma berbeda, jenis input yang umumnya mereka butuhkan, deskripsi keseluruhan masalah yang dipecahkan oleh algoritma tertentu, dan contoh spesifik aplikasi (misalnya, bagian tentang pohon sufiks membahas penggunaan percobaannya, dan penerapannya pada substring dan pencarian). Jika memungkinkan penulis juga mengidentifikasi implementasi yang ada untuk berbagai bahasa umum (c, c ++, Java, dan beberapa lainnya.)
sumber
Struktur dan Interpretasi Program Komputer dan Seni Pemrograman Komputer adalah yang paling dekat yang pernah saya lihat dengan apa yang Anda cari.
SICP berjalan melalui struktur data dan algoritma umum. Meskipun ini bukan ensiklodedik, itu cukup bagus untuk menutupi wilayah yang luas dalam ruang terbatas.
Apa yang bisa dikatakan tentang Seni Pemrograman Komputer yang belum. Berhati-hatilah saat mengambilnya, Anda mungkin membahasnya untuk topik tertentu dan beberapa jam kemudian sadar bahwa Anda telah membaca volume dari sampul depan. Ini cara yang bagus untuk benar-benar membawa pemrograman Anda ke tingkat selanjutnya.
sumber
Cormen, Leiserson, Rivest, Stein - "Intoduction To Algorithms"
sumber
Di sekolah pascasarjana dalam Fisika saya benar-benar menikmati Numerical Recipes di C. Itu tidak mencakup semua algoritma, tentu saja, tetapi memberikan penjelasan luar biasa dari banyak hal yang sangat berguna dalam ilmu:
http://www.nr.com/
Buku ini membahas cara memecahkan:
Persamaan linear
Jadi itu semua sangat matematis, baik untuk para ilmuwan maupun bagi orang yang merancang mesin fisika untuk permainan. Dan itu tidak hanya memberikan algoritma tetapi menjelaskan mengapa di belakangnya sehingga Anda dapat menggunakannya dengan benar. Bukan teks pengkodean khas Anda, tetapi persis apa yang Anda butuhkan saat Anda membutuhkannya.
Saya sangat bergantung padanya ketika menggunakan metode simpleks menurun di multidimensi (amuba walk) untuk analisis data. Masih ada bekas pensil di dalamnya. Ahh, masa-masa yang menyenangkan!
sumber
Jika Anda mencari "ensiklopedia algoritma," akan sulit untuk salah dengan Encyclopedia of Algorithms . Saya tidak bisa mengatakan bahwa saya sudah membacanya (seharga $ 399, murah untuk ensiklopedia ), tetapi uraiannya tampak menjanjikan:
Seseorang sudah mengutip buku The Algorithm Design Manual karya Steven Skiena , tapi saya rasa belum ada yang menyebut situs web yang berhubungan dengan Skiena, The Stony Brook Algorithm Repository . Dari situs web:
Buku ini lebih dari sekadar katalog algoritma yang dikenal; itu juga semacam tutorial (dalam arti kata terbaik) tentang cara memutuskan algoritma mana yang paling sesuai dengan masalah dan situasi Anda. Repositori, di sisi lain, lebih bersifat ensiklopedis. Itu tidak selalu berisi banyak detail tentang bagaimana menerapkan sendiri setiap algoritma, tetapi itu menjelaskan apa yang dilakukan oleh algoritma dan cara kerjanya secara umum, istilah yang dapat dibaca sering diambil dari buku, dan menyediakan tautan ke implementasi aktual untuk masing-masing algoritma
sumber
The Rosetta Kode Wiki adalah koleksi besar implementasi algoritma umum dalam beberapa bahasa. Ini tidak sepenuhnya bersifat akademis, tetapi cukup informatif dan menyenangkan.
Dengan kata-kata mereka sendiri:
Keuntungan utamanya dibandingkan sumber daya lain (seperti Kamus Algoritma dan Struktur Data NIST ) adalah memungkinkan Anda untuk melihat beberapa implementasi untuk berbagai bahasa. Yang dapat membantu untuk berbagai tujuan (membandingkan ekspresif, memverifikasi kelayakan dalam bahasa atau lainnya, dll ...).
Misalnya, halaman QuickSort menyediakan (per 2013-10-07) setidaknya 89 implementasi.
sumber
Meskipun ada buku-buku instruktif yang sangat baik dan tidak lekang oleh waktu, saya kira, Anda akan menemukan ensiklopedia semacam itu.
Sebuah ensiklopedia tentang matematika mencakup ribuan tahun penelitian. Algoritma di sisi lain hampir tidak dipelajari selama satu abad (berbicara pada skala yang lebih besar). Seluruh bidang ilmu komputer hampir tidak dipahami oleh siapa pun dan sebagian besar hal masih bergerak cepat. Jika ada ensiklopedia tentang ini sekarang, saya kira Anda bisa membuang 90% ke luar jendela dalam 10-20 tahun. Dan dari nilai 10% menyimpan lebih dari setengah sudah dicetak setengah abad yang lalu. Bagian luas dari buku pegangan matematika akan diperbarui dalam seratus tahun dari sekarang.
Matematika murni dan mandiri. Ini hampir tidak berlaku untuk "bidang algoritma". Ini sebenarnya hampir tidak dapat dianggap sebagai bidang, karena bidang biasanya beroperasi pada ruang masalah yang terdefinisi dengan baik, sementara algoritma sebenarnya hanya beroperasi dalam ruang solusi yang kurang terdefinisi dengan baik.
Jadi, jika seseorang menyusun sebuah ensiklopedia tentang algoritma, itu tidak benar-benar jelas apa yang harus dimasukkan, jika Anda benar-benar ingin itu menjadi komprehensif. Teori grafik? Aljabar linier? Analisis numerik?
IMHO, saat ini sumber daya terbaik yang memenuhi peran ensiklopedia, adalah "internet" (lihat). Inti dari ensiklopedia adalah memiliki repositori pengetahuan yang terindeks, komprehensif, dan dapat dicari (pada beberapa topik). Secara pribadi, saya menemukan daftar ini dan daftar ini cukup besar. Juga di jawaban lain, banyak basis data algoritma yang sangat baik telah ditautkan.
Jadi, meskipun Anda tidak dapat mengharapkan tingkat kualitas yang sama seperti yang Anda harapkan dari sebuah ensiklopedia yang mengisi rak buku Anda, Anda mendapatkan tingkat ketepatan waktu yang diperlukan untuk mengimbangi kaum muda bidang yang ingin Anda ketahui.
sumber
Sejauh sumber yang masih ada, saya pikir Wikipedia adalah hal yang paling dekat dengan apa yang Anda cari. Intinya, mungkin berguna untuk membuat "templat algoritme" yang lebih jelas di Wikipedia untuk tujuan ini, tetapi itu adalah sesuatu untuk didiskusikan dengan editor Wikipedia dan tidak di sini.
Catatan singkat tentang The Art of Computer Programming : ketika sudah selesai itu akan menyertakan volume "ringkasan" dan meskipun itu tidak akan membantu Anda sekarang, mungkin kira-kira apa yang Anda cari. TAOCP adalah ensiklopedis untuk apa yang dicakupnya , tetapi belum lengkap dan kepribadian Knuth sedemikian rupa sehingga dia tidak akan memasukkan hal-hal kecuali dia secara mendalam meneliti mereka.
sumber