Methodes de Conceptions Des Algorithmes
Methodes de Conceptions Des Algorithmes
Methodes de Conceptions Des Algorithmes
algorithmes
Atsa Etoundi Roger, Professeur
Méthodologie de résolution d'un problème
1) Poser le problème 5) Compilation
2) Analyser le problème 6) Exécution
3) Résoudre le problème 7) Vérification des résultats
4) Implémentation
Conception et analyse des algorithmes
• Concevoir: c’est formuler le problème à résoudre avec une précision
mathématique suffisante de manière a poser une question concrète
et définir un algorithme permettant de résoudre ce problème
• Analyser : c’est montrer la correction de cet algorithme et donner
une borne sur son temps d’éxecution et/ou l’espace mémoire qu’il
utilise pour établir son éfficacite
• En pratique on s’appuie sur quelques techniques de conception
fondamentales, très utiles pour évaluer la complexité inhérente du
problème et pour formuler un algorithme qui le résout
Objectifs des paradigmes de conception des
algorithmes
• Apprendre comment partir d’un problème pour écrire un algorithme
• Savoir construire une solution selon une démarche allant du plus
simple (algorithme naïf) au plus efficace (Diviser Pour Régner, etc.)
• Savoir démontrer la correction des algorithmes
Paradigmes de conception des algorithmes
• La méthode Diviser pour Régner
• Les approches gloutonnes
• La méthode par Programmation Dynamique
• La méthode par Programmation Linéaire
• La technique des Essais Successifs
• La notion de problèmes NP-complets
La méthode Diviser pour Régner
• Idée: On prend un problème et on le casse en sous-problèmes. On
résout les sous-problèmes (possiblement en les cassant de nouveau)
et on combine les résultats pour obtenir la solution au problème
original.
• C’est une approche de haut en bas.
• Construction générale: Si l’instance à résoudre est suffisamment
petite, on utilise un algorithme classique pour la résoudre, sinon, on
la décompose en morceaux (si possible de même taille) et on rappelle
l’algorithme sur ces morceaux pour ensuite les recombiner.
Méthode gloutonne (1/ 2)
• Lors de la résolution d’un problème d’optimisation, la
construction d’une solution se fait souvent de manière
séquentielle, l’algorithme faisant a chaque étape un
certain nombre de choix.
• Le principe glouton consiste a faire le choix qui semble
le meilleur sur le moment (choix local), sans se
préoccuper des conséquences dans l’avenir, et sans
revenir en arrière.
Méthode gloutonne (2/2)
• Un algorithme glouton est donc un algorithme qui ne se remet jamais
en question et qui se dirige le plus rapidement possible vers une
solution.
• Le glouton n’est pas sur d’arriver à une solution optimale, mais il
fournit un résultat rapidement.
• Même si la solution n’est pas optimale, il n’est pas rare que l’on s’en
contente (par exemple pour un problème NP-difficile). On rentre alors
dans le monde des algorithmes d’approximation
• NB: Les algorithmes gloutons s’appuient sur le principe des
Matroïdes.
Matroïde
• Un matroïde M est un couple (E,I) où E est un ensemble fini (usuelle-
ment E = {1,...,n})
• I est une famille de sous-ensembles de E qui vérifie les conditions
suivantes :
(a) ∅∈I,
(b) Si I1 ∈I et I2 ⊂ I1 alors I2 ∈I,
(c) (propriété d’augmentation) Si I1,I2 ∈ I et |I1| < |I2| alors il existe e ∈ I2\I1
tel que I1 ∪e ∈I.
• Les membres de I sont appelés les indépendants de M. Un sous-ensemble de E qui n’est
pas dans I est appelé dépendant.
Propriété d’un Matroïde
• Si (E,F ) est un Matroïde et si A⊂E alors (A,FA) en
est également un, avec FA={F∈F’ tel que F⊆A}.
3) si E’⊆E, F,F’∈F et F,F’ sont tous deux maximaux au sens de l’inclusion dans
E’, alors |F’|=|F|.
La méthode par Programmation Dynamique
(1/2)
• La solution d’un problème Pk contient les solutions de
problèmes ayant des tailles plus petites 2.
• La construction de la solution pour Pk s’effectue à
l’aide d’un faible nombre d’informations sur Pj, j < k
La méthode par Programmation Dynamique
(2/2)