Bir algoritma ansiklopedisi var mı? [kapalı]


34

Matematik El Kitabına benzer bir algoritma ansiklopedisi var mı ? Bir yerde çok sayıda mevcut olması yararlı görünüyor. Bilgisayar Programlama Sanatının iyi bir kaynak olarak kabul edildiğini biliyorum, ancak öğretici kadar çok ansiklopedi görünmüyor.

Moderatör Notu

Bazı açıklamalar ve bağlamlar sağlayan uzun cevaplar arıyoruz. Sadece bir kitap listelemeyin: lütfen neden bir kitap veya kaynak önerdiğinizi açıklayın . Hiçbir şeyi açıklamayan cevaplar silinecek. Daha fazla bilgi için bkz. İyi Öznel, Kötü Öznel .



Küçük bir Googling bu soruyu cevaplamak için uzun bir yol kat ederdi. En azından, daha odaklanmış bir soru sormak için kullanabileceğiniz iyi adayların bir listesini sağlayacaktır.
Caleb

Yanıtlar:


41

Aradığın şeyin bu olup olmadığından emin değilim ama NIST'in Algoritma ve Veri Yapıları Sözlüğü var . Veri yapıları ve algoritmalar için oldukça kapsamlı bir sözlüktür (doh) ve genellikle daha önce hiç duymadığım bir şey bulduğumda bakmak için iyi bir yer.


Cevabınız tam olarak aradığım şey. Özgür olmak için ekstra puan.
Dünya Mühendisi,

Komik bir şey, bir son birkaç gündür NIST BABALAR sonraki duyuruya kadar kapalı çünkü ABD hükümetinin kapatma! Ve sonra binlerce geliştirici bir kerede çığlık duyduğunda ...
haylem

11

Skiena kitabı ayrıca iyi bir referans: http://www.algorist.com/

Kitap, farklı problem alanları (veri yapıları, arama / sıralama, grafik problemleri, kombinasyonlar / permütasyonlar / sezgisel taramalar) ve hatta P-NP-tamamlanma problemleri gibi konulardaki her şeyi kapsar.

Kitabın bu soru ile ilgili özellikle ilgili bölümü ~ 70-75 farklı algoritmaların bir kataloğu, genellikle ihtiyaç duydukları girdi tipleri, belirli bir algoritmanın çözdüğü sorunun genel tanımı ve özel uygulama örnekleridir (örneğin, son eki ağaçları bölümünde, denemelerin kullanımı ve alt dize ve aramaya uygulanabilirliği tartışılmaktadır). Mümkünse, yazar ayrıca çeşitli ortak diller için mevcut uygulamaları tanımlamaktadır (c, c ++, Java ve diğerleri).


Bu düşünebildiğim bir algoritma ansiklopedisine en yakın şey. Mükemmel kitap!
Charalambos Paschalides

8

Bilgisayar Programlarının Yapısı ve Yorumlanması ve Bilgisayar Programcılığı Sanatı, aradıklarını gördüğüm en yakınlarıdır.

SICP, ortak veri yapıları ve algoritmaları ile yürür. Ansiklopedik olmasa da, sınırlı miktarda alanda geniş bir alanı kaplamak çok iyidir.

Bilgisayar Programcılığı Sanatı Sanatı hakkında henüz söylenmemiş. Aldığınız zaman dikkatli olun, belirli bir konu için konuya gidebilirsiniz ve saatler sonra kapaktan sona doğru bir cilt okuduğunuzu fark edebilirsiniz. Programlamayı gerçekten bir üst seviyeye çıkarmak için harika bir yol.


5
SICP harika bir kitap, ancak "algoritmaların bir ansiklopedisi" için arayan birinin makul bir öneri olduğunu sanmıyorum. SICP böyle bir şey olmaya çalışmıyor. Dahası, OP, ACP'nin "öğretici kadar ansiklopedik görünmediğini" belirtti, bu yüzden SICP'nin aradığı şey olmadığı açıkça anlaşılmalıdır .
Caleb

Harika kitap, ama ansiklopedik değil.
haylem

Eminim bu ansiklopedik olmadığını ama iyi bir algoritma turu verdiğini söyledim. "Ansiklopedik olmasa da, sınırlı miktarda alanda geniş bir alanı kaplamak çok iyidir." Evet ben de öyle dedim.
Michael Brown

8

Cormen, Leiserson, Rivest, Stein - "Algoritmalara Giriş"

Genelde CLRS olarak bilinen algoritmalara giriş, çok sayıda üniversitedeki standart algoritmalar ders kitabıdır. Sıralama, arama, grafik teorisi ve temel sayısal hesaplama dahil olmak üzere çeşitli uygulamalar için bir dizi algoritmayı kapsar. Ayrıca Big O, Big Omega ve Big Theta notasyonlarının detaylı bir tartışmasını da içerir. Yaygın bir eleştiri, yeni algoritmalar tasarlamaya gerçekten hazırlanmadığı, ancak bir ansiklopedi veya algoritmalar sözlüğü olduğu için, fazlasıyla yeterli olmasıdır.

Ayrıca CLRS'nin hangi algoritmanın ne zaman kullanılacağı konusunda tavsiyede bulunduğunu ve genel bir algoritma ve veri yapısı indeksi sunmadığını da belirtmeliyim. Tamamlamak istediğiniz bir işiniz olduğunda ve bu konuda en iyi nasıl devam edeceğiniz konusunda tavsiyelerde bulunmak yararlıdır. Yaptığınız şeyi nasıl yapmak istediğinizi bilmek için daha iyi kaynaklar vardır ve sadece sözde koda ihtiyacınız vardır.

- yorumlar @quanticle, aşağıda


4
Cevabınızı, bu kitabın ne olduğunu ve bu sorunun amacını karşıladığını içerecek şekilde genişletebilir misiniz?

2
Algoritmalarına Giriş daha yaygın CLRS olarak bilinen, standart algoritmaları üniversiteler çok sayıda ders kitabı olduğunu. Sıralama, arama, grafik teorisi ve temel sayısal hesaplama dahil olmak üzere çeşitli uygulamalar için bir dizi algoritmayı kapsar. Ayrıca Big O, Big Omega ve Big Theta notasyonlarının detaylı bir tartışmasını da içerir. Yaygın bir eleştiri, yeni algoritmalar tasarlamaya gerçekten hazırlanmadığı , ancak bir ansiklopedi veya algoritmalar sözlüğü olduğu için, fazlasıyla yeterli olmasıdır.
11:11

1
Ayrıca CLRS'nin hangi algoritmanın ne zaman kullanılacağı konusunda tavsiyede bulunduğunu ve genel bir algoritma ve veri yapısı indeksi sunmadığını da belirtmeliyim. Tamamlamak istediğiniz bir işiniz olduğunda ve bu konuda en iyi nasıl devam edeceğiniz konusunda tavsiyelerde bulunmak yararlıdır. Yaptığınız şeyi nasıl yapmak istediğinizi bilmek için daha iyi kaynaklar vardır ve sadece sözde koda ihtiyacınız vardır.
miktar

Dmitry'a ipucu: Yanıtınızı% 1000 daha harika hale getirmek için @ quanticle'ın yorumlarını cevabın gövdesine kopyalamanız yeterli.
saat

5

Fizik yüksek lisans okulunda C'deki Nümerik Tarifler'den gerçekten çok zevk aldım. Elbette, tüm algoritmaları kapsamıyor, fakat bilimlerde inanılmaz derecede faydalı olan birçok kişinin mükemmel açıklamalarını veriyor:

http://www.nr.com/

Kitap nasıl çözüleceğini kapsar:

Doğrusal denklemler

  1. Doğrusal Denklemler
  2. İnterpolasyon ve Ekstrapolasyon
  3. Fonksiyonların entegrasyonu
  4. İşlev değerlendirmesi
  5. Gama fonksiyonu, beta fonksiyonu, faktörler dahil olmak üzere özel fonksiyonlar
  6. Rastgele sayılar - bunun ne anlama geldiğinin iyi bir açıklaması dahil
  7. Sıralama algoritmaları
  8. Kökler ve doğrusal olmayan denklemler bulma
  9. Küçültme ve fonksiyonların maksimize edilmesi
  10. Eigensystems
  11. Hızlı Fourier Dönüşümleri
  12. FFT ve spektral analiz
  13. Verilerin istatistiksel açıklaması
  14. Verilerin modellenmesi
  15. Adi diferansiyel denklemlerin integrali
  16. İki nokta sınır problemi
  17. İntegral denklemler ve ters sınır teorisi
  18. Kısmi Diferansiyel denklemler
  19. CRC kontrolleri ve veri sıkıştırma gibi "Diğer" algoritmalar

Bu yüzden hepsi matematiksel, bilim adamları için olduğu kadar oyunlar için fizik motorları da tasarlayan insanlar için iyi. Ve sadece algoritmaları vermekle kalmaz aynı zamanda arkasındaki nedenleri açık bir şekilde kullanabilmenizi sağlar. Tipik kodlama metniniz değil, tam olarak ihtiyacınız olduğunda ihtiyacınız olan şey.

Veri analizi için çoklu boyutlarda (bir amip yürüyüşü) yokuş aşağı simpleks yöntemini kullanırken çok güvenmiştim. Hala üzerinde kalem izlerim var. Ahh, iyi günler!


1
Cevabınızı, bu kitabın ne olduğunu ve bu sorunun amacını karşıladığını içerecek şekilde genişletebilir misiniz?

4

Bir "algoritmalar ansiklopedisi" arıyorsanız , Algoritma Ansiklopedisi'nde yanlış gitmek zor olurdu . Okuduğumu söyleyemem (399 dolarda, bir ansiklopedi için ucuz ), ancak bulanıklık umut verici görünüyor:

Algoritma Ansiklopedisi, son on yıldaki yüksek etkili çözümler de dahil olmak üzere, öğrenciler ve araştırmacılar için önemli algoritmik sorunlara kapsamlı bir dizi çözüm sunmaktadır.

Birisi zaten Steven Skiena'nın Algoritması Tasarım El Kitabı'nı alıntıladı , ancak henüz Skiena'nın ilgili web sitesi olan The Stony Brook Algorithm Repository'den bahsettiğini sanmıyorum . Web sitesinden:

Bu WWW sayfasının, birleşik algoritmalardaki en temel sorunların yetmişinden fazlası için kapsamlı bir algoritma uygulamaları koleksiyonu olarak sunulması amaçlanmıştır.

Kitap, bilinen algoritmaların bir kataloğundan ibaret değil; Aynı zamanda, probleminize ve durumunuza en uygun çözümü bulmak için hangi algoritmanın kullanılacağına karar vermeyle ilgili bir tür öğretici (kelimenin en iyi anlamında). Öte yandan, depo, doğada daha fazla ansiklopediktir. Her algoritmanın kendiniz nasıl uygulanacağı hakkında çok fazla ayrıntı içermez, ancak algoritmanın ne yaptığını ve genel olarak nasıl çalıştığını, kitaptan sıkça okunan terimler okur ve her biri için gerçek uygulamalara bağlantılar sağlar. algoritması.


2

Rosetta Kod Wiki birçok dilde yaygın algoritmaları uygulamalarından büyük koleksiyonu. Tamamen akademik değil, ama çevirmek için oldukça bilgilendirici ve eğlenceli.

Kendi sözleriyle:

Rosetta Kod bir programlama olduğu krestomati sitesi. Buradaki düşünce, aynı göreve mümkün olduğu kadar farklı dilde çözümler sunmak, dillerin nasıl benzer ve farklı olduğunu göstermek ve bir temeli olan bir kişiye, başka bir öğrenmede soruna yaklaşırken yardımcı olmaktır.

Diğer kaynaklara (NIST Algoritma ve Veri Yapıları Sözlüğü gibi) diğer avantajı , farklı diller için çeşitli uygulamalara bakmanıza izin vermesidir. Çeşitli amaçlar için yararlı olabilir (etkililiğin karşılaştırılması, bir dilin veya başka bir dilde fizibilitenin doğrulanması, vb.).

Örneğin, QuickSort sayfası (2013-10-07 itibariyle) en az 89 uygulama sunar.


Neler yaptığını ve neden soruyu soruyu yanıtlarken bunu tavsiye edersiniz? Yığın Borsası'nda "yalnızca bağlantı yanıtları" oldukça açık değildir
gnat

@gnat: Genellikle aynı fikirde olur, ancak "kitap sadece ref" yanıtından ne kadar farklıdır? Ayrıca, "birkaç dilde ortak algoritmaların uygulamalarının toplanması" nın ne yaptığını kapsadığını düşünüyorum. Aynı zamanda, eğer yeterince yakın bakarsanız, kabul edilen cevap kadar ayrıntılı (ya da az), :)
haylem

@gnat: Neyse, biraz daha ekledi.
haylem

@AnnaLear: üzgünüm, düzenlemenizin gönderimimi kısa ve takip etmek için mükemmel bir haklı olduğunu düşünüyorum, ancak gnat'ın isteğindeki değişikliklerle ilgili olarak karşılaştırmayı tekrar yapmak uygun görünüyordu.
haylem

0

Konuyla ilgili mükemmel ve zamansız öğretici kitaplar olsa da, böyle bir ansiklopedi bulacağınızı pek sanmıyorum.

  • Matematik konusundaki bir ansiklopedi araştırmanın bin yılını kapsamaktadır. Öte yandan, algoritmalar bir yüzyıl boyunca zar zor çalışılıyor (daha büyük ölçekte konuşularak). Tüm bilgisayar bilimi alanı kimse tarafından zar zor anlaşılıyor ve çoğu şey hala hızla ilerliyor. Şu anda bu konuda bir ansiklopedi olsaydı, sanırım 10-20 yıl içinde% 90'ı pencereden dışarı atabilirsiniz. Ve yarıdan fazla tutmaya değer% 10’un yarısı asır önce basılmıştı. Matematik el kitabının büyük bölümleri bundan sonraki yüz yıl içinde güncel olacak.

  • Matematik saf ve kendi kendine yetendir. Bu, "algoritmalar alanı" için pek geçerli değildir. Aslında bir alan olarak düşünülemez, çünkü bir alan genellikle iyi tanımlanmış bir problem alanında çalışır, algoritmalar ise aslında sadece daha az tanımlanmış bir çözüm alanında çalışır.
    Yani eğer biri algoritmalar üzerinde bir ansiklopedi derleyecekti, eğer gerçekten kapsamlı olmasını istiyorsanız, neyi dahil edeceği belli değil. Grafik teorisi? Lineer Cebir? Sayısal analiz?

IMHO, şu anda bir ansiklopedi rolünü yerine getiren en iyi kaynak, "internet" dir. Bir ansiklopedinin amacı, indekslenmiş, kapsamlı, aranabilir bir bilgi havuzuna sahip olmaktır (bazı konularda). Şahsen, hem bulmak bu listeyi ve bu listeyi oldukça ezici. Ayrıca diğer cevaplarda, sayısız mükemmel algoritma veritabanı birleştirilmiştir.

Bu yüzden, kitaplığınızı dolduran bir ansiklopediden bekleyeceğiniz kadar aynı kalitede bir beklenti beklemeseniz de, bilmek istediğiniz alanın gençliğini telafi etmek için gereken zaman düzeyini elde edersiniz.


0

Mevcut kaynaklara gelince, Wikipedia'nın aradığınıza en yakın şey olduğunu düşünüyorum. Bu amaçla Wikipedia'da daha tanımlanmış bir "algoritma şablonu" oluşturmak faydalı olabilir, ancak bu Vikipedi editörleriyle tartışılacak ve burada değil.

Bilgisayar Programlama Sanatı Üzerine Kısa Bir Not : Tamamlandığında, bir "özet" hacminin bulunmasıdır ve bu şimdi size yardımcı olmasa da, yaklaşık olarak aradığınız şey olabilir. TAOCP kapsadığı şey için ansiklopediktir, ancak henüz tamamlanmadı ve Knuth'un kişiliği, onları ayrıntılı bir şekilde araştırmadıkça şeyleri dahil etmeyecek şekildedir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.