Vous êtes sur la page 1sur 36

Objectifs

Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Algorithmique Avancée et Complexité

Benchikhi Loubna

Ecole Nationale des Sciences Appliquées de Marrakech


Université Cadi Ayyad
l.benchikhi@uca.ma

September 18, 2018

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Plan I
1 Objectifs
2 Organisation
3 Définition
4 Caractéristiques d’algorithmes
5 Double problématique de l’algorithmique
6 Différences entre algorithmes et programmes
7 Motivation : calcul de x n
8 L’analyse d’algorithmes
L’expérimentation
L’étude mathématique
9 Exemples d’algorithme
Benchikhi Loubna Algorithmique Avancée et Compléxité
Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Plan II
10 Conclusion

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Avoir des outils pour concevoir un ”bon” algorithme pour résoudre


un problème.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Avoir des outils pour concevoir un ”bon” - c.à.d. correct et


efficace - algorithme pour résoudre un problème.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Cela pose de nombreuses questions...et demande pas mal de


savoir-faire...

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Existe-il un algorithme pour résoudre tout problème?


Connaître quelques Notions de Calculabilité et de décidabilite.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Est-ce un problème classique?


Connaître et savoir reconnaître des grands classiques
Tris, méthodes de sélection,
algorithmique des graphes, méthodes de hachages
Programmation linéaire ...

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Comment concevoir un algorithme?


Schémas d’algorithmes, Algorithmic design patterns
Diviser pour régner
Programmtion Dynamique
Algorithmes gloutons

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’algorithme est-il correct?


Savoir prouver un algorithme...
ou tout du moins avoir un minimum de rigueur

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’algorithme est-il efficace?


Savoir analyser la complexité d’algorithmes...

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Peut-on trouver un algorithme plus efficace pour le


problème?
Est-ce un problème dur?
Avoir quelques notions de Complexité des problèmes
Si le problème est dur, comment l’appréhender!
Connaître quelques techniques d’Algorithmique Avancée :
Méta-heuristiques, Algorithmes probabilistes,... Backtracking,
minmax, séparation-évaluation

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

les TDs

Les TDs:
Il y aura 5 séries de TD
Calcul de complexité
Liste chaînée
Tris
Piles et Files
Arbres

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

l’évaluation

Le contrôle continu sera basé sur 2 examens : un en milieu de


semestre et le deuxieme en fin de semestre avec éventuellement un
bonus donné par des devoirs maison

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Définition de l’algorithmique

Définition (algorithme)
Un algorithme est une suite finie d’opérations élémentaires
constituant un schéma de calcul ou de résolution d’un problème.

Définition un peu courte


Un algorithme énonce une résolution sous la forme d’une série
d’opération à effectuer

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Définition de l’algorithmique
Définition Dictionnaire Canadien
Formule ou ensemble d’étapes qu’on applique pour résoudre un
problème en particulier. Un algorithme doit avoir un ensemble de
règles sans ambiguité et un point limite bien défini.

Définition satisfaisante
Un algorithme est un ensemble fini d’instructions correctement
définis qui a pour but la résolution d’une tâche à partir d’un état
initial et se terminant sur un état final bien défini.
Attention
Il n’existe pas une définition formelleAlgorithmique
Benchikhi Loubna
admise pas tous.
Avancée et Compléxité
Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Quelles sont les points communs entre les différents algorithmes?


Résolution d’un problème.
Résolution de manière opératoire.
Enoncé dans un langage précis.
Données : informations en entrée.
Données : informations en sortie.
S’arrête en un temps fini.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

1. Trouver une meéthode de résolution (exacte ou approchée) du


problème
Soient trois nombres réels a, b et c, quelles sont les solutions
de l’équation ax 2 + bx + c ? (Résultat bien connu.)
Soient cinq nombres réels a, b, c, d et e, quelles sont les
solutions de l’équation ax 5 + bx 4 + cx 3 + dx 2 + ex + f ? (Pas
de méthode générale, cf. la théorie de GALOIS.)
2. Trouver une méthode efficace.
Attention
Savoir résoudre un problème est une chose, le résoudre efficacement
en est une autre.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’algorithme est souvent indépendant de l’ordinateur utilisé ainsi


que du langage.
L’algorithme est très lié aux données qu’il utilise et vice-versa.
Suivant la taille du problème le but n’est pas le même :
petit problème : Le but est d’arriver à la bonne solution.
gros problème : Il faut aussi arriver à la bonne solution mais
rapidement et sans dépasser les capacités mémoire de
l’ordinateur.
Les algorithmes peuvent être simples ou difficiles ainsi que les
structures de données.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Un programme est la réalisation (l’implémentation) d’un algorithme


au moyen d’un langage donné (sur une architecture donnée).
Il s’agit de la mise en oeuvre du principe. Par exemple, lors de la
programmation on s’occupera parfois explicitement de la gestion de
la mémoire (allocation dynamique en C) qui est un problème
d’implémentation ignoré au niveau algorithmique.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Problème
Données : un entier naturel n et un réel x. On veut calculer x n .
Moyens : Nous partons de y1 = x. Nous allons construire une
suite de valeurs y1 , ..., ym telle que la valeur yk soit obtenue par
multiplication de deux puissances de x précédemment calculées

But: ym = x n .
Coût de l’algorithme
Le coût de l’algorithme sera alors de m − 1, le nombre de
multiplications faites pour obtenir le résultat recherché.
Benchikhi Loubna Algorithmique Avancée et Compléxité
Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Algorithme trivial

Algorithme :

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Méthode binaire

Algorithme :
1 Ecrire n sous forme binaire
2 Remplacer chaque :
" 1 " par la paire de lettres " SX "
" 0 " par la lettre " S "
3 Eliminer la paire " SX " la plus à gauche
4 Résultat : un mode de calcul de x n ou
S signifie " élever au carré "
X signifie " multiplier par x "

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Méthode binaire

Résultat
Nous sommes donc capable de calculer x 23 en 7 multiplications au
lieu de 22 !

Comparaison
Pour n = 1000, l’algorithme trivial effectue 999 multiplications, et
la méthode binaire moins de 20.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Moralité
nous avons affaire à un problème simple, que tout le monde sait
résoudre, mais qui est très difficile de résoudre efficacement...
Dans ce cours nous verrons des problèmes classiques, des
méthodes classiques de résolutions, des structures de
données classiques.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique L’expérimentation
Différences entre algorithmes et programmes L’étude mathématique
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

La compréhension d’un algorithme va avec l’analyse de ses


performances.
Elle devient indispensable pour les calculs importants afin de savoir
ou l’on va (ne pas lancer un calcul qui va mettre 3 ans par
exemple).
Il existe deux techniques :
L’expérimentation
L’étude mathématique

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique L’expérimentation
Différences entre algorithmes et programmes L’étude mathématique
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’expérimentation

Cela revient à comparer le temps de calcul de différents


algorithmes. Ces calculs doivent être fait soigneusement :
1 De façon rigoureuse c.à.d :
sur la même machine
dans le même environnement
sans qu’aucun autre programme ne tourne
2 Différents jeux de données doivent être testés. Certains
algorithmes y sont très sensibles.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique L’expérimentation
Différences entre algorithmes et programmes L’étude mathématique
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’expérimentation

Attention
Un programme peut être plus rapide parce que son implémentation
est meilleure et non parce que l’algorithme l’est.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique L’expérimentation
Différences entre algorithmes et programmes L’étude mathématique
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

L’étude mathématique

Il s’agit :
d’identifier le nombre d’opérations de bases qui seront
effectuées en fonction des données
étudier le cas moyen (données aléatoires) et le pire cas.
Compter les opérations est par exemple :
A[i] = i ⇒ 1 affectation
B = (i ∗ 7) − 3 ⇒ 1 affectation, 1 multiplication et 1
soustraction

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Algorithme du PGCD (Algo d’Euclide)

Appliquer l’algorithme pour a=72 et b= 34

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Algorithme du PGCD (Algo d’Euclide)


Pour a=72 et b=34

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Recherche d’un mot dans un dictionnaire

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Recherche d’un mot dans un dictionnaire

Attention
On trouve le mot correct mais l’algorithme n’est pas efficace
En moyenne, N/2 mots lus avec N la taille du dictionnaire.
Il faut utiliser l’ordre lexicographique du dictionnaire et donc la
méthode dichotomique.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Recherche d’un mot dans un dictionnaire par dichotomie

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Recherche d’un mot dans un dictionnaire par dichotomie

Attention
En moyenne, log (N) mots lus avec N la taille du dictionnaire.

Benchikhi Loubna Algorithmique Avancée et Compléxité


Objectifs
Organisation
Définition
Caractéristiques d’algorithmes
Double problématique de l’algorithmique
Différences entre algorithmes et programmes
Motivation : calcul de x n
L’analyse d’algorithmes
Exemples d’algorithme
Conclusion

Conclusion

Un bon algorithme est comme un couteau tranchant, il fait


exactement ce que l’on attend de lui avec un minimum d’efforts.
L’emploi d’un mauvais algorithme pour résoudre un problème
revient à essayer de couper un steak avec un tournevis : vous finirez
sans doute par obtenir un résultat digeste mais vous accomplirez
beaucoup plus d’efforts que nécessaire et le résultat aura peu de
chances d’être esthétiquement satisfaisant.

Benchikhi Loubna Algorithmique Avancée et Compléxité

Vous aimerez peut-être aussi