View on GitHub

club-lecture

Préface

Chaque chapitre presente un algorithme, une technique de conception, un domaine d’application, ou un un sujet connexe.

Des solutions aux exercices sont en ligne : http://mitpress.mit.edu/algorithms/

Introduction

Résumé des chapitres de la première partie :

Chapitre 1 - The Role of Algorithms in Computing.

Généralités

Definition : procédure de calcul qui reçoit en entrée des valeurs et produit en sortie des valeurs. Suite d’opérations qui transforme les entrées en sorties.

À l’heure actuelle, il n’y a pas de consensus sur la définition formelle de ce qu’est un algorithme. Ce qu’on apelle opération dépend du contexte : on considère très souvent que l’addition est primitive alors que ce n’est pas forcément le cas pour les processeurs qui éxécutent l’algorithme.

Outils pour résoudre des problèmes calculatoires, défini en termes généraux. Contrairement aux algorithme, le problème peut être formellement défini. Exemple : calculer la moyenne de n entiers par exemple.

Algorithme correct : étant donné un problème, un algorithme est correct vis-à-vis de ce problème si pour toute instance d’entrée, il calcule la sortie attendue. Les algorithmes incorrects ne sont pas nécessairement inutiles si le taux d’erreur est contrôlé par exemple.

Lorsque le problème est un problème d’optimisation (on chercher à maximiser ou à minimiser une certaine valeure), les algorithmes ont souvent beaucoup de solution candidates, trouver la meilleure solution est très souvent difficile. Les algorithmes généralement ont des applications pratiques.

Le livre présente quelques structures de données. Il présente également des techniques d’approximation pour des problèmes où il n’existe pas de solution exacte ou bien que la solution exacte est trop longue à calculer en pratique. Il présente également quelques problèmes NP-difficiles.

Les algorithmes en tant que technologie

Même avec des machines infiniment rapides, on aurait quand même besoin d’étudier l’algorithmique, rien que pour montrer qu’un algo fonctionne (termine, et avec la bonne solution).

Efficacité : pour un problème donné, un algorithme pourra être très rapide alors qu’un autre sera beaucoup plus lent. On utilise la notion de complexité, pour prédire le comportement de l’algorithme. Cette complexité dépend d’un paramètre (ou parfois plusieurs paramètres). Très souvent, ce paramètre sera la taille de l’entrée, par exemple pour un algorithme qui trie un tableau de nombre, le paramètre pourra être la taille du tableau.

Les algorithmes et les autres technologies : choisir et réaliser des algorithmes efficaces est aussi important que le choix du hardware par exemple. De toute façon, même le hardware nécessite des algorithmes.

Discussions

Qu’attendez vous de ce livre ? De ce type de livre ? D’un livre en general ?

NP-difficile vs NP-complet :

En théorie de la complexité, un problème NP-complet est un problème de décision, c’est à dire dont la réponse peut-être oui ou non vérifiant les propriétés suivantes :

Un problème NP-difficile est un problème qui remplit la seconde condition, et donc peut être dans une classe de problème plus large et donc plus difficile que la classe NP.

Exemple de problème NP : étant donné un graphe, est-il possible de parcourir tous les noeuds du graphes sans passer deux fois par le même noeud ? Ce problème est aussi connu sous le nom de chemin hamiltonien.

Complexité