Algorithmique et complexite
A.U. 2012-2013
Plan du cours
Chap-1: Introduction & motivations Chap-2: Complexité & optimalité Chap-3: Algorithmes de tri: analyse et estimation de la complexité Chap-4: Récursivité
Différents types de récursivité Dérécursivation d’algorithmes Récursivité terminale et non terminale Paradigme « diviser pour régner »
Chap-5: Graphes et arbres Chap-6: Arbres binaires de recherche
Objectifs du cours
Elaborer des algorithmes performants et efficaces Comprendre la notion de complexité d’un algorithme Maîtriser la récursivité (simple, multiple, mutuelle, imbriquée) Savoir dérécursiver des algorithmes simples et multiples Maîtriser la démarche « diviser pour régner » Savoir estimer la complexité d’un algorithme itératif ou récursif pouvant conduire à des récurrences linéaires d’ordre 1, d’ordre 2 et des récurrences de type « diviser régner » Connaître les différents algorithmes de tri et estimer leur complexité Elaborer des algorithmes à base de graphes et d’arbres Réaliser des algorithmes de parcours de graphes et d’arbres
Chapitre 1 – Introduction et motivations
Introduction
Un algorithme = une suite ordonnée d'opérations ou d'instruction écrites pour la résolution d'un problème donné. Algorithme = une suite d’actions que devra effectuer un automate pour arriver à partir d’un état initial, en un temps fini, à un résultat L’algorithmique désigne le processus de recherche d’algorithme
Structures de données
Une structure de données indique la manière d'organisation des données dans la mémoire. Le choix d'une structure de données adéquate dépend généralement du problème à résoudre. Deux types de structures de données :
Statiques : Les données peuvent être manipulées dans la mémoire dans un espace statique alloué dès le début de résolution du problème. Ex : les tableaux Dynamiques : On peut allouer de la mémoire pour y