Bon livre mathématique sur les algorithmes [fermé]

11

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.

k.stm
la source
2
C'est subjectif; définir "bon". De plus, bien que nous n'ayons pas de politique stricte pour les questions de liste, il existe une aversion générale . Veuillez noter également ceci et cette discussion; vous voudrez peut-être améliorer votre question afin d'éviter les problèmes qui y sont expliqués. Si vous ne savez pas comment améliorer votre question, nous pouvons peut-être vous aider dans le chat informatique ?
Raphael
Question connexe .
Raphael
@Raphael Merci. Je n'ai utilisé que le mot «bon» dans le titre, dans ma question j'ai précisé ce que je voulais. Bien que je ne sois pas intentionnellement trop précis, il devrait au moins être clair que mon objectif est (comme indiqué) de l'élégance et de la rigueur mathématiques . Je ne pense pas que cette réponse crie pour une liste de livres, car il ne devrait pas y avoir trop de livres entrant dans cette catégorie, - et même si c'est le cas, je n'y crois pas "en préservant la pureté d'une question stricte - réponse structure "chose qui se passe sur plusieurs sites stackexchange ici - mais pas mon appel, je suppose. Je ne sais pas si je peux améliorer la question.
k.stm
De plus, je ne pense pas que la «demande de référence» soit appropriée pour la question. Du moins pas selon sa description: je ne cherche pas non plus de papiers et je ne suis pas intéressé par une question précise et étroite. En fait, je suis assez ouvert quant au contenu couvert, voir ma deuxième phrase. Est-ce correct si je retire la balise? Peut-être que je pourrais et devrais restreindre avec quel type d'algorithmes je serais content?
k.stm
2
Vous devriez peut-être vous pencher sur la sémantique dénotationnelle et la vérification de programme.
Yuval Filmus

Réponses:

7

Hendrik Lenstra a écrit en 1992 :

Bien qu'il soit souhaitable, d'un point de vue mathématique rigoureux, de définir ce que j'entends par algorithme et son temps d'exécution, je ne le ferai pas. Ma principale excuse est que je ne connais pas moi-même ces définitions. Pire encore, je n'ai jamais vu un traitement de la théorie appropriée qui soit précis, élégant et pratique à utiliser. Ce serait une entreprise louable de combler cette lacune apparente dans la littérature.

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
?!? "il n'existe actuellement aucune dérivation mathématique précise, élégante et pratique du concept d'algorithme ..." que diriez-vous d'une machine de Turing!
vzn
1
Lenstra aborde les machines de Turing dans le document lié, mais je pense que l'idée est qu'elles ne fournissent pas une analyse algébrique complète. La citation est à peu près mot pour mot, y compris la partie "écart", si vous souhaitez la lire vous-même. Je vais modifier le message pour supprimer le "consensus" suggéré, au cas où il devrait être considéré comme discutable.
ofc am / savait que vous citiez Lenstra, mais vous pouviez ajouter des citations ou une citation plus longue de son affirmation remarquable / discutable / discutable
vzn
pensent que les machines de Turing ne peuvent pas être dérivées , au contraire elles forment l' axiome d'un système informatique (ala la thèse de Church-Turing ). c'est toute l'analyse de Lenstras et CS en général qui dérive de l'axiome de l'existence de la MT.
vzn
1
@Raphael, si maman dit que ce serait une "entreprise louable" de nettoyer correctement ma chambre, l'essentiel de son discours est "ne vous embêtez pas à nettoyer votre chambre". Suis-je incompréhensible, ou me comprenez-vous mal?
7

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.

babou
la source
Je craignais que cette réponse ne vienne. Je l'ai regardé et cela ne me convenait pas. "Vous ne devriez pas être trop déçu par les mathématiques." - peut-être, mais Knuth ne semble pas non plus définir les choses, mais il les présente plutôt de manière informelle, en les expliquant. Génial pour faire passer l'idée, pas ce que j'attends des mathématiques, cependant.
k.stm
Peut-être pourriez-vous contribuer au domaine en publiant la version mathématiquement obscurcie de son travail. Mais si ce qui vous intéresse est la «transition transparente des mathématiques aux algorithmes», un meilleur sujet pour vous pourrait être la théorie des types. La relation entre les mathématiques et les algorithmes est toujours un sujet de recherche.
babou
1
PS Si vous "craigniez que cette réponse ne se présente", vous auriez dû le dire dans votre question car c'est l'un des principaux ouvrages de référence. Les questions complètes et documentées obtiennent de meilleures réponses.
babou
Cela ne m'est venu qu'après avoir posé la question, lorsque j'étais loin de mon ordinateur. Ma remarque sur le livre de Knuth ne devrait pas être prise de manière péjorative (c'est ainsi que je pense que vous l'avez prise pour le commentaire «publier la version obscurcie mathématiquement») - ce serait probablement à côté du blasphème. Son chemin n'est tout simplement pas ce que je recherche non plus. Peut-être qu'il n'y a tout simplement rien de ce que j'imagine là-bas…
k.stm
2
@ k.stm Eh bien, oubliez l'obscurcissement qui est tout un sujet en soi. Le fait est que je crois que l'algorithmique n'est pas (encore?) Les mathématiques. Il se peut que vous puissiez obtenir des formalisations, mais ce sont probablement des encodages simples qui perdent la substance, avec peu d'avantages. Cela dépend du sujet. C'est probablement beaucoup moins vrai pour la théorie des automates, qui possède une algorithmique importante. Le fait est que l'identification adéquate de la nature mathématique abstraite des structures n'est pas évidente. C'est une question de compréhension, pas de formalisation, et cela prend des années. Pensez-y comme de la physique
babou