Existe-t-il une encyclopédie d’algorithmes dont le style est similaire à celui du Handbook of Mathematics? Il semble utile d’en avoir un grand nombre à la même place. Je sais que l'art de la programmation informatique est considéré comme une bonne source, mais il ne semble pas tellement encyclopédique qu'instructif.
Note du modérateur
Nous recherchons des réponses longues qui fournissent des explications et un contexte. Ne vous contentez pas d’énumérer un livre: expliquez pourquoi vous recommandez un livre ou une ressource. Les réponses qui n'expliquent rien seront supprimées. Voir Bon subjectif, Mauvais subjectif pour plus d'informations.
algorithms
Ingénieur du monde
la source
la source
Réponses:
Je ne sais pas si c'est ce que vous cherchez, mais le NIST propose le dictionnaire des algorithmes et des structures de données . C'est un dictionnaire assez complet pour les structures de données et les algorithmes (doh) et un bon endroit pour regarder quand je trouve quelque chose dont je n'avais jamais entendu parler auparavant.
la source
Le livre de Skiena est également une bonne référence: http://www.algorist.com/
Le livre couvre tout, de l’arrière-plan aux différentes problématiques (structures de données, recherche / tri, problèmes de graphes, combinaisons / permutations / heuristiques) et même aux problèmes de problèmes P vs NP-complets.
La partie particulièrement pertinente de l'ouvrage à cette question est un catalogue de ~ 70-75 algorithmes différents, les types d'entrées qu'ils requièrent généralement, la description générale du problème résolu par un algorithme particulier et des exemples spécifiques d'applications La section sur les arborescences de suffixes traite de son utilisation des essais et de son applicabilité à la sous-chaîne et à la recherche). Dans la mesure du possible, l'auteur identifie également les implémentations existantes pour différents langages courants (c, c ++, Java et quelques autres).
la source
La structure et l’interprétation des programmes informatiques et l’ art de la programmation informatique sont au plus près de ce que vous recherchez.
SICP parcourt des structures de données et des algorithmes communs. Bien que ce ne soit pas une encyclodépédie, il est plutôt bon de couvrir une large étendue de territoire dans un espace limité.
Que peut-on dire de l'art de la programmation informatique qui n'a pas déjà été. Soyez prudent lorsque vous le prenez en main, vous pouvez y aller pour un sujet spécifique et des heures plus tard, réalisez que vous avez lu un volume d'un bout à l'autre. C'est un excellent moyen de faire passer votre programmation au niveau supérieur.
la source
Cormen, Leiserson, Rivest, Stein - "Intoduction Aux Algorithmes"
la source
Lors de mes études supérieures en physique, j'ai vraiment apprécié Numericical Recipes in C. Il ne couvre pas tous les algorithmes, bien sûr, mais fournit d'excellentes explications sur de nombreux outils incroyablement utiles en sciences:
http://www.nr.com/
Le livre explique comment résoudre:
Équations linéaires
Tout est donc très mathématique, bon pour les scientifiques ainsi que pour les concepteurs de moteurs physiques pour les jeux. Et cela ne donne pas seulement les algorithmes mais explique le pourquoi derrière eux afin que vous puissiez les utiliser correctement. Ce n'est pas votre texte de codage typique, mais exactement ce dont vous avez besoin quand vous en avez besoin.
Je me suis beaucoup inspiré de cette méthode lors de l’utilisation de la méthode de descente simplex en multidimensions (promenade d’amibe) pour analyser les données. Il y a toujours mes marques de crayon. Ahh, bons moments!
la source
Si vous recherchez une "encyclopédie d'algorithmes", il vous sera difficile de vous tromper avec Encyclopedia of Algorithms . Je ne peux pas dire que je l'ai lu (à 399 $, c'est bon marché pour une encyclopédie ), mais le texte de présentation semble prometteur:
Quelqu'un a déjà cité Steven Skiena manuel de conception des algorithmes de, mais je ne pense pas que quiconque ait encore mentionné le site Web associé de Skiena, le référentiel d'algorithmes de Stony Brook . Du site web:
Le livre est plus qu'un catalogue d'algorithmes connus; c'est aussi une sorte de tutoriel (dans le meilleur sens du mot) sur la façon de choisir l'algorithme à utiliser pour répondre au mieux à votre problème et à votre situation. Le référentiel, en revanche, est de nature plus encyclopédique. Il ne contient pas nécessairement beaucoup de détails sur la façon de mettre en œuvre chaque algorithme vous-même, mais explique le fonctionnement de cet algorithme et son fonctionnement en général, ainsi que des termes lisibles tirés du livre, et fournit des liens vers les implémentations réelles de chaque algorithme.
la source
Le Wiki Rosetta Code est un excellent ensemble d’implémentations d’algorithmes communs dans plusieurs langues. Ce n'est pas tout à fait académique, mais assez instructif et amusant à parcourir.
Dans leurs propres mots:
Son principal avantage par rapport aux autres ressources (comme le dictionnaire NIST des algorithmes et des structures de données). ) est qu’il vous permet d’examiner plusieurs implémentations pour différentes langues. Ce qui peut être utile à différentes fins (comparer l'expressivité, vérifier la faisabilité dans une langue ou une autre, etc.).
Par exemple, la page QuickSort fournit (à compter du 2013-10-07) au moins 89 mises en œuvre.
la source
Bien qu'il existe d'excellents livres intemporels et instructifs sur le sujet, je pense à peine, vous trouverez une telle encyclopédie.
Une encyclopédie sur les mathématiques couvre des millénaires de recherche. Les algorithmes par contre sont à peine étudiés depuis un siècle (parlant à plus grande échelle). Tout le domaine de l'informatique est à peine compris par quiconque et la plupart des choses avancent encore rapidement. S'il existait actuellement une encyclopédie sur ce sujet, je suppose que vous pourriez en jeter 90% par la fenêtre dans 10 à 20 ans. Et sur les 10% de valeur, plus de la moitié ont été imprimés il y a un demi-siècle. Les vastes parties du manuel de mathématiques seront à jour dans cent ans.
Les mathématiques sont pures et autonomes. Cela s'applique difficilement au "domaine des algorithmes". En réalité, on peut difficilement le considérer comme un champ, car un champ opère généralement sur un espace de problème bien défini, alors que les algorithmes ne fonctionnent en réalité que dans un espace de solution moins bien défini.
Donc, si on devait compiler une encyclopédie sur les algorithmes, on ne sait pas vraiment quoi inclure, si vous voulez vraiment que ce soit complet. La théorie des graphes? Algèbre linéaire? Analyse numérique?
À mon humble avis, la meilleure ressource qui remplisse le rôle d’encyclopédie est «Internet» (voici). Le but d’une encyclopédie est d’avoir un référentiel de connaissances indexé, complet et interrogeable (sur certains sujets). Personnellement, je trouve à la fois cette liste et cette liste assez accablantes. Également dans d'autres réponses, de nombreuses bases de données d'algorithmes excellentes ont été liées.
Ainsi, bien que vous ne puissiez pas espérer obtenir le même niveau de qualité que celui d’une encyclopédie qui remplit votre bibliothèque, vous obtenez le niveau de rapidité requis pour compenser la jeunesse du domaine que vous souhaitez connaître.
la source
En ce qui concerne les sources existantes, je pense que Wikipedia est ce qui se rapproche le plus de ce que vous recherchez. À cet effet, il pourrait être utile de créer un "modèle d’algorithme" plus défini sur Wikipedia à cette fin, mais c’est quelque chose qui doit être discuté avec les rédacteurs de Wikipedia et pas ici.
Une petite note sur l’art de la programmation informatique : une fois terminé, vous devez inclure un volume "résumé" et, même si cela ne vous aidera pas pour le moment, il se peut qu’il corresponde à peu près à ce que vous recherchez. TAOCP est encyclopédique pour ce qu'il couvre, mais il n'est pas encore complet et la personnalité de Knuth est telle qu'il n'inclura pas de choses sans en avoir fait une recherche exhaustive.
la source