Apakah ada ensiklopedia algoritma? [Tutup]

34

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.

Insinyur Dunia
sumber
Sedikit Googling akan membantu menjawab pertanyaan ini. Paling tidak, itu akan memberikan daftar kandidat yang baik yang kemudian dapat Anda gunakan untuk mengajukan pertanyaan yang lebih fokus.
Caleb

Jawaban:

41

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.

Vitor Py
sumber
Jawaban Anda persis seperti apa yang saya cari. Poin ekstra untuk bebas.
Insinyur Dunia
Lucunya, selama beberapa hari terakhir NAD DADS ditutup hingga pemberitahuan lebih lanjut karena penutupan Pemerintah AS! Dan ketika mendengar ribuan pengembang berteriak sekaligus ...
haylem
11

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.)

Joe
sumber
Itulah yang paling dekat dengan ensiklopedia algoritma yang dapat saya pikirkan. Buku yang luar biasa!
Charalambos Paschalides
8

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.

Michael Brown
sumber
5
SICP adalah buku yang luar biasa, tetapi saya pikir itu bukan saran yang masuk akal bagi seseorang yang mencari "sebuah ensiklopedia algoritma." SICP tidak berusaha untuk menjadi seperti itu. Lebih jauh, OP menulis bahwa ACP "tampaknya tidak terlalu ensiklopedis," jadi harus jelas bahwa SICP bukanlah yang dia cari.
Caleb
Buku bagus, tetapi tidak ensiklopedia.
haylem
Cukup yakin saya mengatakan bahwa itu bukan ensiklopedis tetapi memberikan tur algoritma yang baik. "Meskipun ini bukan ensiklodedik, itu cukup bagus untuk menutupi wilayah yang luas dalam ruang terbatas." Ya itu yang saya katakan.
Michael Brown
8

Cormen, Leiserson, Rivest, Stein - "Intoduction To Algorithms"

Pengantar Algoritma, lebih dikenal sebagai CLRS, adalah buku teks algoritma standar di sejumlah besar universitas. Ini mencakup berbagai algoritma untuk berbagai aplikasi, termasuk penyortiran, pencarian, teori grafik dan perhitungan numerik dasar. Ini juga mencakup diskusi rinci notasi Big O, Big Omega dan Big Theta. Kritik umum adalah bahwa itu tidak benar-benar mempersiapkan satu untuk merancang algoritma baru, tetapi sebagai ensiklopedia atau kamus algoritma, itu lebih dari cukup.

Saya juga harus mencatat bahwa CLRS juga memberikan saran tentang algoritma mana yang harus digunakan kapan, dan tidak hanya menyajikan indeks umum dari algoritma dan struktur data. Ini berguna ketika Anda memiliki tugas yang ingin Anda capai dan ingin saran tentang cara terbaik untuk melakukannya. Ada sumber daya yang lebih baik ketika Anda tahu bagaimana Anda ingin melakukan apa yang Anda lakukan dan Anda hanya perlu pseudo-code.

- dari komentar oleh @quanticle, di bawah ini

Dmitry Matveev
sumber
4
Bisakah Anda memperluas jawaban Anda dengan memasukkan bagaimana buku ini memenuhi tujuan pertanyaan ini?
2
Pengantar Algoritma , lebih dikenal sebagai CLRS, adalah buku teks algoritma standar di sejumlah besar universitas. Ini mencakup berbagai algoritma untuk berbagai aplikasi, termasuk penyortiran, pencarian, teori grafik dan perhitungan numerik dasar. Ini juga mencakup diskusi rinci notasi Big O, Big Omega dan Big Theta. Kritik umum adalah bahwa itu tidak benar-benar mempersiapkan satu untuk merancang algoritma baru , tetapi sebagai ensiklopedia atau kamus algoritma, itu lebih dari cukup.
quanticle
1
Saya juga harus mencatat bahwa CLRS juga memberikan saran tentang algoritma yang digunakan saat, dan tidak hanya menyajikan indeks umum algoritma dan struktur data. Ini berguna ketika Anda memiliki tugas yang ingin Anda capai dan ingin saran tentang cara terbaik untuk melakukannya. Ada sumber daya yang lebih baik ketika Anda tahu bagaimana Anda ingin melakukan apa yang Anda lakukan dan Anda hanya perlu pseudo-code.
quanticle
Petunjuk untuk Dmitry: cukup salin komentar @ quanticle ke badan jawaban untuk membuat jawaban Anda 1.000% lebih dahsyat.
nohat
5

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

  1. Persamaan linear
  2. Interpolasi dan Ekstrapolasi
  3. Integrasi fungsi
  4. Evaluasi Fungsi
  5. Fungsi khusus termasuk fungsi gamma, fungsi beta, faktorial
  6. Angka acak - termasuk penjelasan yang baik tentang apa artinya ini
  7. Algoritma penyortiran
  8. Menemukan persamaan akar dan nonlinier
  9. Minimalisasi dan maksimalisasi fungsi
  10. Sistem Eigens
  11. Transformasi Fourier Cepat
  12. FFT dan analisis spektral
  13. Deskripsi data statistik
  14. Pemodelan data
  15. Integratoin dari persamaan diferensial biasa
  16. Masalah batas dua titik
  17. Persamaan integral dan teori batas terbalik
  18. Persamaan Diferensial Parsial
  19. Algoritma "Lainnya" seperti pemeriksaan CRC dan kompresi data

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!

Daniel Williams PhD
sumber
1
Bisakah Anda memperluas jawaban Anda dengan memasukkan bagaimana buku ini memenuhi tujuan pertanyaan ini?
4

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:

Encyclopedia of Algorithms menyediakan serangkaian solusi komprehensif untuk masalah algoritme penting bagi siswa dan peneliti, termasuk solusi berdampak tinggi dari dekade terakhir.

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:

Halaman WWW ini dimaksudkan untuk berfungsi sebagai kumpulan implementasi algoritma yang komprehensif untuk lebih dari tujuh puluh masalah paling mendasar dalam algoritma kombinatorial.

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

Caleb
sumber
2

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:

Rosetta Code adalah situs pemrograman chrestomathy . Idenya adalah untuk menyajikan solusi untuk tugas yang sama dalam berbagai bahasa sebanyak mungkin, untuk menunjukkan bagaimana bahasa serupa dan berbeda, dan untuk membantu seseorang dengan landasan dalam satu pendekatan ke masalah dalam belajar yang lain.

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.

haylem
sumber
maukah Anda menjelaskan lebih lanjut tentang apa yang dilakukannya dan mengapa Anda merekomendasikannya untuk menjawab pertanyaan yang diajukan? "Jawaban khusus tautan" tidak diterima di Stack Exchange
agas
@gnat: Biasanya akan setuju, tapi apa bedanya dengan jawaban "hanya buku"? Juga, saya pikir "kumpulan implementasi algoritma umum dalam beberapa bahasa" mencakup cukup banyak apa yang dilakukannya. Ini juga (atau sesedikit) sedetail jawaban yang diterima, jika Anda melihat cukup dekat :)
haylem
@gnat: lagian, tambah lagi.
haylem
@AnnaLear: maaf, saya pikir hasil edit Anda sangat tepat untuk menjaga postingan saya tetap pendek dan sesuai jadwal, tapi sepertinya cocok untuk mengembalikan perbandingan sehubungan dengan perubahan atas permintaan nyamuk.
haylem
0

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.

back2dos
sumber
0

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.

sangat bodoh
sumber