
Les meilleurs livres d'algorithmiqueConsultez tous les livres
Dernière mise à jour : 22 juin 2012 - 28 livres - 33 critiques
- Ant Colony Optimization
- A Field Guide to Genetic Programming
- Essentials of Metaheuristics
- Evolved to Win
- Natural Language Processing with Python
- Algorithmique - Cours avec 957 exercices et 158 problèmes
- Introduction to Evolutionary Computing
- Intelligence artificielle
- Apprentissage artificiel
- Purely Functional Data Structures
- Introduction à la cryptographie -
- Introduction à l'algorithmique - 2e cycle - Ecoles d'ingénieurs
- Algorithmes de graphes -
- Réseaux de neurones - Méthodologie et applications
- Réseaux bayesiens -
- Simulation numérique en C++
- Compilateurs
- Introduction à la calculabilité
- Intelligence Artificielle
- Géométrie algorithmique
- Programmation et Algorithmique en VBA pour Excel
- Apprentissage statistique - Réseaux de neurones - Cartes topologiques - Machines à vecteurs supports
- Calculateurs, calculs, calculabilité
- Apprendre à programmer - Algorithmes et conception objet
- Algorithmique - Techniques fondamentales de programmation
- Algorithmique - Travaux Pratiques - Entraînez-vous et améliorez votre pratique de la programmation
- Compilateurs - Principes, techniques et outils
- Algorithmique - Coffret de 2 livres : Maîtrisez les fondamentaux de la programmation (avec des exemples en Java)
Ant Colony Optimization
Résumé de l'éditeur
The complex social behaviors of ants have been much studied by science, and computer scientists are now finding that these behavior patterns can provide models for solving difficult combinatorial optimization problems. The attempt to develop algorithms inspired by one aspect of ant behavior, the ability to find what computer scientists would call shortest paths, has become the field of ant colony optimization (ACO), the most successful and widely recognized algorithmic technique based on ant behavior. This book presents an overview of this rapidly growing field, from its theoretical inception to practical applications, including descriptions of many available ACO algorithms and their uses. The book first describes the translation of observed ant behavior into working optimization algorithms. The ant colony metaheuristic is then introduced and viewed in the general context of combinatorial optimization. This is followed by a detailed description and guide to all major ACO algorithms and a report on current theoretical findings. The book surveys ACO applications now in use, including routing, assignment, scheduling, subset, machine learning, and bioinformatics problems. AntNet, an ACO algorithm designed for the network routing problem, is described in detail. The authors conclude by summarizing the progress in the field and outlining future research directions. Each chapter ends with bibliographic material, bullet points setting out important ideas covered in the chapter, and exercises. Ant Colony Optimization will be of interest to academic and industry researchers, graduate students, and practitioners who wish to learn how to implement ACO algorithms.
Édition MIT Press
ISBN10 : 0262042193
ISBN13 : 9780262042192
Commandez sur www.amazon.fr :
40,01 € TTC (prix éditeur 35,85 € TTC) livraison gratuite !- Chapter 1. From Real to Artificial Ants
- Chapter 2. The Ant Colony Optimization Metaheuristic
- Chapter 3. Ant Colony Optimization Algorithms for the Traveling Salesman Problem
- Chapter 4. Ant Colony Optimization Theory
- Chapter 5. Ant Colony Optimization for NP-Hard Problems
- Chapter 6. AntNet: An ACO Algorithm for Data Network Routing
- Chapter 7. Conclusions and Prospects for the Future
Écrit par Marco Dorigo, fondateur des algorithmes de colonie de fourmis, et Thomas Stützle, expert en optimisation, ce livre est une des références dans le domaine des algorithmes de colonie de fourmis dont il donne un aperçu très complet tout en restant accessible pour les néophytes. De bonnes notions en mathématiques discrètes seront néanmoins nécessaires pour bien comprendre certains passages, l'attachement à la formalisation mathématique étant une des caractéristiques de l'ouvrage.
Le premier chapitre met en exergue les liens entre fourmis réelles et artificielles en s'appuyant sur les interactions entre entomologie, mathématiques et informatique. Le deuxième chapitre situe les algorithmes de colonie de fourmis par rapport aux autres métaheuristiques ainsi qu'aux différentes catégories de problèmes auxquels ils s'appliquent, en l'occurrence des problèmes classiques d'optimisation combinatoire, fournissant ainsi aux lecteurs une superbe vue d'ensemble. Le troisième chapitre présente un exemple simple et détaillé d'application des algorithmes de colonie de fourmis au problème du voyageur de commerce ; diverses variantes de l'algorithme sont exposées et des ajouts majeurs, nommément la parallélisation et la recherche locale, sont introduits.
Ces trois premiers chapitres se lisent facilement et avec le chapitre de conclusion donnent les idées principales. Les autres chapitres sont essentiellement des chapitres d'approfondissement. Le quatrième chapitre explore la théorie sous-jacente aux algorithmes de colonie de fourmis, en détaillant entre autres choses les preuves de convergence et en introduisant le concept de recherche par modèle, par opposition à la recherche par solutions. Il n'existe cependant aucune preuve mathématique sur les vitesses de convergence, absence malheureusement assez répandue dans le monde des métaheuristiques en dépit des tentatives. Le cinquième chapitre est un catalogue de problèmes NP-difficiles auxquels ont été appliqués les algorithmes de colonie de fourmis : la mise en place de l'algorithme, autrement dit la définition de la correspondance entre le problème traité et la métaheuristique, puis les résultats sont présentés pour chaque problème. Le sixième chapitre se concentre sur un problème précis, le routage de données, et se penche sur les similarités avec l'apprentissage par renforcement et la méthode de Monte-Carlo, comparaison très pertinente. Les auteurs terminent sur un chapitre de conclusions et perspectives très diverses allant de la parallélisation algorithmique à la division du travail au sein des agents computationnels inspirée par la nature.
En conclusion, ce livre mérite tout à fait son titre de référence du domaine. Ses explications détaillées, aussi bien expérimentales que théoriques, ainsi que ses nombreuses ouvertures rendent sa lecture palpitante. Chaque chapitre s'achève par une très courte bibliographie et des exercices orientés informatique ou mathématiques. À noter que l'ouvrage date toutefois de 2004, ce qui est ancien étant donné la vitesse d'évolution de la recherche dans le domaine des métaheuristiques : il faut donc l'utiliser pour acquérir des bases solides et non comme un état de l'art exhaustif de la recherche actuelle.
A Field Guide to Genetic Programming
Résumé de l'éditeur
Genetic programming (GP) is a systematic, domain-independent method for getting computers to solve problems automatically starting from a high-level statement of what needs to be done. Using ideas from natural evolution, GP starts from an ooze of random computer programs, and progressively refines them through processes of mutation and sexual recombination, until high-fitness solutions emerge. All this without the user having to know or specify the form or structure of solutions in advance. GP has generated a plethora of human-competitive results and applications, including novel scientific discoveries and patentable inventions. This unique overview of this exciting technique is written by three of the most active scientists in GP.
Édition Lulu
ISBN10 : 1409200736
ISBN13 : 9781409200734
Commandez sur www.amazon.fr :
13,82 € TTC (prix éditeur 11,54 € TTC) livraison gratuite !- Chapter 1. Introduction
- Part I: Basics
- Chapter 2. Representation, Initialisation and Operators in Tree-based GP
- Chapter 3. Getting Ready to Run Genetic Programming
- Chapter 4. Example Genetic Programming Run
- Part II: Advanced Genetic Programming
- Chapter 5. Alternative Initialisations and Operators in Tree-based GP
- Chapter 6. Modular, Grammatical and Developmental Tree-based GP
- Chapter 7. Linear and Graph Genetic Programming
- Chapter 8. Probabilistic Genetic Programming
- Chapter 9. Multi-objective Genetic Programming
- Chapter 10. Fast and Distributed Genetic Programming
- Chapter 11. GP Theory and its Applications
- Part III: Practical Genetic Programming
- Chapter 12. Applications
- Chapter 13. Troubleshooting GP
- Chapter 14. Conclusions
- Part IV: Tricks of the Trade
- Appendix A. Resources
- Appendix B. TinyGP
Ce livre est une excellente introduction à la programmation génétique. En seulement 150 pages sans compter la bibliographie fournie, il offre une vue complète du domaine et se lit très facilement.
Après avoir présenté les bases de la programmation génétique, les auteurs exposent dans un chapitre entier un exemple simple pour illustrer concrètement le déroulement d'un tel algorithme. Les concepts avancés sont ensuite présentés de façon assez développée pour pouvoir bien les comprendre, mais pas trop pour ne pas noyer le lecteur dans les détails, le livre étant avant tout une introduction.
Chose intéressante, le livre propose également un chapitre théorique, ce qui est appréciable car la programmation génétique est souvent abordée sous un angle empirique, à défaut d'un modèle mathématique sous-jacent très développé, nonobstant les tentatives. Cette approche théorique permet en particulier de donner une piste d'explication mathématique des méthodes pour contrôler le phénomène de bloat, phénomène correspondant à l'augmentation de la taille du code des solutions sans amélioration de leur fitness, ce qui constitue un des problèmes majeurs de la programmation génétique à l'heure actuelle. Les auteurs poursuivent en donnant un aperçu synoptique des applications de la programmation génétique, ce qui permet de voir concrètement dans quels domaines elle a été mise en œuvre.
Le pénultième chapitre est consacré aux conseils pratiques pour mettre en place et mener à bien des expérimentations. C'est un concentré de l'expérience des auteurs, qu'il sera très utile d'avoir sous la main surtout lors des premières expérimentations. Enfin, les auteurs concluent l'ouvrage par une liste de ressources ainsi qu'un exemple de code source implémentant une expérimentation de programmation génétique.
Je conseille donc ce livre à toute personne souhaitant une introduction rapide ou une révision sur la programmation génétique. À noter que, contrairement à d'autres ouvrages tels Essentials of Metaheuristics et Introduction to Evolutionary Computing, ce livre ne permet pas de situer la programmation génétique par rapport aux autres algorithmes d'optimisation, mais se concentre exclusivement sur la programmation génétique. Également, aucun exercice n'est proposé.
Le livre est téléchargeable gratuitement à l'adresse http://www.gp-field-guide.org.uk (licence CC-BY-NC-ND).
Essentials of Metaheuristics
Résumé de l'éditeur
Interested in the Genetic Algorithm? Simulated Annealing? Ant Colony Optimization? Essentials of Metaheuristics covers these and other metaheuristics algorithms, and is intended for undergraduate students, programmers, and non-experts. The book covers a wide range of algorithms, representations, selection and modification operators, and related topics, and includes 70 figures and 133 algorithms great and small. Algorithms include: Gradient Ascent techniques, Hill-Climbing variants, Simulated Annealing, Tabu Search variants, Iterated Local Search, Evolution Strategies, the Genetic Algorithm, the Steady-State Genetic Algorithm, Differential Evolution, Particle Swarm Optimization, Genetic Programming variants, One- and Two-Population Competitive Coevolution, N-Population Cooperative Coevolution, Implicit Fitness Sharing, Deterministic Crowding, NSGA-II, SPEA2, GRASP, Ant Colony Optimization variants, Guided Local Search, LEM, PBIL, UMDA, cGA, BOA, SAMUEL, ZCS, and XCS.
Édition Lulu
ISBN10 : 0557148596
ISBN13 : 9780557148592
Commandez sur www.amazon.fr :
18,66 € TTC (prix éditeur 14,72 € TTC) livraison gratuite !- Chapter 0. Introduction
- Chapter 1. Gradient-based Optimization
- Chapter 2. Single-State Methods
- Chapter 3. Population Methods
- Chapter 4. Representation
- Chapter 5. Parallel Methods
- Chapter 6. Coevolution
- Chapter 7. Multiobjective Optimization
- Chapter 8. Combinatorial Optimization
- Chapter 9. Optimization by Model Fitting
- Chapter 10. Policy Optimization
- Chapter 11. Miscellany
Ce livre était à l'origine une compilation de notes de cours pour des étudiants au niveau licence. Son auteur, Sean Luke, chercheur et professeur à l'Université George Mason, a décidé de le publier sous licence CC-BY-ND, donc disponible gratuitement ici afin de le rendre accessible au plus grand nombre. Sean Luke est également un des auteurs de ECJ, une bibliothèque open source parmi les plus utilisées pour les algorithmes évolutionnistes en Java : le livre peut donc être considéré comme son pendant théorique.
Comme le titre l'indique, le livre traite des métaheuristiques, en se focalisant sur les algorithmes évolutionnistes. Une des caractéristiques appréciables du livre réside dans le fait que l'auteur explique très clairement l'enchaînement et les liens entre les différentes métaheuristiques, en soulignant notamment leurs limites ayant conduit à l'élaboration de nouvelles métaheuristiques, ce qui permet au lecteur de sentir l'évolution de la recherche dans ce domaine. Il montre ainsi l'enchaînement entre l'algorithme du gradient, le recuit simulé, la recherche tabou, les algorithmes évolutionnistes, l'optimisation par essaims particulaires, GRASP et l'algorithme de colonies de fourmis. L'avant-dernier chapitre introduit à l'optimisation de stratégies (policy optimization), en présentant entre autres l'apprentissage par renforcement et les learning classifier systems. Le dernier chapitre intitulé "Miscellany" est une mine d'or contenant des conseils très importants et probablement pas assez respectés sur la méthodologie à suivre pour conduire des expériences ainsi qu'un ensemble de tests usuels pour évaluer une métaheuristique, puis se conclut sur une liste de ressources très utiles (sites Web, livres, librairies, conférences, mailing lists, etc.) pour trouver davantage d'informations.
Chaque algorithme est accompagné d'un pseudocode commenté, soulignant par exemple la particularité de l'algorithme au regard des algorithmes précédents. Les 222 pages du livre contiennent 135 pseudocodes, ce qui montre bien l'accent mis sur l'explication concrète des algorithmes en plus des considérations intuitives ou théoriques. Le livre propose également plus de 70 figures qui permettent de mieux comprendre les algorithmes. Le ton général du livre est direct et les phrases sont formulées de façon très accessible. Pour chaque chapitre, les dépendances avec les chapitres précédents sont indiquées. Tous ces éléments rendent le livre facile et agréable à lire. À noter que le livre ne contient pas d'exercice et ne présente que peu d'applications hormis les exemples abstraits : il faudra donc utiliser ECJ ou une autre bibliothèque pour mettre en œuvre les algorithmes expliqués dans le livre. Le guide d'utilisateur de ECJ est complet et traite sous l'angle technique de la quasi-totalité des concepts du livre touchant aux algorithmes évolutionnistes.
Je conseille donc ce livre à toute personne souhaitant une introduction rapide ou une révision sur les métaheuristiques.
Evolved to Win
Résumé de l'éditeur
Recent years have seen a sharp increase in the application of evolutionary computation techniques within the domain of games. Situated at the forefront of this research tidal wave, Moshe Sipper and his group have produced a plethora of award-winning results, in numerous games of diverse natures, evidencing the success and efficiency of evolutionary algorithms in general-and genetic programming in particular-at producing top-notch, human-competitive game strategies. From classic chess and checkers, through simulated car racing and virtual warfare, to mind-bending puzzles, this book serves both as a tour de force of the research landscape and as a guide to the application of evolutionary computation within the domain of games.
Édition Lulu
ISBN10 : 1470972832
ISBN13 : 9781470972837
Commandez sur www.amazon.fr :
14,34 € TTC (prix éditeur 13,25 € TTC) livraison gratuite !- Part I: Rules of the Game
- Chapter 1. Setting the Pieces
- Chapter 2. Evolutionary Computation in a Nutshell
- Part II: Board Games
- Chapter 3. Lose Checkers
- Chapter 4. Chess: Endgames
- Chapter 5. Chess: Emergence and Complexity
- Chapter 6. Chess: Evolving Search
- Chapter 7. Chess: Evolving Search
- Part III: Simulation Games
- Chapter 8. Robocode
- Chapter 9. Robot Auto Racing Simulator
- Part IV: Puzzles
- Chapter 10. Rush Hour
- Chapter 11. FreeCell
- Part V: Parting Words of...
- Chapter 12. (Putative) Wisdom
- Appendix: A Potpourri of Games
Dans ce livre, l'auteur et chercheur en intelligence artificielle Moshe Sipper présente un état de l'art de la programmation génétique appliquée aux jeux, domaine dans lequel l'auteur et son groupe de recherche ont gagné de nombreuses récompenses. Loin de réduire l'ouvrage à une simple énumération de résultats, il se concentre sur certains jeux qu'il a personnellement étudiés. À travers ces études de cas, il a réussi à structurer le livre de manière à montrer une progression dans l'utilisation de la programmation génétique : après avoir commencé à l'utiliser en tant que générateur et optimisateur d'heuristique, il l'applique directement aux algorithmes de recherche, tout en introduisant les notions de coévolution ainsi que d'évolution en îles asynchrones.
- les jeux de société : une variante du jeu de dames (lose checkers), les échecs et le backgammon ;
- les jeux de simulation : Robocode et le jeu de course RARS ;
- les casse-têtes : Rush Hour et FreeCell.
Les résultats présentés sont palpitants car hautement compétitifs avec les humains ainsi que les bots existants. Les solutions sont analysées en profondeur, notamment pour essayer d'entrevoir si l'évolution a fait apparaître des phénomènes d'émergence parmi les individus évolués. Une particularité du livre est son attachement à souligner les liens entre les algorithmes évolutionnistes et les principes de biologie moléculaire afin d'acquérir une compréhension plus intime de l'évolution. Tout au long de l'ouvrage, une myriade de conseils précieux sont donnés sur l'utilisation de la programmation génétique.
Bien que l'auteur aurait pu aisément faire publier le livre chez un éditeur classique tel Springer, il a fait le choix de la générosité et a décidé de rendre le livre téléchargeable gratuitement à l'adresse http://www.moshesipper.com/etw (licence CC-BY-ND).
Natural Language Processing with Python
Résumé de l'éditeur
This book offers a highly accessible introduction to natural language processing, the field that supports a variety of language technologies, from predictive text and email filtering to automatic summarization and translation. With it, you'll learn how to write Python programs that work with large collections of unstructured text. You'll access richly annotated datasets using a comprehensive range of linguistic data structures, and you'll understand the main algorithms for analyzing the content and structure of written communication.
- Extract information from unstructured text, either to guess the topic or identify "named entities"
- Analyze linguistic structure in text, including parsing and semantic analysis
- Access popular linguistic databases, including WordNet and treebanks
- Integrate techniques drawn from fields as diverse as linguistics and artificial intelligence
This book will help you gain practical skills in natural language processing using the Python programming language and the Natural Language Toolkit (NLTK) open source library. If you're interested in developing web applications, analyzing multilingual news sources, or documenting endangered languages -- or if you're simply curious to have a programmer's perspective on how human language works -- you'll find Natural Language Processing with Python both fascinating and immensely useful.
Édition O'Reilly Media
ISBN10 : 0596516495
ISBN13 : 9780596516499
Commandez sur www.amazon.fr :
34,47 € TTC (prix éditeur 36,60 € TTC) livraison gratuite !- Chapter 1. Language Processing and Python
- Chapter 2. Accessing Text Corpora and Lexical Resources
- Chapter 3. Processing Raw Text
- Chapter 4. Writing Structured Programs
- Chapter 5. Categorizing and Tagging Words
- Chapter 6. Learning to Classify Text
- Chapter 7. Extracting Information from Text
- Chapter 8. Analyzing Sentence Structure
- Chapter 9. Building Feature-Based Grammars
- Chapter 10. Analyzing the Meaning of Sentences
- Chapter 11. Managing Linguistic Data
Utilisé par plus d'une centaine de cours dans le monde et disponible gratuitement en ligne à l'adresse http://www.nltk.org/book (licence CC BY-NC-ND), ce livre offre une excellente introduction au traitement automatique des langues naturelles en expliquant les théories par des exemples concrets d'implémentation. Il se veut donc une introduction pratique au domaine, par opposition à une introduction purement théorique. Chaque chapitre du livre se termine par une série d'exercices classés par ordre de difficulté, mais malheureusement non corrigés.
La particularité principale du livre est qu'il présente de nombreux exemples de code, en se basant sur la bibliothèque open-source et gratuite NLTK (http://www.nltk.org) écrite en Python par notamment les auteurs de ce livre. Très bien documentée, la bibliothèque NLTK offre de nombreuses fonctionnalités de traitement des langues (analyse lexicale, étiquetage grammatical, analyse syntaxique, etc.) tout en interfaçant aussi bien des bases de données tel WordNet que des bibliothèques et logiciels tiers tels l'étiqueteur grammatical Stanford Tagger et le prouveur automatisé Prover9. Un grand nombre de corpus est également disponible via NLTK, ce qui est très appréciable pour mettre en œuvre des processus d'entraînement ainsi que pour réaliser des tests, notamment des tests de performance. Comme le livre présente les nombreuses facettes du traitement automatique des langues naturelles, il parcourt au travers de ses exemples une grande partie des fonctionnalités de NLTK.
La limite principale de la bibliothèque NLTK est les performances de Python en termes de vitesse de calcul. L'utilisation de Python permet toutefois au lecteur de ne pas être trop gêné par la barrière du langage, Python étant à ce jour sans conteste un des langages les plus simples d'accès. Pour ceux n'ayant aucune ou peu d'expérience en Python, certaines sections du livre sont dédiées uniquement à l'explication du langage Python, ce qui permet de rendre l'ouvrage accessible à tout public.
Néanmoins, bien que donnant un aperçu excellent et concret de l'ensemble du traitement automatique des langues naturelles, le focus du livre sur les exemples en Python fait que mécaniquement le livre consacre moins de place aux considérations théoriques. En ce sens, il est un complément idéal au livre de référence Speech and Language Processing (écrit par Daniel Jurafsky et James H. Martin) dont l'approche est beaucoup plus théorique.
Ce livre sur NLTK est réellement bien écrit, il n'est pas nécessaire d'avoir une expérience en traitement automatique du langage pour pouvoir aborder cet ouvrage, il vous apprendra tout ce dont vous avez besoin pour comprendre chaque chapitre. La seule obligation est d'avoir une connaissance du langage Python.
Les exemples sont non seulement simples, mais aussi très utiles, car ce sont des choses dont on pourrait avoir besoin dans une application. J'ai principalement aimé les chapitres sur les extractions d'entités nommées, l'apprentissage pour la création d'un classifieur et l'analyse du sens d'une phrase qui sont particulièrement bien faits et expliqués.
La seule remarque que je ferais est le manque de détails sur toutes les possibilités de création et d'utilisation d'une grammaire via les expressions régulières NLTK ou non.
Algorithmique
Cours avec 957 exercices et 158 problèmes
Résumé de l'éditeur
Introduction complète à l'algorithmique, cette 3ème édition, révisée et mise à jour, comporte deux nouveaux chapitres, l'un sur les arbres de Van Emde Boas et l'autre sur les algorithmes multithreads. Plusieurs nouveaux énoncés d'exercices et de problèmes ont été ajoutés. Au total, plus de 920 exercices et 140 problèmes sont proposés. Cet ouvrage s'est aujourd'hui imposé comme une référence mondiale pour l'enseignement de l'algorithmique. Exhaustif et facile d'accès c'est un outil de travail complet et indispensable pour les étudiants et les professionnels de l'informatique.
L'éventail des algorithmes étudiés va des plus classiques, comme les algorithmes de tri et les fonctions de hachage, aux plus récents, comme ceux de la cryptographie, permettant ainsi de passer progressivement des notions élémentaires aux thèmes les plus pointus.
Les algorithmes sont rédigés en français et dans un pseudo-code proche des langages Pascal, C et Fortran. Ils sont analysés en profondeur et toujours complétés par des preuves mathématiques. De nombreux exemples, figures, études de cas et exercices de difficulté graduée viennent compléter les explications. Au total ce sont les énoncés de plus de 955 exercices et 155 problèmes qui sont proposés. Les solutions de 80 d'entre eux sont accessibles en ligne
Édition Dunod
ISBN10 : 2100545264
ISBN13 : 9782100545261
Commandez sur www.amazon.fr :
56.91 € TTC seulement (au lieu de 59.90 € TTC : prix éditeur) livraison gratuite !- Introduction.
- Rôle des algorithmes en informatique
- Premier pas
- Croissance des fonctions
- Diviser pour régner
- Analyse probabilistique et algorithmes randomisés
- Tris et rangs.
- Tri par tas
- Tri rapide
- Tri en temps linéaire
- Médians et rangs
- Structures de données.
- Structures de données élémentaires
- Tables de hachage
- Arbres binaires de recherche
- Arbres rouge-noir
- Extension des structures de données
- Techniques avancées de conception et d'analyse.
- Programmation dynamique
- Algorithmes gloutons
- Analyse amortie
- Structures de données avancées.
- B-Arbres
- Tas de fibonacci
- Arbres de van emde boas
- Structures de données pour ensembles disjoints
- Algorithmes pour les graphes.
- Algorithmes élémentaires pour les graphes
- Arbres couvrants minimaux
- Plus courts chemins à origine unique
- Plus courts chemins entre toutes paire de sommets
- Flot maximum
- Morceaux choisis.
- Algorithmes multithread
- Calcul matriciel
- Programmation linéaire
- Polynômes et transformée de fourier rapide
- Algorithmes de la théorie des nombres
- Recherche de chaînes de caractères
- Géométrie algorithmique
- NP-complétude
- Algorithmes d'approximation
- Annexes - Elément de mathématiques.
- Sommes
- Ensembles
- Dénombrement et probabilités
- Matrices
L'algorithmique est au cœur de l'informatique et si vous souhaitez écrire des programmes, vous devez comprendre ses principes fondamentaux et connaître ses éléments de base. Il existe de multiples ouvrages sur le sujet et il n'est pas toujours évident de trouver celui qui vous conviendra. S'il est trop simple, vous en aurez vite fait le tour et comme pour les jeux faciles, son espérance de vie sera brève. S'il est plus riche, il vous sera profitable plus longtemps mais il ne faut pas pour autant que cela soit fait aux dépends de son accessibilité.
Ne cherchez plus, le livre "Algorithmique" de Cormen, Leiserson, Rivest et Stein est la référence en matière d'algorithmique.
Même si la discipline évolue, vous pouvez investir car c'est le genre d'ouvrage qui ne "vieillit" pas. Certes, c'est la troisième édition, mais quand on sait que c'est à raison d'une nouvelle édition tous les huit ans et que la refonte consiste principalement à améliorer la pédagogie, on ne peut qu'apprécier.
Ce livre est un pavé de 1200 pages et s'il a été vendu à plus de 20 000 exemplaires, ce n'est pas étonnant car il s'adresse à un public très large.
- Les enseignants de deuxième et troisième cycle d'université trouveront un matériel de qualité pour la préparation de leurs cours ainsi que de nombreuses références bibliographiques.
- Les étudiants trouveront un support de cours, des exercices et des problèmes complémentaires.
- Les professionnels quant à eux pourront se référer aux sujets qui les intéressent et s'il existe de nombreuses librairies implémentant les principaux algorithmes dans plusieurs langages, il peut être utile de se rappeler les différents choix possibles.
On ne lit pas ce genre d'ouvrage comme un roman. Toutefois, les chapitres étant relativement indépendants entre eux, j'ai trouvé leur lecture agréable et très progressive. Ils commencent généralement par une problématique bien exposée, suivie de propositions qui s'enrichissent au fur et à mesure. Des schémas viennent illustrer la dynamique de l'algorithme étudié et des preuves mathématiques apportent de la rigueur. Enfin, des exercices connexes nous encouragent à poursuivre l'étude.
À ce sujet, notons des exigences contradictoires. D'un côté, des lecteurs qui souhaitent des solutions aux exercices. D'un autre, des enseignants qui savent que la présence de solutions n'encourage pas forcément la recherche. Les auteurs ont tranché en proposant en ligne la correction de seulement 10 % des exercices. Il est probable que ceux qui bloquent sur des problèmes leur reprocheront ce choix.
Certains reprocheront également la nouvelle syntaxe du pseudo-code (affectation avec = et comparaison avec ==) inspirée des principaux langages (C, C++, Java). Personnellement, cela ne m'a pas dérangé, et avec la suppression des mots superflus (faire, alors), je trouve le pseudo-code plus clair. En revanche, je me suis étonné de l'utilisation du français dans le pseudo-code à l'heure des langages de développement majoritairement anglophones. Finalement, ce choix se comprend pour un ouvrage didactique destiné à un public francophone.
En conclusion, je pense que tout développeur devrait avoir ce livre dans sa bibliothèque.
L'algorithmique est un prérequis indispensable à la modélisation de programmes informatiques effectuant des traitements non triviaux ou dont les ordres de grandeur dépasse les limites de ce qui est négligeable du point de vue temps machine ou consommation mémoire.
Pourtant, en plus d'être une discipline à part entière, l'algorithmique impacte également d'autres domaines informatiques. Chaque domaine a ses méthodes clés, associées à des structures de données particulières. Pourtant derrière ses spécificités se cachent souvent des situations plus générales, partie intégrante de l'algorithmique. Les connaissances à acquérir sont vastes et nécessitent parfois l'acquisition de différents ouvrages.
Par chance, un ouvrage tente de concentrer en un millier de pages l'ensemble de ces connaissances générales, afin de répondre aux besoins de la plupart des développeurs. Il s'agit du CLR(S) désormais disponible dans sa troisième édition. Cet ouvrage est un investissement utile, rien que pour tous les rappels que vous trouverez. Il est également utile pour des étudiants en informatique, qui y trouveront pédagogie et de nombreux exercices (tous ne sont pas corrigés par choix des auteurs).
Le seul défaut est la qualité "papier bible" assez surprenante... à manipuler avec précaution
Introduction to Evolutionary Computing
Résumé de l'éditeur
Evolutionary Computing is the collective name for a range of problem-solving techniques based on principles of biological evolution, such as natural selection and genetic inheritance. These techniques are being increasingly widely applied to a variety of problems, ranging from practical applications in industry and commerce to leading-edge scientific research. This book presents the first complete overview of this exciting field aimed directly at lecturers and graduate and undergraduate students. It is also meant for those who wish to apply evolutionary computing to a particular problem or within a given application area. To this group the book is valuable because it presents EC as something to be used rather than just studied. Last, but not least, this book contains quick-reference information on the current state-of-the-art in a wide range of related topics, so it is of interest not just to evolutionary computing specialists but to researchers working in other fields.
Édition Springer
ISBN10 : 3642072852
ISBN13 : 9783642072857
Commandez sur www.amazon.fr :
36,27 € TTC (prix éditeur 39,95 € TTC) livraison gratuite !- Introduction
- What is an Evolutionary Algorithm?
- Genetic Algorithms
- Evolution Strategies
- Evolutionary Programming
- Genetic Programming
- Learning Classifier Systems
- Parameter Control in Evolutionary Algorithms
- Multi-Modal Problems and Spatial Distribution
- Hybridisation with Other Techniques: Memetic Algorithms
- Theory
- Constraint Handling
- Special Forms of Evolution
- Working with Evolutionary Algorithms
- Summary
- Appendices
- Index
- References
Ce livre est une des références pour s'initier aux algorithmes évolutionnistes : assez court (à peine 300 pages facilement lisibles) et bien conçu pour une première approche du domaine sans avoir à y investir une quantité de temps considérable, tout en étant plutôt complet et sans se perdre dans des détails inutiles, ce qui donne au lecteur un nombre important de pistes de réflexion essentielles pour une bonne compréhension des différentes problématiques rencontrées le plus souvent dans le domaine.
Il est aussi un des premiers ouvrages présentant une vue d'ensemble sur l'évolution artificielle (EA) et il contient notamment les dernières nouveautés du domaine. Les chapitres alternent introductions théoriques, exemples, algorithmes et exercices, et même si les fondements théoriques ne sont pas négligés, l'accent est davantage mis sur la mise en oeuvre concrète des algorithmes et techniques d'évolution artificielle.
Bref, que ce soit pour découvrir le domaine ou se remettre les idées-clefs en mémoire, je conseille vivement la lecture de ce livre ! Pour les enseignants, des supports de présentation sont disponibles sur le site officiel.
Seul bémol notable, les exercices ne sont pas corrigés et certaines parties potentiellement intéressantes du site officiel sont toujours en construction ou ne sont pas terminées.
Tout d'abord, après avoir présenté dans les grandes lignes le fonctionnement ainsi que les caractéristiques d'un algorithme évolutionniste (chapitres 1 et 2), le livre se penche sur ses quatre variantes usuelles : algorithmes génétiques, stratégies d'évolution, programmation évolutionniste et programmation génétique (chapitres 3 à 6).
- les LCS (Learning Classifier System - chapitre 7), qui sont un système d'apprentissage automatique basé sur le concept d'ensemble de règles conditions-actions et qui permettent d'introduire la notion de coopération parmi les individus d'une même population, contrairement aux algorithmes évolutionnistes classiques dans lesquels les individus sont simplement en compétition. ZCS et XCS sont des variantes ;
- le "parameter control" (chapitre 8), dont l'objectif est d'adapter certains paramètres structurants des algorithmes évolutionnistes, telles la taille de la population ou la probabilité des mutations/croisements, au cours de l'exécution de l'algorithme, contrairement au "parameter tuning" utilisé habituellement, consistant à fixer ces paramètres au début de l'exécution de l'algorithme sans pouvoir les modifier après, ce qui rend l'algorithme beaucoup moins performant ;
- le maintien d'une certaine diversité au sein de la population (chapitre 9), afin de faire face à la convergence vers un optimum local (genetic drift) souvent constaté, à l'instar de la sélection naturelle qui a vu se former des sous-groupes grâce aux contraintes géographiques. On peut de cette manière trouver autant d'optima locaux que de sous-groupes, permettant ainsi d'obtenir de meilleurs résultats sur les problèmes multimodaux en se rapprochant ainsi de l'optimum global ;
- le multiobjectif (chapitre 9), qui repose sur le concept de dominance au sens de Pareto : beaucoup de problèmes ont en effet plusieurs objectifs, les scalariser en un seul objectif comporte des inconvénients, et les résultats montrent que les MOEA (MultiObjective Evoluationary Algorithms) sont en général les meilleurs algorithmes pour résoudre des MOP (MultiObjective Problems) ;
- les algorithmes mémétiques (chapitre 10), qui permettent d'effectuer des améliorations (local search) non génétiques propres à un seul individu, améliorations se basant sur des connaissances expertes spécifiques au problème, en faisant attention à maintenir une certaine diversité au sein de la population. Les résultats ainsi obtenus par rapport à l'EA classique sont généralement meilleurs sur le problème étudié, mais moins bons pour la plupart des autres problèmes.
En troisième partie, les auteurs exposent quelques bases de la théorie sous-jacente à l'EA (chapitre 11), puis expliquent comment y inclure des contraintes, comme par exemple en définissant des pénalités dans la fitness fonction (chapitre 12). Ils présentent également des formes d'évolution (chapitre 13) basées sur la coévolution interactive ou compétitive, formes plus proches de la sélection naturelle où les espèces évoluent ensemble et les critères de sélection sont relatifs (telle l'opposition proies vs prédateurs).
Les auteurs concluent sur les bonnes pratiques de mesure de performance d'une EA (chapitre 14), soulignent que le plus important lors de l'utilisation d'une EA est de trouver une bonne représentation ainsi qu'un choix d'opérateurs de variation et de sélection judicieux, et donnent des pistes de réflexion non étudiées dans le livre, tels les colonies de fourmis ou les systèmes immunitaires artificiels.
Intelligence artificielle
Résumé de l'éditeur
Écrit par les experts de renommée mondiale, ce livre est la référence incontournable en matière d'intelligence artificielle (IA) dont il présente et analyse tous les concepts : logique, probabilités, mathématiques discrètes et du continu, perception, raisonnement, apprentissage, prise de décision et action.
Sa spécificité est de présenter l'IA à travers le concept des agents intelligents. Les auteurs exposent comment un système réussit à percevoir son environnement de manière à analyser ce qu'il s'y passe, et comment il transforme la perception qu'il a de son environnement en actions concrètes.
Parmi les sujets couverts :
- - les contributions historiques des mathématiques, de la théorie des jeux, de l'économie, de la théorie des probabilités, de la psychologie, de la linguistique et des neurosciences ;
- - les méthodes qui permettent de prendre des décisions lors de l'établissement d'un projet, en tenant compte des étapes à venir ;
- - les différentes manières de représenter formellement les connaissances relatives au monde qui nous entoure ainsi que le raisonnement logique fondé sur ces connaissances ;
- - les méthodes de raisonnement qui permettent d'établir des plans et donc de proposer des actions à entreprendre ;
- - la prise de décisions en environnement incertain : réseaux bayésiens et algorithmes tels que l'élimination de variables et MCMC (Markov Chain Monte-Carlo) ;
- - les méthodes employées pour générer les connaissances exigées par les composants de prise de décision : les algorithmes de boosting, l'algorithme EM (expectation-minimization), l'apprentissage à base d'exemples et les méthodes à noyaux (machines à vecteurs support) ;
- - les implications philosophiques et éthiques de l'IA.
Chaque chapitre est illustré par de nombreux exemples et s'achève par des activités, qui vont des exercices de réflexion à des exercices de programmation, en passant par l'approfondissement des méthodes décrites, soit plus de 500 activités au total.
Cette 3e édition tient compte des derniers développements de la matière, concernant notamment les représentations qu'un agent peut utiliser (atomique, factorisée, structurée), les environnements partiellement observables et non déterministes, les planifications contingente et hiérarchique, les modèles probabilistes du premier ordre, l'apprentissage automatique, la recherche et l'extraction d'information sur le web et l'apprentissage à partir de très grandes bases de données.
Édition Campus Press / Pearson
ISBN10 : 2744074551
ISBN13 : 9782744074554
Commandez sur www.amazon.fr :
68,40 € TTC (prix éditeur 68,40 € TTC) livraison gratuite !- I Intelligence artificielle
- 01. Introduction
- 02. Agents intelligents
- II Résolution de problèmes
- 03. Résolution de problèmes par l'exploration
- 04. Au-delà de l'exploration classique
- 05. Exploration en situation d'adversité
- 06. Problèmes à satisfaction de contraintes
- III Connaissances, raisonnement et planification
- 07. Agents logiques
- 08. Logique du premier ordre
- 09. L'inférence en logique du premier ordre
- 10. Planification classique
- 11. Planification et action dans le monde réel
- 12. Représentation des connaissances
- IV Connaître et penser l'incertain
- 13. Quantification de l'incertitude
- 14. Raisonnement probabiliste
- 15. Raisonnement probabiliste temporel
- 16. Prises de décisions simples
- 17. Prises de décisions complexes
- V Apprentissage
- 18. Apprendre à partir d'exemples
- 19. Connaissances et apprentissage
- 20. Apprentissage de modèles probabilistes
- 21. Apprentissage par renforcement
- VI Communication, perception et action
- 22. Traitement du langage naturel
- 23. Langage naturel et communication
- 24. Perception
- 25. Robotique
- 26. Fondements philosophiques
- 27. IA : le présent et le futur
- A. Rappels mathématiques
- B. Notes sur les langages et les algorithmes
Ce livre est le meilleure livre que j'ai pu lire sur le sujet de l'intelligence artificielle. Il aborde toutes les facettes de ce domaine avec des sujets d'actualités, ainsi en lisant ce livre on peut être au courant des problèmes et des solutions aux problèmes actuels. Les 500 exercices fournis vous aideront beaucoup à la compréhension des diverses leçons.
Malgré tout, un bon niveau en mathématique et en algorithmique est fort conseillé mais pas obligatoire. Cela vous permettra de mieux comprendre les algorithmes et les formules mathématiques données dans ce livre.
Autre bon côté de ce livre, contrairement à certains de ses concurrents, il n'utilise pas de langage de programmation précis, tous les algorithmes sont écrits en pseudo-code. Ainsi tout le monde peut les implémenter dans le langage qu'il souhaite, car il ne privilégie pas les amateurs de tel ou tel langage de programmation. Malgré tout, les auteurs proposent sur leur dépôt en ligne l'implémentation des algorithmes dans quelques langages comme Java, Python et C++.
C'est vraiment un ouvrage de pure théorie donc pour les personnes qui souhaitent avoir des exemples d'intelligence artificielle tout faits comme on peut en trouver dans des ouvrages habituels, passez votre chemin ce livre n'est pas fait pour vous. Vous ne trouverez dedans que des algorithmes, des formules mathématiques, des démonstrations mathématiques, des courbes explicatives, de la notation BNF (Backus Naur Form), etc.
Ce livre est la traduction française de « Artificial Intelligence : a modern approach », troisième édition, de Stuart Russel et Peter Norvig, livre de référence en matière d'intelligence artificielle.
Ceux qui se méfient des traductions peuvent être rassurés. La relecture scientifique a été réalisée par Laurent Miclet, expert du domaine et auteur de « Apprentissage artificiel » .
Contrairement à ce dernier ouvrage, plus universitaire et dédié uniquement à l'apprentissage artificiel, celui-ci est plus général. Il traite de l'IA dans son ensemble, de ses fondements historiques, de la résolution de problèmes, de la connaissance, du raisonnement, de la planification, de l'apprentissage, de la communication, de la perception, de l'action, de robotique.
Après avoir défini l'IA comme l'étude des agents qui reçoivent des percepts de l'environnement et qui réalisent des actions, les auteurs se servent de cette idée d'agent intelligent pour explorer le domaine. Ce qui en fait un fil conducteur agréable à suivre.
Ce que j'ai également bien aimé, c'est que chaque chapitre commence par une petite phrase d'introduction et se termine par un résumé, des notes bibliographiques et historiques ainsi qu'une série d'exercices.
Du coup, j'ai trouvé l'ouvrage, bien que copieux, plutôt abordable. Je n'irais pas jusqu'à dire qu'il s'adresse à tout public mais si vous êtes intéressé par le domaine, pas seulement par l'aspect technique mais aussi par l'aspect philosophique, je vous le recommande.
Apprentissage artificiel
Résumé de l'éditeur
Édition Eyrolles
ISBN10 : 2212124716
ISBN13 : 9782212124712
Commandez sur www.amazon.fr :
52,25 € TTC (prix éditeur 55 € TTC) livraison gratuite !- Les fondements de l'apprentissage
- De l'apprentissage naturel à l'apprentissage artificiel
- Première approche théorique de l'induction
- L'environnement méthodologique de l'apprentissage
- Apprentissage par exploration
- Induction et relation d'ordre : l'espace des versions
- La programmation logique inductive
- Transfert de connaissance et apprentissage par analogie
- L'inférence grammaticale
- Apprentissage par évolution simulée
- Apprentissage par optimisation
- L'apprentissage de modèles linéaires
- L'apprentissage de réseaux connexionistes
- L'apprentissage de réseaux bayésiens
- L'apprentissage de modèles de Markov cachés
- Apprentissage par inférence d'arbres
- Apprentissage par approximation et interpolation
- Méthode à noyaux
- L'apprentissage bayésien et son approximation
- L'apprentissage de réflexes par renforcement
- Au-delà de l'apprentissage supervisé
- Apprentissage de combinaisons d'experts
- La classification non-supervisée et la fouille de donnée
- L'apprentissage semi-supervisé
- Vers de nouvelles tâches et de nouvelles questions
- Analyse de l'induction : approfondissement et ouvertures
- Annexes techniques
Les 2000 exemplaires initiaux de la 1° édition (2002) étant épuisés, au lieu d'une simple ré-impression, les auteurs ont préféré mettre à jour leur ouvrage pour tenir compte des nombreuses évolutions du domaine. Cette seconde édition arrive donc 8 ans plus tard avec 200 pages de plus ! L'ouvrage est copieux mais comment pourrait-il en être autrement pour un ouvrage qui se veut une référence ?
Tout en présentant les principales problématiques à résoudre dans l'apprentissage artificiel, ce livre fait le point sur les méthodes disponibles; chaque méthode étant expliquée en détails et accompagnée d'un bilan et de nombreuses pistes d'approfondissement.
On peut donc trouver des livres sur pratiquement chacun des sujets abordés et du coup se demander si pour une introduction, cet ouvrage n'est pas too much ? En fait, je ne le pense pas pour la simple raison qu'il a l'avantage de présenter le domaine de manière unifiée avec une homogénéité dans les notations utilisées.
Son autre atout est de présenter différents itinéraires de lecture pour les publics variés auxquels il s'adresse : enseignants, étudiants, ingénieurs, ... En revanche, qu'on ne s'y trompe pas, parce que le domaine est complexe et parce que ce livre est écrit par des universitaires, le lecteur doit avoir un certain bagage mathématique s'il vise plus loin qu'une simple vue d'ensemble.
Cette mise en garde étant faite, si le sujet vous intéresse, il trouvera comme ouvrage de synthèse une place de choix dans votre bibliothèque.
Purely Functional Data Structures
Résumé de l'éditeur
Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functional data structures. The author includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages. All source code is given in Standard ML and Haskell, and most of the programs are easily adaptable to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.
Édition Cambridge University Press
ISBN10 : 0521663504
ISBN13 : 9780521663502
Commandez sur www.amazon.fr :
33,20 € TTC (prix éditeur € TTC) livraison gratuite !
Cet ouvrage reprend l'intégralité de la thèse de Chris Okasaki avec tous ses points forts, à commencer par les nouvelles techniques algorithmiques avancées (eliminated amortization, lazy rebuilding, data-structural bootstrapping, implicit recursive slowdown). Les systèmes de numération y sont utilisés comme des moules pour fabriquer des TADs sur le modèle des opérations élémentaires d'incrémentation et d'addition. Le système de typage est poussé aussi loin que possible avec les nested data types (polymorphic recursion), les modules paramétrés et les modules paramétrés récursifs.
En plus du contenu de la thèse qui fait déjà autorité, la valeur ajoutée de ce livre réside dans :
- une introduction à la persistence et au path-copying
- un rappel sur l'implantation des structures de données élémentaires (listes,piles,queues,arbres binaire de recherche, arbres rouge-noir)
- des exercices qui explorent des alternatives connues (arbres de Arne Andersson,...) ou des variantes du mécanisme de mise à jour (batched-rebuilding)
- un répertoire d'implantations des structures de tas, assez consistant (leftist heaps, pairing heaps, binomial heap, skew binomial heap, structural-bootstrapped skew binomial heap) sans être exhaustif (il manque le Braun heap et le maxiphobic heap)
En bref il s'agit d'une référence à posséder absolument.
Un seul regret: l'ouvrage n'a pas la prétention d'être une bible. Il ne fait pas le tour complet du sujet puisque par exemple, ne sont pas abordés les thèmes suivants:
- le Finger-tree
- l'implantation efficace des graphes inductifs
- l'implantation efficace de l'Union-Find persistent
Cependant, pour les personnes intéressées, de la documentation sur ces sujets est facilement trouvable en ligne.
Introduction à la cryptographie
Résumé de l'éditeur
La cryptographie est un domaine clé des systèmes électroniques. Elle permet de conserver aux données leur caractère de confidentialité, de contrôler leur accès, d'identifier des documents (signature électronique)... Les utilisateurs de ces systèmes doivent être en mesure non seulement de comprendre comment ça marche mais aussi d'estimer l'efficacité de la sécurité d'un système. Ce livre présente les outils mathématiques et algorithmiques utiles en cryptographie.
Les techniques de base sont présentées avec un souci de concision et de clarté et sans formalisme mathématique excessif. Le cours est complété par des exercices simples dont les solutions (exercices impairs) sont données en fin d'ouvrage.
Édition Dunod
ISBN10 : 2100496220
ISBN13 : 9782100496228
Commandez sur www.amazon.fr :
33,25 € TTC (prix éditeur 35 € TTC) livraison gratuite !- Les entiers
- Congruences et classes résiduelles
- Chiffrement
- Probabilités et secret parfait
- DES
- AES
- Fabrication de nombres premiers
- Chiffrement à clés publiques
- Factorisation
- Logarithmes discrets
- Fonctions cryptographiques de hachage
- Signature digitale
- Autres systèmes
- Identification
- xPartage de secret
- Infrastructure de clés publiques
Voilà un bon livre sur la cryptographie d'un point de vue mathématique. J'avoue avoir été anxieux lors de la réception de ce livre. "Introduction à la cryptographie" est un titre qui peut être facilement mal interprêté.
Mais les premières pages nous mettent dans le bain : des mathématiques, en veux-tu en voilà. Tout d'abord, l'auteur rappelle quelques notions mathématiques basiques afin de ne perdre aucun lecteur en cours de route. Les premiers chapitres ne sont donc pas en rapport "direct" avec la cryptographie, mais simplement un rappel de quelques démonstrations et algorithmes élémentaires (notamment l'algorithme d'Euclide, le PGCD, probabilités), nécessaires à l'approche de la cryptographie.
Ainsi, après deux chapitres purement mathématiques, l'auteur nous plonge dans les entrailles du chiffrement, en définissant, toujours d'un point de vue mathématique, les notions générales de la cryptographie.
Suivant ce chapitre, l'auteur présente quelques algorithmes connus (RSA, DES, César, Vigenère et bien d'autres), puis la cryptanalyse et l'attaque des chiffres.
Enfin, deux chapitres couvrent l'étude des algorithmes de hachage et de signature digitale.
Ce livre est un complèment pour l'étudiant en école d'ingénieur, disposant d'exercices corrigés. Ainsi, le lecteur doit s'attendre à trouver la lecture difficile. Ce n'est pas un roman, aucune étude historique n'est faite de la cryptographie.
Malgré la volonté visible de l'auteur de faciliter la compréhension du lecteur, ce dernier devra avoir de bonnes connaissances en mathématiques pour ne pas être perdu, quitte à se replonger dans ses anciens cours.
Mon point de vue personnel est plutôt positif. Après avoir lu quelques livres sur la cryptographie d'un point de vue historique, je voulais en savoir plus sur le fonctionnement interne de cet art mystique. Si vous voulez savoir satisfaire votre curiosité à propos de la théorie de la cryptographie, ce livre est parfait.
Les explications de l'auteur sont pour la plupart claires, mais il faut prendre son temps pour lire. Je le répète, cela reste un livre très technique.
Si vous êtes curieux, si la cryptographie vous passione et si les mathématiques ne vous font pas peur, n'hésitez pas, vous ne serez pas déçu par ce livre.
Introduction à l'algorithmique
2e cycle - Ecoles d'ingénieurs
Résumé de l'éditeur
Cet ouvrage sans équivalent, exhaustif et d'accès facile est une introduction complète à l'algorithmique. Il s'adresse aussi bien aux étudiants qu'aux professionnels de l'informatique.
L'éventail des algorithmes étudiés dans ce livre va des plus classiques, comme les algorithmes de tri et les fonctions de hachage, aux plus récents, comme ceux de la cryptographie, permettant ainsi de passer progressivement des notions élémentaires aux thèmes les plus pointus.
Les auteurs, T. Cormen, C. Leiserson, R. Rivest et C. Stein, de renommée internationale, présentent tous les algorithmes dans un pseudo-code proche des langages Pascal, C et Fortran, ce qui les rend très faciles à comprendre et à implémenter.
Les algorithmes et leurs propriétés sont analysés en profondeur. Ils sont toujours complétés par des preuves mathématiques et illustrés par de nombreux exemples, figures, études de cas et exercices de difficulté graduée.
Au total ce sont plus de 920 exercices et 140 problèmes qui sont proposés.
La première édition s'était rapidement imposée comme un remarquable ouvrage de référence, aux États-Unis comme en France.
Cette seconde édition, profondément remaniée, mise à jour et enrichie, reste plus que jamais un outil de travail complet et indispensable.
Édition Dunod
ISBN10 : 2100039229
Broché, dimensions : 18 x 6 x 25
Commandez sur www.amazon.fr :
56,91 € TTC (prix éditeur 59,90 € TTC) livraison gratuite !- Introduction
- Rôle des algorithmes en informatique
- Premiers pas
- Croissance des fonctions
- Récurrences
- Analyse probabiliste et algorithmes randomisés
- Tri et rangs
- Tri par tas
- Tri rapide
- Tri en temps linéaire
- Médians et rangs
- Structures de données
- Structures de données élémentaires
- Tables de hachage
- Arbres binaires de recherche
- Arbres rouge-noir
- Extension d'une structure de données
- Techniques avancées de conception et d'analyse
- Programmation dynamique
- Algorithmes gloutons
- Analyse amortie
- Structures de données avancées
- B-Arbres
- Tas binomiaux
- Tas de Fibonacci
- Structures de données pour ensembles disjoints
- Algorithmes pour les graphes
- Algorithmes élémentaires pour les graphes
- Arbres couvrants de poids minimum
- Plus courts chemins à origine unique
- Plus courts chemins pour tout couple de sommets
- Flot maximum
- Morceaux choisis
- Réseaux de tri
- Calcul matriciel
- Programmation linéaire
- Polynômes et transformée rapide de Fourier
- Algorithmes de la théorie des nombres
- Recherche de chaînes de caractères
- Géométrie algorithmique
- NP-Complétude
- Algorithmes d'approximation
- Annexes : éléments de mathématiques
- Sommations
- Ensembles, etc.
- Dénombrement et probabilités
Un poids considérable, une qualité de papier surprenante, des schémas à foison, c'est la première impression que nous donne cette véritable encyclopédie des algos.
Tout développeur a eu besoin un jour d'un algorithme optimisé, seulement voilà, les études sont loin, et on fait généralement du code au "feeling" avec ce qu'il nous reste en tête.
Les thèmes abordés sont nombreux, cela va du simple tri à des techniques de cryptographie en passant par les inoubliables graphes.
Le livre est surtout axé mathématiques mais des exemples en pseudo code permettent d'adapter rapidement les algorithmes dans n'importe quel langage.
Dommage que pour les algos les plus avancés il n'y ait pas d'exemple de code, à part ce petit bémol, cet ouvrage est à posséder dans toute bonne bibliothèque.
Ce livre est absolument indispensable. Il permet d'apprendre l'algorithmique à lui tout seul, mais peut également être utilisé comme support de cours pour les étudiants et comme "aide-mémoire" pour les développeurs et chefs de projet.
Néanmoins, ce livre repose beaucoup sur les mathématiques, notamment en ce qui concerne l'efficacité des algorithmes et leur optimalité, avec des calculs de complexité et des modélisations mathématiques de problèmes. Il ne faut toutefois pas oublier que l'algorithmique est assez liée aux mathématiques et c'est en ce sens que ce livre, à mon avis, a fait le bon choix. Si vous n'êtes pas trop familier avec le calcul asymptotique ou les probabilités, vous pourrez y remédier grâce aux annexes fournies.
En ce qui concerne l'aspect purement algorithmique du livre, rien à redire. On dispose de nombreux algorithmes, que l'on découvre et qui nous sont expliqués d emanière très claire. Ayant adoré ce livre, je regrette qu'il n'expose pas un peu plus d'algorithmes pour d'autres domaines, mais ce serait probablement trop pour un seul livre. J'aurais en réalité bien aimé disposer d'un ouvrage "Algorithmique avancée" de ces mêmes auteurs, mais ça n'est pas encore le cas.
Quoiqu'il en soit, si vous cherchez un ouvrage pour apprendre l'algorithmique ou vous perfectionner dans ce domaine, "Introduction à l'algorithmique" est celui qu'il vous faut. Ce livre est un excellent cocktail de clarté, de rigueur et d'efficacité, tout simplement.
Algorithmes de graphes
Résumé de l'éditeur
Les graphes et leurs algorithmes sont des outils mathématiques utilisés pour modéliser et résoudre des problèmes complexes dans des domaines aussi variés que l'optimisation (production industrielle, aide à la décision...), la conception de réseaux (électriques, routiers, télécoms...) ou la modélisation de systèmes évolutifs (économie, automatique...). L'objet de ce livre est de rendre ces techniques fondées sur la théorie des graphes accessibles à des non-mathématiciens et de montrer comment les mettre en oeuvre dans des cas concrets.
Une première partie introduit les notions d'optimisation combinatoire et de complexité des algorithmes, et donne un large panorama des méthodes existantes, des plus classiques aux plus récentes (recuit simulé, tabou...). La seconde partie traite des différents problèmes de graphes : chemins optimaux, flots, tournées, coloration, etc.
Les algorithmes, soigneusement justifiés, sont accompagnés de programmes en pseudo-code et en langage Delphi (Pascal objet), ainsi que d'exemples d'applications commentées. Le CD-Rom d'accompagnement offre une véritable boîte à outil logicielle qui permettra au lecteur de résoudre ses problèmes de graphes sans avoir à programmer lui-même : un outil idéal pour des travaux pratiques d'étudiants ou pour le prototypage rapide d'applications professionnelles. Les sources en langage Delphi, qui sont fournis pour tous les algorithmes du livre, peuvent être modifiés par les programmeurs et incorporés dans leurs propres applications.
A qui s'adresse l'ouvrage ? Aux étudiants en mathématiques appliquées, algorithmique, recherche opérationnelle, gestion de production, économie et finance, aide à la décision, etc. Aux ingénieurs, enseignants-chercheurs, informaticiens, industriels, économistes et décideurs ayant à résoudre des problèmes complexes d'optimisation et d'aide à la décision.
Édition Eyrolles
ISBN10 : 2212113854
Commandez sur www.amazon.fr :
42,75 € TTC (prix éditeur 45,00 € TTC) livraison gratuite !- Introduction aux graphes
- Complexité des algorithmes et problèmes difficiles
- Résolution des problèmes difficiles
- Implémentation objet des graphes
- Explorations de graphes, composantes connexe et bipartisme
- Problèmes de chemins optimaux
- Problèmes de flots et de couplages
- Arbres et arborescences
- Parcours euleriens et hamiltoniens
- Problèmes de coloration
Comment aborder de manière efficace le difficile problème des graphes ? C'est à cette question que ce livre tente de répondre. Et il le fait bien. Les premiers chapitres sont une excellente introduction aux graphes, mais aussi à la complexité, son calcul et ses implications, et une implémentation de graphes.
En parlant de l'implémentation proposée par le livre, elle est faite en Delphi. Mais pour ceux qui voudraient l'implémenter dans d'autres langages, le livre leur donne des pistes pour les autres langages.
Les autres chapitres concernent les algorithmes de graphes proprement dit. La difficulté est croissante, ce qui permet de ne pas perdre le lecteur. Dans le même temps, chaque chapitre se termine par de multiples références pour que le lecteur puisse approfondir un sujet, au besoin. Malheureusement, elles sont souvent en anglais, mais avec une bonne introduction, ça passe mieux, ce qui est le cas ici.
Réseaux de neurones
Méthodologie et applications
Résumé de l'éditeur
Les réseaux de neurones constituent aujourd'hui une technique de traitement de données bien comprise et maîtrisée, qui devrait faire partie de la boîte à outils de tout ingénieur soucieux de tirer le maximum d'informations pertinentes des données dont il dispose : effectuer des prévisions, de la fouille de données, élaborer des modèles, reconnaître des formes ou des signaux, etc.
joignant fondements théoriques et applications pratiques dans un langage accessible, cet ouvrage permettra aux décideurs, aux ingénieurs et aux chercheurs de bénéficier de méthodologies claires pour mettre en oeuvre les réseaux de neurones dans des applications industrielles, financières ou bancaires, dont de nombreux exemples sont présentés. Cette deuxième édition mise à jour et enrichie des derniers développements dans le domaine est accompagnée d'un CD-Rom contenant des d'exemples de modèles en C avec leurs données et d'un outil d'apprentissage dédié, Neuro One (version d'évaluation).
A qui s'adresse ce livre ? - Aux ingénieurs, informaticiens, industriels et décideurs ayant à résoudre des problèmes de modélisation, de reconnaissance, de prévision, de commande, etc. - Aux étudiants et élèves ingénieurs des disciplines scientifiques et économiques, et à leurs enseignants.
Édition Eyrolles
ISBN10 : 2212114648
Broché, dimensions : 17 x 3 x 23
Commandez sur www.amazon.fr :
49,40 € TTC (prix éditeur 52,00 € TTC) livraison gratuite !- Les réseau de neurones : pourquoi et pour quoi faire ?
- Modélisation à l'aide de réseaux de neurones : principes et méthodologie de conception de modèles
- Compléments de méthodologie pour la modélisation : réduction de dimension et ré-échantillonnage
- Identification "neuronale" de systèmes dynamiques commandés et réseaux bouclés (récurrents)
- Apprentissage d'une commande en boucle fermée
- La discrimination
- Cartes auto-organisatrices et classification automatique
- Réseaux de neurones sans apprentissage pour l'optimisation
- Bibliographie commentée
- Outils pour les réseaux de neurones (CDROM)
Après une rapide introduction au concept de réseaux de neurones, le lecteur est plongé dans une description d'un grand nombre de types de réseaux de neurones différents avec pour chacun d'eux leurs propriétés et des domaines d'utilisation. Toutes ces présentations sont étroitement liées à des explications statistiques permettant de préparer et de traiter de manière optimale les données à manipuler dans le réseau.
Cet ouvrage traite des réseaux de neurones par un grand nombre d'aspects : algorithmique, statistique, algébrique, avec également des exemples d'applications aussi divers que variés pour notre plus grand bonheur. Il y en a pour tous les goûts.
Le lecteur pourra néanmoins être dérouté par l'excès de formalisme mathématique au détriment d'explications en langage naturel, c'est la raison pour laquelle il faut un solide bagage théorique/statistique/mathématique avant d'attaquer cet ouvrage. On appréciera au plus haut point les explications multiples pour un même concept et la mise en page très claire, mettant en évidence des encadrés "A retenir", "rappel" ou encore "définition", ainsi que des schémas nombreux et clairs. Bref, un ouvrage très utile mais d'une approche pas toujours évidente.
Réseaux bayesiens
Résumé de l'éditeur
Modèles de connaissances pour l'aide à la décision, le diagnostic ou le contrôle de systèmes complexes. Technique mathématique combinant statistiques et intelligence artificielle, les réseaux bayésiens permettent d'analyser de grandes quantités de données pour en extraire des connaissances utiles à la prise de décision, contrôler ou prévoir le comportement d'un système, diagnostiquer les causes d'un phénomène, etc. Les réseaux bayésiens sont utilisés dans de nombreux domaines : santé (diagnostic, localisation de gènes), industrie (contrôle d'automates ou de robots), informatique et réseaux (agents intelligents), marketing (data mining, gestion de la relation client), banque et finances (scoring, analyse financière), management (aide à la décision, knowledge management, gestion du risque), etc. Fondements théoriques, méthodologie de mise en oeuvre, exemples d'application et panorama des outils.
Après une première partie de présentation "intuitive" des réseaux bayésiens accompagnée d'exercices, la deuxième partie du livre en expose les fondements théoriques, avec une étude détaillée des algorithmes les plus importants.
Résolument pratique, la troisième partie de l'ouvrage propose une méthodologie de mise en oeuvre, un panorama des domaines d'application, trois études de cas détaillées, ainsi qu'une présentation des principaux logiciels de modélisation de réseaux bayésiens (Bayes Net Toolbox, BayesiaLab, Hugin et Netica).
À qui s'adresse l'ouvrage ? Aux ingénieurs, informaticiens, industriels, biologistes, économistes confrontés à des problèmes d'analyse de données, d'aide a la décision, de gestion des connaissances, de diagnostic ou de contrôle de systèmes. Aux étudiants en mathématiques appliquées, algorithmique, économie, recherche opérationnelle, gestion de production, automatique.
Édition Eyrolles
ISBN10 : 2212111371
Commandez sur www.amazon.fr :
39,00 € TTC (prix éditeur 37,05 € TTC) livraison gratuite !- INTRODUCTION AUX RESEAUX BAYESIENS
- Approche intuitive
- Introduction aux algorithmes : inférence, apprentissage
- Exercices corrigés
- CADRE THEORIQUE ET PRESENTATION DETAILLEE DES ALGORITHMES
- Modèles
- Propagations
- Apprentissage
- METHODOLOGIE DE MISE EN OEUVRE ET ETUDES DE CAS
- Mise en oeuvre des réseaux bayésiens
- Panorama des applications
- Étude de cas n° 1 : gestion des risques (EDF)
- Étude de cas n° 2 : modélisation d'un réseau électrique (EDF)
- Étude de cas n° 3 : application de scoring pour la vente de crédit en ligne
Comme on pouvait s'y attendre devant ce sujet, le livre est tout de même difficile à comprendre.
Heureusement, les auteurs ont commencé par une petite partie introductive abordable - même s'il faudra chercher dans les annexes les notations pour comprendre les équations, moins une étoile pour cela - suffisamment simple pour que toute personne ayant une notion de probabilité puisse comprendre.
Attention, que ceux qui ne connaissent rien des probabilités et de la règle de Bayes passent leur chemin. Oui, les réseaux bayesiens permettent de résoudre beaucoup de problèmes, mais ce livre ne vous apprendra pas les bases indispensables de la statistique et des probabilités, ce n'est pas non plus son objectif.
La deuxième partie est la partie complexe, celle qui énonce les théorèmes et les algorithmes. A la première lecture, on ne comprend pas tout, c'est normal, il faut se replonger plusieurs fois dedans pour voir vraiment ce qui se passe, pour pouvoir comprendre en détail les algorithmes.
La dernière partie permet de ce faire une idée de ce qu'on peut réaliser avec des réseaux bayesiens. La pratique est en effet indispensable pour comprendre ce vaste sujet. En revanche, aucun code n'est fourni, on est invité à regarder ce que le commerce propose de libre ou de payant, on reste donc un peu sur sa faim à ce niveau, mais n'oublions pas que ce sujet est complexe, et que les programmes sur les réseaux bayesiens sont relativement récents, donc fournir un code source pour ces objets n'est pas chose facile.
Simulation numérique en C++
Résumé de l'éditeur
La simulation numérique est devenue un outil de compréhension et de contrôle irremplaçable dans de très nombreux domaines comme la physique, la mécanique, la biologie, la finance, l'industrie… Cet ouvrage présente les techniques les plus avancées pour la simulation et la programmation en C++ de systèmes modélisés par des équations aux dérivées partielles (EDP).
Édition Dunod
ISBN10 : 2100069756
ISBN13 : 9782100069750
Commandez sur www.amazon.fr :
33,73 € TTC (prix éditeur 35,50 € TTC) livraison gratuite !- Introduction au calcul numérique
- Algorithmes et techniques avancées
- La plus simple des méthodes d'éléments finis
- Graphiques
- Triangulations automatiques
- Une méthode intégrale tridimensionnelle
- Différienciation automatique
- De C++ à Java
- Création d'un langage utilisateur
Difficile de donner un avis objectif sur ce livre, il couvre des domaines très différents.
La partie C++ est décevante de point de vue, On attend plus d'un livre sorti en 2003 qui ne parle même pas de la STL ! Il est dommage de consacrer une grande partie du livre au C++ sans parler des véritables avantages du C++ et des bibliothèques existantes pouvant résoudre les problèmes présentés. On passera sur la partie Java et celle créant un langage utilisateur, autant utiliser un langage prouvé (Python par ex). Un intérêt peut être porté à la partie OpenGL, à titre d'introduction.
En revanche, la partie sur la simulation numérique est donc purement sur les méthodes à éléments finis. Il faut s'accrocher, mais c'est normal, il ne s'agit pas d'un livre consacré à ces méthodes, mais sur leur approche programmatoire (un précédent ouvrage est consacré à la partie algorithmie, Introduction au calcul scientifique). La difficulté s'accroit au fur et à mesure, c'est appréciable de ne pas se retrouver directement au dernier chapitre.
On regrettera toutefois le manque d'explications sur certains termes, qui sont considérés comme acquis, mais qu'un programmeur ne connaîtra pas forcément, contrairement à un étudiant dans le domaine (la modélisation), il faut donc s'armer d'Internet pour compléter sa lecture (la connaissance de l'analyse numérique ne suffit pas, malgré ce qui est indiqué dans l'introduction du livre).
Compilateurs
Résumé de l'éditeur
Un compilateur est l'une des parties les plus vitales d'un système informatique. Il permet de traduire un programme écrit en langage évolué (comme Pascal, Ada, C++ ou Java) en un langage simplifié que la machine est capable de comprendre et d'exécuter. Cet ouvrage décrit des techniques de compilation adaptées à tous les langages, logiques, distribués, fonctionnels et orientés objets.
Des techniques d'optimisation et des outils de compilation automatique sont aussi présentés. Des exercices corrigés complètent le cours.
Édition Dunod
ISBN10 : 2-10-005887-8
Commandez sur www.amazon.fr :
56.91 € TTC seulement (au lieu de 59.9 € TTC : prix éditeur) livraison gratuite !- Introduction
- Du texte du programme à l'arbre abstrait
- Décoration de l'arbre abstrait : le contexte
- Traitement du code intermédiaire
- Gestion de la mémoire
- Programmes impératifs et orientés objet
- Programmes fonctionnels
- Programmes logiques
- Programmes parallèles et distribués
- Un compilateur/interprète orienté objet simple
Cet ouvrage de près de 800 pages très complet traite de tous les outils permettant la conception et la réalisation d'un compilateur. Même si la difficulté est progressive, le livre reste assez délicat à appréhender, mais la réalisation d'un compilateur est de toute manière quelque chose de très difficile.
Le cours traite d'abord des outils théoriques utilisés dans la réalisation d'un compilateur : analyseur lexicale, analyseur syntaxique et analyseur sémantique. Les notions de bases en théorie du langage sont également revues : langage, grammaire, automate, automate à pile... De nombreux détails sont donnés, notamment au niveau des optimisations possibles.
Les auteurs ont donné de nombreux exemples pour permettre de créer un analyseur lexical et un analyseur syntaxique. Soit directement, soit en utilisant un outil externe comme Lex et Yacc (exemples en langage C).
J'ai particulièrement apprécié certains chapitres, notamment l'introduction à des théories un peu à part tel que la gestion de l'allocation dynamique (comment éviter la fragmentation de la mémoire...) et la création d'un ramasse-miette (souvent appelé Garbage Collector).
Ce livre ne s'arrête pas à l'explication de la compilation d'un langage impératif de haut niveau vers un langage impératif de bas-niveau, ce qui est souvent le cas avec ce type de cours, mais explique en détails les techniques de compilation pour des langages fonctionnels, objets et logique, tout en détaillant de nombreuses optimisations possibles. Un chapitre introduit même des outils pour permettre de paralléliser ou de distribuer des algorithmes simples.
Pour finir, le cours donne un exemple complet de réalisation d'un compilateur en Java.
Pour résumer, ce cours est très complet et touche à tous les domaines de la compilation. Des exercices sont proposés à chaque fin de chapitre et de nombreux exemples pratiques sont donnés. Si le lecteur souhaite en savoir d'avantage, la bibliographie est recapitulé pour chaque chapitre, ce qui permet de rapidement s'y retrouver.
On ne parle pas ici des dernières techniques d'optimisation, mais bien de l'architecture et du design d'un compilateur, les fameux front-ends et back-ends. On ne parle pas non plus des techniques utilisées apr les compilateurs les plus récents qui sont cités tout au plus.
En revanche, les différentes étapes de transformation d'un programme sont exposées de manière plus ou moins claire. Il est dommage de connaître un peu les parseurs pour comprendre le chaître qui leur est consacré, tellement les explications sont succintes et donc le chapitre est un peu obscure - on n'explique pas clairement ce qu'est un parseur LL(n) ou LR(n) et leur dérivés, on doit trouver l'explication en inférant sur les éléments donnés -. en revanche, on comprend mieux au fur et à mesure, l'habitude du livre, sans doute.
Contrairement à d'autres livres dont j'ai pu regarder la table des matières, ce livre prend beaucoup de temps pour exposer les spécificités des langages qu'on utilise plus ou moins couremment. Par exemple pour les langages logiques, on n'utilisera pas les mêmes systèmes d'optimisation et de création que pour un langage impératif. On parle toujours de transformer ces langages en C ou C++ qui sera lui utilisé par un compilateur standard.
Dans l'ensemble, un très bon livre plutôt orienté vers les débutants en programmation de compilateurs et les gens désireux d'apprendr eun peu plus sur les compilateurs, même si les premiers devront définitivement compléter leur lecture par des ouvrages spécifiques à chaque sous-partie.
Introduction à la calculabilité
Résumé de l'éditeur
Dans le monde de l'informatique en perpétuelle évolution, une connaissance élémentaire de la théorie de la calculabilité reste plus que jamais indispensable à l'informaticien, qui se pose sans cesse la question des limites de l'informatique. La théorie de la calculabilité apporte des réponses. Elle démontre notamment que certains problèmes informatiques ne peuvent pas être résolus par des programmes. Cet ouvrage présente les éléments essentiels de cette science qui consiste à étudier ce qu'il est possible ou non de résoudre grâce à l'outil informatique, quelle que soit la machine utilisée. Il aborde en premier lieu les langages formels, les automates et les grammaires puis introduit la notion de calculabilité par le biais des machines de Turing et des fonctions récursives. En dernier lieu, sont étudiées les notions de complexité, et plus particulièrement les problèmes NP-complets. Ce manuel comporte de nombreux exercices d'application, ainsi que leurs corrigés. Cette troisième édition s'enrichit d'une section sur l'interprétation de la non-calculabilité et approfondit la notion de NP-complétude. Si ce livre constitue avant tout un cours destiné aux étudiants en informatique, il s'adresse également aux professionnels désireux de mieux comprendre cette science.
Édition Dunod
ISBN10 : 2100499815
Commandez sur www.amazon.fr :
28,41 € TTC (prix éditeur 29,90 € TTC) livraison gratuite !- Introduction
- Les automates finis
- Les grammaires régulières
- Automates à pile et langages hors-contexte
- Les machines de turing
- Les fonctions récursives
- La non-calculabilité
- La complexité
- Solution des exercices
Cet ouvrage est un cours sur la calculabilité dont la vocation première est de servir de support de cours aux étudiants de 2nd cycle en informatique et aux élèves ingénieur. L'ensemble des bases de cette matière y sont abordés ( cf : table des matières). Les explications claires et les exercices judicieusement choisis en font un ouvrage de référence que tout étudiant en informatique se doit de consulter.
S'agissant d'un cours de second cycle, il convient de posséder quelques bases pour tirer le maximum de bénéfices des savoirs prodigués par cet ouvrage. En outre, des connaissances concernant les ensembles et la théorie des graphes s'avèrent indispensables.
Outre le cours théorique à destination des étudiants, la lecture de ce livre est intéressante à tout informaticien désireux de comprendre : l'utilisation des expressions régulières, la mise au point d'un langage de programmation et les principes l'analyse syntaxe, les ensembles de définition de fonctions. Et plus généralement, la calculabilité …
Intelligence Artificielle
Résumé de l'éditeur
Ce livre est LA référence en matière d'Intelligence Artificielle. Il en décrit et analyse tous les concepts : la logique, les probabilités et les mathématiques discrètes et du continu, la perception, le raisonnement, l'apprentissage, la prise de décision et l'action. Sa particularité est de présenter l'IA à travers le concept des agents intelligents, c'est-à-dire de systèmes qui décident de ce qu'il convient de faire. Les auteurs expliquent ainsi comment un agent intelligent réussit à percevoir son environnement de manière à déterminer et analyser ce qu'il s'y passe.
Édition Pearson Education
ISBN10 : 2744071501
ISBN13 : 9782744071508
Commandez sur www.amazon.fr :
68.40 € TTC seulement (au lieu de 72.00 € TTC : prix éditeur) livraison gratuite !- Intelligence artificielle
- Résolution de problèmes
- Connaissances et raisonnement
- Planification
- Connaissances et raisonnement en environnement incertain
- Apprentissage
- Communication, perception et action
- Conclusions
Ce livre est tout simplement excellent, à mes yeux. Au départ, on peut ne rien connaître de l'intelligence artificielle, tout simplement en avoir entendu parler, juste savoir que cela existe. Dès le début, les auteurs nous plongent dans cet univers grâce à un chapitre décrivant l'histoire de l'Intelligence Artificielle (IA). Par la suite, les auteurs vont peu à peu introduire certaines notions telles que celle "d'agent intelligent", introduite dès le début. Cette notion est d'ailleurs la notion centrale du livre, car c'est autour de cette dernière que va s'orienter toute la suite du livre.
Une particularité de ce livre est qu'il est assez théorique. Le lecteur est amené à réfléchir sur des sujets passionnants, à mettre en relation des concepts et à les exploiter lui-même. En effet, parmi les 400 et quelques exercices, certains sont des exercices de réflexion, simplement. D'autres, à l'opposé, sont des exercices de programmation. Il est cependant important de s'intéresser à l'aspect "réflexion" de ce livre car il vous fera comprendre excessivement plus facilement bien des concepts et algorithmes d'IA.
Si ce livre vous intéresse mais que vous hésitez à cause de l'aspect théorique, je ne peux que vous conseiller de le feuilleter si vous le pouvez, ou bien de consulter sa table des matières. Pourquoi ? Car si il aborde vraiment les thèmes qui vous intéressent, la théorie ne sera pas un problème. Bien que la démarche adoptée soit plutôt nettement scientifique, il demeure toutefois accessible grâce à son côté philosophie, car il est bien question de philosophie de l'IA. On y apprend à raisonner sur les agents intelligents dans un contexte donc à la fois scientifique et philosophique. Toutefois, ce livre n'est pas non plus accessible à Mr Tout le monde. Il faut tout de même avoir de bonnes notions d'algorithmie et avoir été ne serait-ce qu'un peu sensibilisé aux problématiques abordées ici. Par exemple : comment fait l'ennemi dirigé par l'ordinateur dans tel jeu pour avoir le meilleur angle de tir et pour décider du meilleur moment pour ce faire ?
En conclusion, ce livre aborde donc tous les aspects qui concernent l'IA. De la prise de décisions au raisonnement, on découvre un nouveau monde passionnant. Il ne faut toutefois pas vous attendre à des exemples en C++, Java ou autres car ce livre est à visée générique et ne cible donc aucun langage. Il s'agit ici de comprendre certaines logiques et de savoir les mettre en oeuvre. C'est donc un excellent livre pour découvrir ce monde. Il devient bien plus facile après sa lecture d'aborder l'implémentation d'intelligences artificielles dans vos programmes.
Géométrie algorithmique
Résumé de l'éditeur
Ce livre présente les fondements de cette discipline qui associe algorithmique et géométrie combinatoire. Il introduit les principales structures géométriques : polytopes, triangulation, arrangements et diagrammes de Voronoï, et réserve une place centrale à la randomisation, technique probaliste qui conduit à des méthodes générales, simples et efficaces. Le contenu de ce livre a fait l'objet de cours donnés dans le cadre de pusieurs DEA à la charnière entre mathématiques et informatique.
Édition Dunod
ISBN10 : 2840741121
Commandez sur www.amazon.fr :
41,71 € TTC (prix éditeur 43,90 € TTC) livraison gratuite !- Outils algorithmiques
- Enveloppe convexe
- Triangulations
- Arrangements
- Diagrammes de Voronoï
Si vous assimilez le contenu de ce livre, vous serez à même de réaliser des raisonnements poussés sur de nombreux problèmes de géométrie, allant des problèmes de projections en dimension N au cloisonnement des arrangements de triangles en passant par les métriques non euclidiennes.
Bien que destiné, je cite, "aux lecteurs de bonne volonté", ne vous aventurez pas dans ce livre sans de solides connaissances en mathématiques et sans une motivation certaine. Ce livre est construit comme un cours magistral universitaire qui pourra en décourager plus d'un : théorèmes, preuves, lemmes, exercices (non corrigés). Certains pourraient benoitement penser que s'agissant de géométrie les raisonnements s'en trouveraient moins rigoureux et plus accessibles, détrompez-vous, les écritures mathématiques se retrouvent à chaque page et ne servent pas qu'à décorer. On apprécie cependant au plus haut point l'omniprésence des schémas (oui, le thème du livre reste la géométrie), déjà que pas évidente, je n'ose imaginer une lecture et une compréhension minimale sans eux.
Vous devrez faire preuve de patience pour retirer un avantage de ce livre. Le formalisme mathématique trop poussé est un frein à la recherche rapide d'une information, vous serez noyé dans les multiples lemmes et preuves. N'espérez pas utiliser ce livre comme un ouvrage de référence, sa lecture vous apportera une nouvelle approche de la géométrie avec de nouveaux raisonnements mais pas de réponses rapides à des problèmes concrets. Ne vous étonnez pas non plus si le côté informatique de certains raisonnements vous échappe, les explications sont fortement orientées sur l'aspect théorique et mathématique.
Je recommande spécialement ce livre aux étudiants en école d'ingénieur qui souhaitent prolonger leurs cours, mais aussi aux ingénieurs confirmés devant se lancer dans des raisonnements géométriques avancés.
Programmation et Algorithmique en VBA pour Excel
Résumé de l'éditeur
L'objectif de ce manuel est d'expliquer les bases de la programmation impérative et de l'algorithmique aux débutants en informatique (étudiants en licence ou écoles d'ingénieurs, mais aussi étudiants de master d'autres disciplines, désirant acquérir une seconde compétence). L'ouvrage s'attache à présenter des notions fondamentales et des principes généraux des langages de programmation. Le choix de l'environnement de programmation VBA (Visual Basic for Application) appliqué au logiciel Excel, permet d'écrire rapidement des programmes à la fois intéressants sur le plan pédagogique et attractifs pour les étudiants. Le cours présente les différentes notions abordées en les illustrant par de nombreux exemples. Des exercices corrigés accompagnent chaque chapitre et un chapitre de problèmes de synthèse clôt la présentation. L'ouvrage comporte neuf chapitres qui s'organisent en trois volets. Le premier est consacré à l'étude de la programmation : structures de contrôle, fonctions, procédures et macros, programmation objet en VBA... Le deuxième est une initiation à l'algorithmique : méthodes de recherche et de tri, algorithmes, implémentations et analyse de complexité. Le troisième propose une étude de l'algorithme de mise à jour du tableur, qui assure la cohérence globale de l'affichage de la feuille de calcul. Des compléments sur la prise en main d'Excel et de VBA sont également disponibles en annexe, ainsi qu'un résumé des connaissances nécessaires concernant le tableur, et un manuel de référence pour le langage utilisé dans le livre. Un site compagnon propose aussi des documents complémentaires et les codes sources de différents exercices.
A propos des auteurs
Anne Brygoo, Maryse Pelletier, Michèle Soria et Séverine Dubuisson sont enseignants-chercheurs à
l'université Pierre et Marie Curie (UPMC, Paris 6). Elles travaillent ensemble depuis longtemps et ont
participé à la rédaction de différents ouvrages d'initiation à l'informatique.
Ce livre est le fruit d'une réflexion développée depuis plusieurs années et modelée au contact de milliers
d'étudiants, pour présenter la programmation impérative de façon rigoureuse, originale et motivante.
Édition DUNOD
ISBN10 : 2100507990
Commandez sur www.amazon.fr :
18.90 € TTC (prix éditeur 14 € TTC) livraison gratuite ! (voir conditions)- Noyau de Visual Basic
- Récursion et boucles
- Procédures et entrées/sorties
- Objets en VBA Excel
- Programmation de calculs
- Algorithmes de recherche
- Algorithmes de tri
- Algorithmes de mise à jour
- Problèmes de synthèse
Ce livre s'adresse à deux types de public :
Les initiés à la programmation VBA sous Excel qui veulent acquérir quelques connaissances algorithmiques.
Les initiés à l'algorithmique qui veulent voir une application concrète des principes sous VBA Excel.
Comme vous l'avez compris, ce livre n'est pas pour les débutants, mais pour un public d'initiés.
Vous y découvrirez à la fois une petite initiation au VBA sous Excel et une à l'algorithmique.
Cet ouvrage vous permettra de comprendre le fonctionnement des boucles de recherches, des tris de différentes
manières.
Vous y trouverez également de nombreux exercices corrigés.
Bien que réservé au départ à des étudiants Post-Bac, cet ouvrage est excellent pour ceux qui veulent aller un peu plus loin.
Apprentissage statistique
Réseaux de neurones - Cartes topologiques - Machines à vecteurs supports
Résumé de l'éditeur
L'apprentissage statistique permet la mise au point de modèles de données et de processus lorsque la formalisation de règles explicites serait impossible : reconnaissance de formes ou de signaux, prévision, fouille de données, rise de décision en environnement complexe et évolutif. Ses applications sont multiles dans le monde de la production industrielle (robotique, maintenance préventive, développement de capteurs virtuels, planification d'expériences, aide à la conception de produits), dans le domaine de la biologie et de la santé (aide au diagnostic, aide à la découverte de médicaments, bio-informatique), en télécommunications, en marketing et finance, et dans bien d'autres domaines.
Sans omettre de rappeler les fondements théoriques de l'apprentissage statistique, cet ouvrage offre de solides bases méthodologiques à tout ingénieur ou chercheur soucieux d'exploiter ses données. Il en présente les algorithmes les plus couramment utilisées - réseaux de neurones, cartes topologiques, machines à vecteurs supports, modèles de Markov cachés - à l'aide d'exemples et d'études de cas industriels, financiers ou bancaires.
Édition Eyrolles
ISBN10 : 2212122292
Commandez sur www.amazon.fr :
52 € TTC (prix éditeur 52 € TTC) livraison gratuite !- L'apprentissage statistique : pourquoi, comment ?
- Les réseaux de neurones
- Compléments de méthodologie pour la modélisation : réduction de dimension et ré-échantillonnage
- Identification neuronale de systèmes dynamiques commandés et réseaux bouclés (récurrents)
- Apprentissage d'une commande en boucle fermée
- La discrimination
- Cartes auto-organisatrices et classification automatique
- Outils pour les réseaux de neurones et contenu du CD-ROM
Ce livre présente très bien la théorie de l'apprentissage statistique et nous fait réellement rendre conscience de son importance dans le monde actuel. En effet, un premier chapitre aborde les généralités sur l'apprentissage statistique : pourquoi, comment, etc. Ensuite, un deuxième chapitre se consacre entièrement aux réseaux de neurones, et la pari est gagné. On est plongé dans l'apprentissage statistique et la théorie des réseaux de neurones est expliquée mais également accompagnée de nombreux exemples, afin de ne pas perdre le lecteur dans les explications, de la reconnaissance de formes à la fouille de données en passant par la robotique et la prédiction de température notamment. Le chapitre suivant lui traite de réduction de dimension et de ré-échantillonnage, où comment mieux préparer les entrées nos outils de prédiction, apprentissage. On y voit notamment l'analyse en composantes principales (ACP), curvilignes (ACC). Puis l'on voit des réseaux de neurones plus complexes, les réseaux de neurones bouclés (ou "récurrents"), la discrimination, les cartes auto-organistratices et les machines à vecteurs supports.
J'ai énormément apprécié ce livre et en attendais beaucoup, et il m'a satisfait sur tous les points sauf un : les machines à vecteurs supports. En effet, je m'attendais à bien plus d'explications et de pages sur le sujet, mais c'est la seule chose qui m'a déçue avec ce livre. Si vous êtes intéressés par l'apprentissage statistique ou par n'importe laquelle de ses applications, alors ce livre et pour vous, satisfaisant à la fois les fous de théories comme les practiciens. Attention toutefois, il faut un certain niveau en mathématiques statistiques pour aborder sereinement ce livre.
Calculateurs, calculs, calculabilité
Résumé de l'éditeur
Cet ouvrage s'adresse aux étudiants ayant une expérience, même légère, de la programmation, qu'ils soient en licence ou en master d'informatique (niveaux L2, L3 ou M1) ou en écoles d'ingénieurs.
Il existe en informatique des limites qui sont aussi fondamentales que la vitesse de la lumière ou le second principe de la thermodynamique. Elles concernent autant l'existence de solutions informatiques à des problèmes, que le coût de ces solutions quand elles existent. L'objectif de cet ouvrage est de jalonner ces frontières en adoptant le point de vue du programmeur.
Cet ouvrage correspond à un enseignement donné en deuxième année de licence et réparti en séances de cours et séances de TP, car beaucoup d'étudiants comprennent mieux les définitions en les implémentant.
Rédigé dans un style aussi simple que possible, cet enseignemtn donne aussi une ouverture sur l'histoire de cette discipline en introduisant de courtes biographies d'acteurs importants (Cantor, von Neumann, Turing...) et quelques textes remarquables.
Édition Dunod
ISBN10 : 2100515888
ISBN13 : 9782100515882
Commandez sur www.amazon.fr :
23,75 € TTC (prix éditeur 25,00 € TTC) livraison gratuite !- LES CALCULATEURS
- État des calculateurs
- Changement d'état
- Ce que calcule un calculateur
- LES ENSEMBLES DE CANTOR
- Intuition et définitions
- Principaux résultats
- LE PROBLEME DE L'ARRET
- Preuve
- Preuve en images
- Méthode de la réduction
- LE THEOREME DE RICE
- Preuve
- Preuve en images
- Les programmes WHILE
- Syntaxe des programmes WHILE
- Sémantique du langage WHILE
- Programmer avec le langage WHILE
- LES PROGRAMMES FOR
- Syntaxe des programmes FOR
- Sémantique du langage FOR
- Puissance de calcul du modèle FOR
- LA COMPLEXITE DES FONCTIONS
- Intuition
- Notation
- Quelques ordres de grandeur
- LES PROBLEMES P ET NP
- Calculer, vérifier et réduire
- Indéterminisme
Ce livre, court et simple d'approche, est un très bon moyen de s'introduire à la calculabilité. Il ne repose sur aucun prérequis en la matière, et est donc destiné au débutant de la discipline.
La calculabilité y est présentée comme une discipline d'aspect pratique pour le programmeur, et les explications, bien qu'évidemment théoriques - la calculabilité est, tout de même, un domaine très théorique -, sont agrémentées de conclusions très pratiques. Et surtout, chose particulièrement appréciable, de "preuves en images", qui montrent graphiquement la construction des programmes "artificiels" utilisés dans les démonstrations théoriques. Ces preuves en images sont d'une très grand aide à la compréhension, et à l'appropriation de ces démonstrations.
Il faut par contre se rendre compte que cet ouvrage est une introduction à la calculabilité. Elle a pour but de présenter au programmeur cette discipline, et de la motiver - ce qu'elle fait d'ailleurs très bien. Mais elle ne va guère plus loin, et n'est donc pas indiquée pour le lecteur qui a déjà des rudiments de calculabilité.
Ce livre complètera très bien un premier cours de calculabilité pour les étudiants. Il permettra aussi à tout programmeur de découvrir facilement, et avec intérêt, la calculabilité.
C'est donc un ouvrage que je recommanderais à toute personne désirant s'initier à ce domaine.
Apprendre à programmer
Algorithmes et conception objet
Résumé de l'éditeur
Destiné à tous ceux qui débutent en programmation, cet ouvrage très pédagogique leur apprendra comment concevoir et écrire un programme de manière claire et efficace, quel que soit le langage employé. Prenant comme exemple un langage algorithmique, ce livre expose les bases de la programmation (variables, tableau, boucles, fonctions), puis introduit les objets (utilisation et écriture d'objets) et les structures de données (analyse objet). Chaque chapitre se clôt par une série d'exercices corrigés qui manipulent les concepts de base de l'algorithmique objet. L'ouvrage est complété par une étude de cas décrivant la conception et l'écriture d'un jeu de Puissance 4, projet qui fait la synthèse de toutes les connaissances acquises.
Édition Eyrolles
ISBN10 : 2212123507
ISBN13 : 9782212123500
Broché
Commandez sur www.amazon.fr :
29.00 € TTC (prix éditeur 27.55 € TTC) livraison gratuite !- Algorithmique simple
- Les objets
- Les structures de données
- Projet et exercices
- Annexes
Si vous débutez dans la programmation et que vous souhaitez prendre en main les concepts fondamentaux de la POO, ce livre regorge d'information qui vous sera utile. Au début de la lecture, l'auteur aborde une approche procédurale afin de bien présenter les fondements de la programmation. Ensuite, l'auteur aborde la programmation orientée objet, qui va être mise en application dans la partie sur les structures de données. À la fin de ce livre, vous devez construire un jeu de puissance 4 afin de mettre les connaissances que vous avez acquises dans le livre en pratique.
Tout d'abord, l'auteur utilise une approche progressive et pédagogique en mettant en œuvre les notions des chapitres précédents, ce qui permet au lecteur d'avoir plusieurs exemples d'application. Aussi, l'auteur a intégré 40 exercices dans le livre, ce qui permet au lecteur de mettre en pratique les connaissances acquises. Un corrigé des exercices est disponible dans la fin du livre et on y retrouve des explications ainsi que des pistes pour ceux qui ont de la difficulté. J'ai aussi aimé l'accent de l'auteur face au cahier de charge, puisqu'une bonne compréhension de ceux-ci est essentielle dans divers projets.
Par contre, je trouve que l'auteur aurait dû accorder plus d'importance au chapitre touchant les langages de programmation et présenter certains outils de développement afin de mettre en application le projet de puissance 4.
Pour conclure, ce livre présente bien les fondements de la programmation et de la programmation orientée objet, mais un effort personnel important reste à être donné par le lecteur afin d'être autonome dans le développement d'application.
Algorithmique
Techniques fondamentales de programmation
Résumé de l'éditeur
Présentation de l'éditeur
Ce livre s'adresse à toute personne désireuse de maîtriser les bases essentielles de la programmation.
Pour apprendre à programmer, il faut d'abord comprendre ce qu'est vraiment un ordinateur, comment il
fonctionne et surtout comment il peut faire fonctionner des programmes, comment il manipule et stocke
les données et les instructions, quelle est sa logique. Alors, au fur et à mesure, le reste devient
évidence : variables, tests, conditions, boucles, tableaux, fonctions, fichiers, jusqu'aux notions
avancées comme les pointeurs et les objets.
Dans ce livre, le langage algorithmique (ou la syntaxe du pseudo-code des algorithmes) reprend celui
couramment utilisé dans les écoles d'informatique et dans les formations comme les BTS, DUT, premières
années d'ingénierie à qui ce livre est en partie destiné et conseillé. Une fois les notions de base
acquises, le lecteur trouvera dans ce livre de quoi évoluer vers des notions plus avancées : deux chapitres,
l'un sur les pointeurs et les références, l'autre sur les objets, ouvrent les portes de la programmation
dans des langages évolués et puissants comme le C, le C++ et surtout Java.
Une grande partie des algorithmes de ce livre sont réécrits en Java et les sources, directement utilisables,
sont disponibles en téléchargement sur le site de l'éditeur (www.eni-livres.com).
Biographie de l'auteur
Sébastien ROHAUT est Ingénieur Système en missions régulières pour de grands comptes. Il enseigne également Unix et PHP à des classes préparatoires et d'ingénieurs. Fortement investi dans le monde des logiciels libres (fondateur et ancien président de Slyunix, association de promotion de Linux), il a organisé des "Install Parties" et des rencontres avec des débutants sous Linux dont il connaît parfaitement les problèmes. Enfin, il écrit fréquemment dans la presse spécialisée (Planète Linux...) des articles destinés aux amateurs de Linux et des logiciels libres.
Édition Editions ENI
ISBN10 : 2746039605
Commandez sur www.amazon.fr :
25.78 € TTC (prix éditeur 25.78 € TTC) livraison gratuite !Chapitres
- Chapitre 1 : Introduction à l'algorithmique
- A. Les fondements de l'informatique
- B. L'algorithmique
- C. Les langages d'implémentation
- Chapitre 2 : Les variables et opérateurs
- A. La variable
- B. Opérateurs et Calculs
- C. Pour aller plus loin
- D. Types et langages
- Chapitre 3 : Tests et logique booléenne
- A. Les tests et conditions
- B. L'algèbre booléen
- Chapitre 4 : Les boucles
- A. Les structures itératives
- B. Tant Que
- C. Répéter … Jusqu'à
- D. Pour … Fin Pour
- Chapitre 5 : Les tableaux et structures
- A. Présentation
- B. Manipulations simples
- C. Algorithmes avancés
- D. Structures et enregistrements
- Chapitre 6 : Les sous-programmes
- A. Présentation
- B. Les sous-programmes récursifs
- Chapitre 7 : Les fichiers
- A. Les différents fichiers
- B. Les enregistrements
- C. Fichier texte séquentiel
- Chapitre 8 : Notions avancées
- A. Les pointeurs et références
- B. Les listes chaînées
- C. Les arbres
- Chapitre 9 : Une approche de l'objet
- A. Principe de l'objet, une notion évidente
- B. Manipuler les objets
- C. L'objet en Java
Si vous débutez en programmation, ce livre est fait pour vous, il passe en revue les principes même de la programmation. Les exemples sont en Java, mais l'auteur nous donne une forme plus synthétique des techniques utilisées sous forme de texte très compréhensible et adaptable à tous les langages de programmation. Mais l'auteur s'adresse aussi à toutes les personnes désireuses d'améliorer leurs performances.
Toutes les techniques fondamentales sont passées en revue, la déclaration des variables, les opérations, les affectations, les boucles,…
L'auteur, en plus de vous expliquer les différences qui existent entre les différents langages de programmation, vous met en garde sur les pièges à éviter lorsque vous écrirez votre code.
Les exemples choisis sont pour la plupart utilisables dans le code que vous pourriez écrire pour vos applications. Je pense même qu'on pourrait lire ce livre sans posséder de PC et comprendre aisément certains passages.
En plus de l'algorithmique, ce livre est agrémenté de petites histoires qui rendent sa lecture agréable, vous y apprendrez pourquoi la première Ariane 5 n'a pas terminé sont vol d'essai, …
Le seul reproche que j'ai à faire est le manque de commentaire dans le code, sachant que ce manuel est destiné à des débutants, quelques lignes d'explication auraient été un must, surtout si le langage de programmation que vous utilisez habituellement n'est pas le Java.
Ce livre à sa place dans la bibliothèque d'un programmeur.
Algorithmique - Travaux Pratiques
Entraînez-vous et améliorez votre pratique de la programmation
Résumé de l'éditeur
Présentation de l'éditeur
Ce livre sur l'algorithmique s'adresse à toute personne qui désire améliorer sa maîtrise
d'un langage de programmation et en particulier celle du langage Java. Il propose de
nombreux exercices pratiques de difficulté variable pour compléter sa pratique de la
programmation (construction d'index, calcul d'intersection de rectangles, calcul de
la distance entre deux mots, simulation d'une course automobile, mini-interpréteur
d'expression).
La programmation est introduite d'abord avec les concepts de variables, boucles, tests, tableaux et sous-programmes. La programmation par objets est ensuite abordée de façon très progressive (écriture de petites classes, gestion des chaînes de caractères, petite hiérarchie de classes).
Un chapitre particulier est consacré à la récursivité et les structures de données complexes (listes, arbres, piles) font l'objet du dernier chapitre. Une connaissance des principaux concepts du langage Java est un pré-requis à la lecture de ce livre.
Pour les apports théoriques sur ce sujet, Editions ENI édite, dans la collection Ressources Informatiques, le livre " Algorithmique - Techniques fondamentales de programmation". 63 QCM - 84 travaux pratiques et leurs corrigés - Plus de 44 H de mise en pratique.
Biographie de l'auteur
Laurent Debrauwer est docteur en informatique de l'Université de Lille 1. Auteur de logiciels dans le domaine de la linguistique et de la sémantique, il exerce le métier de consultant indépendant en tant que spécialiste de l'approche par objets. Il enseigne la modélisation en UML à l'université de Lille 1 et la programmation en Java à l'université du Luxembourg.
Édition ENI Editions
ISBN10 : 2746046180
Commandez sur www.amazon.fr :
25.65 € TTC (prix éditeur 25.65 € TTC) livraison gratuite !Chapitres
- Variables, boucles et instructions de test
- Tableaux
- Sous-programmes
- Objets et classes
- Les chaînes de caractères
- Interactions complexes et héritage entre objets
- Récursivité
- Structures de données complexes
- Le langage algorithmique
Ce livre est le complément de "Algorithmique : Techniques fondamentales de programmation". La possession des deux livres n'est pas indispensable, mais souhaitable. Dans les énoncés, il est constamment fait appel aux pré-requis pour la compréhension des exercices proposés, vous pouvez acquérir ces pré-requis sur le WEB ou dans ce second livre.
Malgré des débuts difficiles, il faut quelques minutes pour assimiler la façon dont sont énoncés les exercices, j'ai particulièrement apprécié la difficulté croissante des exercices proposés. Les exemples proposés sont réutilisables dans vos créations. On y trouve plein de choses : différents types de tri, des recherches, des fusions de tableaux et même une routine de vérification de palindromes...
Si vous débutez, ce livre vous aidera à faire vos premiers pas et à prendre de bonnes habitudes, si vous n'êtes plus un débutant, vous pourrez toujours mesurer vos compétences et on est parfois surpris.
Pour les premiers corrigés, l'auteur nous donnes l'algorithmique sous forme de texte.
Selon la complexité des codes que l'on retrouve dans les corrigés, l'auteur a inséré des commentaires plus ou moins nombreux.
Compilateurs
Principes, techniques et outils
Résumé de l'éditeur
Le "Dragon", l'ouvrage de référence en matière de compilation, revient avec une édition entièrement actualisée et qui prend en compte toutes les évolutions récentes du domaine. Les auteurs, enseignants dans les universités américaines les plus prestigieuses, ont adopté une présentation encore plus pédagogique, abondamment illustrée d'exemples concrets et d'exercices. Le livre couvre tous les aspects théoriques et pratiques de la compilation des langages de programmation. Il s'attache également à démontrer la pertinence du recours à la compilation pour résoudre les problèmes les plus fréquemment rencontrés lors de la conception de logiciels de traitement des langages.
Édition Pearson Education
ISBN10 : 2744070378
ISBN13 : 9782744070372
Commandez sur www.amazon.fr :
61.75 € TTC (prix éditeur 61,75 € TTC) livraison gratuite !- Introduction
- Un traducteur simple en une passe
- Analyse lexicale
- Analyse syntaxique
- Traduction dirigée par la syntaxe
- Production de code intermédiaire
- Environnements d'exécution
- Production de code
- Optimisations indépendantes de la machine
- Parallélisme entre instructions
- Parallélisme et localité des données
- Analyses interprocédurales
Ce livre, communément appelé le Dragon Book, est une référence inconstestable sur la conception de compilateurs. Je le savais avant de le lire, je m'attendais donc à un excellent livre ; je n'ai pas été déçu.
Bien entendu, ce livre traite tous les sujets primordiaux dans la conception d'un compilateur, après une introduction expliquant les différentes phases : analyse lexicale, syntaxique, sémantique, production de code, optimisation de code etc. Toutefois, il y a 2 chapitres dédiés au parallélisme, sujet crucial de nos jours dès que l'on parle de langages de programmation.
Outre le fait que le livre couvre avec excellence les sujets classiques, comme les différentes techniques d'analyse syntaxique, les grammaires, et autres, en accompagnant le tout d'algorithmes et d'exemples en Java, on y apprend régulièrement des petites astuces issues de l'expérience des auteurs. En particulier, ils nous exposent les différences à prendre en considération selon que l'on veuille créer un compilateur pour un langage de haut niveau ou pas, selon le type de portée dont on veut munir le langage, le mécanisme de passage des paramètres, etc.
Après la lecture de ce livre, et un travail sérieux sur son contenu et les exemples, vous serez en mesure de vous lancer dans la conception et la réalisation d'un compilateur. Néanmoins, cela demande beaucoup d'investissement mais en vaut la peine. Vous verrez que même de manière plus globale, la compilation de langages permet de vérifier certaines propriétés et donc de vérifier le code et trouver d'éventuelles failles de sécurité. Donc en résumé, si ce sujet vous intéresse, je vous conseille très fortement ce livre.
Algorithmique
Coffret de 2 livres : Maîtrisez les fondamentaux de la programmation (avec des exemples en Java)
Résumé de l'éditeur
Ces deux livres offrent au lecteur un maximum d'informations sur l'algorithmique et plus de 44 H de mise en pratique sous la forme de TP à réaliser (avec leurs corrigés). Le livre de référence de la collection Ressources Informatiques : Algorithmique - Techniques fondamentales de programmation Ce livre s'adresse à toute personne désireuse de maîtriser les bases essentielles de la programmation. Pour apprendre à programmer, il faut d'abord comprendre ce qu'est vraiment un ordinateur, comment il fonctionne et surtout comment il peut faire fonctionner des programmes, comment il manipule et stocke les données et les instructions, quelle est sa logique. Alors, au fur et à mesure, le reste devient évidence : variables, tests, conditions, boucles, tableaux, fonctions, fichiers, jusqu'aux notions avancées comme les pointeurs et les objets. Dans ce livre, le langage algorithmique (ou la syntaxe du pseudo-code des algorithmes) reprend celui couramment utilisé dans les écoles d'informatique et dans les formations comme les BTS, DUT, premières années d'ingénierie à qui ce livre est en partie destiné et conseillé. Une fois les notions de base acquises, le lecteur trouvera dans ce livre de quoi évoluer vers des notions plus avancées : deux chapitres, l'un sur les pointeurs et les références, l'autre sur les objets, ouvrent les portes de la programmation dans des langages évolués et puissants comme le C, le C++ et surtout Java. Une grande partie des algorithmes de ce livre sont réécrits en Java et les sources sont directement utilisables. Le livre de la collection Les TP Informatiques : Algorithmique - Entraînez-vous et améliorez votre pratique de la programmation Ce livre sur l'algorithmique s'adresse à toute personne qui désire améliorer sa maîtrise d'un langage de programmation et en particulier celle du langage Java. Il propose de nombreux exercices pratiques de difficulté variable pour compléter sa pratique de la programmation (construction d'index, calcul d'intersection de rectangles, calcul de la distance entre deux mots, simulation d'une course automobile, mini-interpréteur d'expression). La programmation est introduite d'abord avec les concepts de variables, boucles, tests, tableaux et sous-programmes. La programmation par objets est ensuite abordée de façon très progressive (écriture de petites classes, gestion des chaînes de caractères, petite hiérarchie de classes). Un chapitre particulier est consacré à la récursivité et les structures de données complexes (listes, arbres, piles) font l'objet du dernier chapitre. Une connaissance des principaux concepts du langage Java est un prérequis à la lecture de ce livre.
Édition ENI
ISBN10 : 2746051885
ISBN13 : 9782746051881
17 x 21 1.038Kg
Commandez sur www.amazon.fr :
46,56 € TTC (prix éditeur 49 € TTC) livraison gratuite !- Introduction à l'algorithmique
- Les variables et opérateurs
- Tests et logique booléenne
- Les boucles
- Les tableaux et structures
- Les sous-programmes
- Les fichiers
- Notions avancées
- Une approche de l'objet
L'avantage du coffret est qu'il regroupe deux livres complémentaires (théorique et pratique)
Sur la forme, j'ai trouvé la mise en page un peu austère (sommaire avec de gros interlignes, marges très fines) qui pourrait rebuter lors d'un rapide survol.
Ce qui serait dommage, car le fond est plutôt intéressant. L'approche est didactique et l'auteur présente les concepts les uns après les autres.
J'ai bien aimé le fait d'avoir à la fois des exemples en pseudo-code et en Java. Le premier rappelle ainsi que l'algorithmique est indépendante des langages d'implémentation. Le deuxième quant à lui est directement testable.
Les exemples sont sur le fond très bien. Je reprocherais une fois de plus la forme (des incohérences de casse, de mauvaises indentations). Il est également regrettable que l'auteur n'ait pas suivi les conventions généralement établies pour ses exemples en Java.
J'ai apprécié que l'auteur introduise assez rapidement la notion de complexité d'un algorithme, malheureusement passée trop souvent sous silence.
Je trouve que le choix du langage Java est parfaitement justifié par l'auteur et il permet en plus d'amener progressivement le lecteur vers la POO en fin d'ouvrage.
Pour être tatillon, je ferais deux petites remarques : j'aurais préféré voir le terme "décimaux" à la place de "réels" et que l'auteur utilise moins la convention (false = 0 et true != 0) même s'il a pris des précautions oratoires.
Mis à part le fait que j'aurais bien aimé des exercices sur la complexité, le livre des exercices est plutôt pratique. De petits questionnaires permettent de vérifier les pré requis et des estimations de durée sont fournies.
Si le coffret est principalement destiné à des débutants et des autodidactes qui pourront tester leur compréhension avec les questionnaires et les exercices corrigés, je le recommande également comme ressource à des enseignants qui devraient donner des cours/TD d'algorithmique.
Tous les livres de DVP





































