Je suis un aspirant à l'élégance et à la rigueur mathématiques, et maintenant je recherche une telle littérature sur les algorithmes et l'analyse d'algorithmes. Maintenant, peu m'importe quels algorithmes sont couverts, mais beaucoup comment ils sont présentés et traités.¹ J'apprécie le plus un langage très clair et précis qui définit toutes les notions utilisées de manière stricte et abstraite.
J'ai trouvé que l' introduction classique aux algorithmes , par Cormen, Leiserson, Rivest et Stein est assez soignée, mais ne gère pas bien les mathématiques et est assez informelle avec ses preuves et définitions. L' introduction de Sipser à la théorie du calcul semble meilleure à cet égard, mais n'offre toujours pas de transition transparente des mathématiques aux algorithmes.
Quelqu'un peut-il recommander quelque chose?
¹: Les algorithmes devraient au moins impliquer la gestion de leurs données nécessaires en utilisant des structures de données abstraites non triviales classiques comme des graphiques, des tableaux, des ensembles, des listes, des arbres, etc. - de préférence également en opérant sur de telles structures de données. Je ne serais pas trop intéressé si la question de l'utilisation et de la gestion des structures de données était complètement ignorée. Je ne me soucie pas beaucoup des problèmes résolus avec eux, cependant.
Réponses:
Hendrik Lenstra a écrit en 1992 :
Je ne sais pas si des progrès ont été réalisés depuis lors, ou si cela est même considéré comme une "lacune" par le consensus. Mais le fait demeure qu'au moins quelques éminents mathématiciens ont été insatisfaits de la rigueur mathématique de la dérivation des algorithmes. Donc, il se peut qu'il n'existe aucun livre avec le niveau de formalisme souhaité par le PO.
La corne d'abondance des perspectives pratiques que nous avons en raison de Knuth, Gries , Stepanov et d'autres sont destinées à aider les programmeurs plus que les mathématiques et donc inévitablement à court de rigueur et de subjectivité.
Néanmoins, le travail de Stepanov est largement acclamé dans la Silicon Valley comme l'une des meilleures tentatives de synthèse scientifique.
Dans Elements of Programming , Alexander Stepanov et Paul McJones tentent de jeter les bases algébriques abstraites des algorithmes. Le livre commence par des définitions axiomatiques certes quelque peu informelles des entités, des valeurs et de leurs attributs, mais en 288 pages progresse de manière déductive via une série de lemmes jusqu'aux fondements de la bibliothèque de modèles standard.
La table des matières, la préface et un exemple de chapitre sur les transformations et leurs orbites peuvent être trouvés ici , et une conférence d'introduction ici .
Le livre le plus récent et décontracté de Stepanov, From Mathematics to Generic Programming , est davantage structuré par une feuille de route de l'histoire des mathématiques, allant de la multiplication égyptienne aux monoïdes, aux semi-groupes et au théorème de Lagrange, pour finalement développer des structures de données modernes avec leurs itérateurs et algorithmes utilisés dans la STL.
la source
Je pense que le livre que vous décrivez a un nom. Il est en sept volumes, dont seulement trois et demi ont été publiés. Il s'appelle The Art of Computer Programming (TAOCP) et est écrit par Donald Knuth.
Il se peut cependant qu'il décrive parfois des applications. Mais vous pouvez toujours ignorer cela, et je doute que cela fasse une grande partie du contenu. Vous ne devriez pas être trop déçu par les maths.
la source