Existe-t-il une encyclopédie d'algorithmes? [fermé]


34

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.



Un peu de recherche sur Google aiderait beaucoup à répondre à cette question. À tout le moins, cela fournirait une liste de bons candidats que vous pourriez ensuite utiliser pour poser une question plus ciblée.
Caleb

Réponses:


41

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.


Votre réponse est à peu près exactement ce que je cherche. Des points supplémentaires pour être libre.
Ingénieur mondial

Ce qui est drôle, c’est que ces derniers jours, les DADS du NIST sont fermés jusqu’à nouvel ordre en raison de la fermeture du gouvernement américain! Et quand on a entendu des milliers de développeurs hurler à la fois ...
haylem

11

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


C'est le plus proche d'une encyclopédie d'algorithme que je peux penser. Excellent livre!
Charalambos Paschalides

8

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.


5
SICP est un livre merveilleux, mais je ne pense pas que ce soit une suggestion raisonnable pour quelqu'un qui recherche "une encyclopédie d'algorithmes". Le SICP ne tente pas d’être pareil. En outre, le PO a écrit que ACP "ne semble pas si encyclopédique qu'instructif", de sorte qu'il devrait être clair que le SICP n'est pas ce qu'il ou elle recherche.
Caleb

Grand livre, mais pas encyclopédique.
Hayem

Bien sûr, j'ai dit que ce n'est pas encyclopédique, mais donne une bonne visite des algorithmes. "Bien que ce ne soit pas une encyclodépédie, il est plutôt bon de couvrir une vaste étendue de territoire dans un espace limité." Ouais c'est ce que j'ai dit.
Michael Brown

8

Cormen, Leiserson, Rivest, Stein - "Intoduction Aux Algorithmes"

Introduction aux algorithmes, plus communément appelé CLRS, constitue le manuel d'algorithmes standard d'un grand nombre d'universités. Il couvre une gamme d’algorithmes pour diverses applications, notamment le tri, la recherche, la théorie des graphes et le calcul numérique de base. Il inclut également une discussion détaillée sur les notations Big O, Big Omega et Big Theta. Une critique commune est qu’il ne prépare pas vraiment à la conception de nouveaux algorithmes, mais en tant qu’encyclopédie ou dictionnaire d’algorithmes, il est plus que suffisant.

Je dois également noter que CLRS donne également des conseils sur l'algorithme à utiliser quand et ne présente pas uniquement un index générique d'algorithmes et de structures de données. C'est utile lorsque vous souhaitez accomplir une tâche et que vous souhaitez obtenir des conseils sur la meilleure façon de le faire. Il existe de meilleures ressources pour savoir quand vous savez comment faire ce que vous faites et que vous avez simplement besoin de pseudo-code.

- à partir des commentaires de @quanticle, ci-dessous


4
Pouvez-vous développer votre réponse pour inclure ce qui de ce livre répond à l'objectif de cette question?

2
Introduction aux algorithmes , plus communément appelé CLRS, constitue le manuel d'algorithmes standard d'un grand nombre d'universités. Il couvre une gamme d’algorithmes pour diverses applications, notamment le tri, la recherche, la théorie des graphes et le calcul numérique de base. Il inclut également une discussion détaillée sur les notations Big O, Big Omega et Big Theta. Une critique commune est qu’il ne prépare pas vraiment à la conception de nouveaux algorithmes, mais en tant qu’encyclopédie ou dictionnaire d’algorithmes, il est plus que suffisant.
Quanticle

1
Je dois également noter que CLRS donne également des conseils sur l'algorithme à utiliser quand et ne présente pas uniquement un index générique d'algorithmes et de structures de données. C'est utile lorsque vous souhaitez accomplir une tâche et que vous souhaitez obtenir des conseils sur la meilleure façon de le faire. Il existe de meilleures ressources pour savoir quand vous savez comment faire ce que vous faites et que vous avez simplement besoin de pseudo-code.
Quanticle

Indice à Dmitry: il suffit de copier les commentaires de @ quanticle dans le corps de la réponse pour rendre votre réponse 1000% plus impressionnante.
nohat

5

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

  1. Équations linéaires
  2. Interpolation et extrapolation
  3. Intégration de fonctions
  4. Évaluation de la fonction
  5. Fonctions spéciales comprenant la fonction gamma, la fonction bêta, les factorielles
  6. Nombres aléatoires - comprenant une bonne explication de ce que cela signifie
  7. Algorithmes de tri
  8. Trouver des racines et des équations non linéaires
  9. Minimisation et maximisation des fonctions
  10. Eigensystems
  11. Transformations rapides de Fourier
  12. FFT et analyse spectrale
  13. Description statistique des données
  14. Modélisation des données
  15. Intégration des équations différentielles ordinaires
  16. Problèmes aux limites en deux points
  17. Equations intégrales et thory aux limites inverses
  18. Équations différentielles partielles
  19. "Autres" algorithmes tels que les contrôles CRC et la compression de données

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!


1
Pouvez-vous développer votre réponse pour inclure ce qui de ce livre répond à l'objectif de cette question?

4

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:

L'Encyclopedia of Algorithms fournit un ensemble complet de solutions à des problèmes algorithmiques importants pour les étudiants et les chercheurs, y compris des solutions à fort impact datant de la dernière décennie.

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:

Cette page WWW est destinée à constituer une collection complète d'implémentations d'algorithmes pour plus de soixante-dix des problèmes les plus fondamentaux des algorithmes combinatoires.

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.


2

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:

Rosetta Code est un site de programmation de chrestomathie . L'idée est de présenter des solutions à la même tâche dans autant de langues différentes que possible, de montrer en quoi des langues sont similaires et différentes, et d'aider une personne à maîtriser une approche d'un problème pour en apprendre un autre.

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.


cela vous dérangerait-il d'expliquer davantage ce qu'il fait et pourquoi le recommandez-vous comme réponse à la question posée? « Link-ne répond » ne sont pas tout à fait la bienvenue à Stack Echange
moucheron

@gnat: D'habitude je suis d'accord, mais en quoi est-ce différent d'une réponse "book-ref only"? De plus, je pense que "la collection d'implémentations d'algorithmes communs dans plusieurs langues" couvre à peu près ce qu'elle fait. C'est aussi (ou aussi peu) détaillé que la réponse acceptée, si vous regardez assez près :)
haylem

@gnat: de toute façon, a ajouté un peu plus.
Hayem

@AnnaLear: désolée, je pense que votre montage avait parfaitement raison de garder mon message court et sur la bonne voie, mais il semblait approprié de remettre la comparaison en regard des changements à la demande de gnat.
Hayem

0

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.


0

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.