Vous êtes sur la page 1sur 30

Cours :

Algorithmique avancée
Plan du cours
 Rappels
 Complexité et optimalité
 La récursivité
 Algorithmes de tri
 Structures de données élémentaires
 Programmation dynamique
 Algorithmes gloutons
 Graphes et arbres
 Arbres de recherche
 Plus courts chemins
 Heuristiques
Bibliographie :

 Introduction to Algorithms par Thomas H. Cormen, Charles


E. Leiserson, and Ronald L. Rivest
 Types de données et algorithmes par Christine Froidevaux,
Marie-Claude Gaudel, Michèle Soria.
Rappels : algorithmique I
 Qu’est-ce que l’algorithmique ?

 Définition (Algorithme). Un algorithme est suite finie


d’opérations élémentaires constituant un schéma de calcul
ou de résolution d’un problème.

Instruction:
-déclaration
-affectation
-entrée
-sortie
Algorithmique?
Rappels : algorithmique I
 Schéma de résolution d’un problème:
Rappels : algorithmique I
 Caractéristiques de qualité d'un algorithme :

Lisible

De haut niveau: peuvent être traduit en n'importe quel langage

Précis ne doit pas porter à confusion

Concis ne doit pas dépasser une page

Structuré doit être composé de différentes parties.

Correct (preuve)

Efficace (complexité)
Rappels : algorithmique I
Différences entre algorithmes et programmes
Un programme est la réalisation (l’implémentation) d’un
algorithme au moyen d’un langage donné.

Exemple:
Torch
Rappels : algorithmique I
Double problématique de l’algorithmique ?

Trouver une méthode


de résolution Trouver une méthode
(exacte ou approchée) efficace.
du problème.

=>Savoir résoudre un problème est une chose, le résoudre


efficacement en est une autre, ou encore montrer qu' ’il est
correcte …!!
 Exemple 1:
 problème Détection de visage
 Exemple 1:
 problème Détection de visage
 Algorithmes
 Exemple 1:
 problème Détection de visage
 Exemple 1:
 problème Détection de visage

 Laquelle choisir? et pourquoi?


Deep Neural Network for face detection (2017)

=>Analyse de la complexité des algorithmes


 Exemple 1:
 problème Détection de visage
Rappels : algorithmique I
 Exemple 2:
 problème : calculer xn
données : x : réel , n: entier
Méthode 1 : x0 = 1; xi = x* xi-1 i >0 T=n
Méthode 2 : x0 = 1;
T = log n
xi = xi/2 * xi/2 , si i est pair;
xi = x*xi’/'2 * xi’/2 si i est impair
...
résultats : y = xn
 Laquelle choisir? et pourquoi?
 Plutôt la deuxième.

=>Analyse de la complexité des algorithmes


Exercice:
Donner un algorithme qui permet de calculer la somme :
Sn= 1 +2+ 3+ …+n
Rappels : algorithmique I
Exemple 3:
problème : Tri d’un tableau
Rappels : algorithmique I
Évaluation d'un algorithme

Efficacité d'un algorithme :


• temps d'exécution
• mémoire occupée

évaluer le temps d ’exécution = évaluer le nombre d'opérations à


exécuter par l'algorithme, en fonction de la taille des données.

opérations « élémentaires » : +, -, *, /, >, =, et, ou

taille des données = espace occupe


Rappels : algorithmique I
Conclusion:
Un bon algorithme est comme un couteau tranchant

L’emploi d’un mauvais algorithme pour résoudre un problème


revient à essayer de couper un steak avec un tournevis :
le résultat aura peu de chances d’être esthétiquement
satisfaisant.
Complexité
Objectifs

Avoir des outils pour concevoir un ‘’bon’’


(correct et efficace) algorithme pour
résoudre un problème.
Calcul de la complexité :
Analyser un algorithme revient à:

-prévoir les ressources -mesurer son temps


nécessaires. d'exécution.

L’analyse de plusieurs algorithmes candidats pour un problème


donné :

Nécessite des outils mathématiques.


Analyse de la complexité :
Notation asymptotique
Les fonctions que l'on considère dans cette section sont des
fonctions de N dans N . Soient  f et g deux fonctions.

Definition 1   :
On dit que  f=Ο (g)  si et seulement si il existe  c>0  et  n0ϵN tel que :

Definition 2
On dit que f=Ω(g)   si et seulement si:
g=O(f)

Definition 3   On dit que f=Θ(g)  si et seulement si:


f=O(g)
et g=O(f)
Analyse de la complexité :

 Exemples :

0 : n=O(n), (prendre n0 =1, c=1)


2n = O(3n) (prendre n0 =1 c = 2/3)

Montrer que:
5*n3+ 3*n+7=O(n3)
5*n3+ 3*n+7=Θ(n3)
Analyse de la complexité :

 Complexité
Définition:
La complexité d’un algorithme est la
mesure du nombre d’opérations fondamentales
qu’il effectue sur un jeu de données.
Analyse de la complexité :
 Exemple:
Analyse de la complexité :
 Exemple:
Analyse de la complexité :
 Exemple:
Analyse de la complexité :
 Exemple:
Exercice:

Soit l’algorithme suivant:

// t tableau de n entiers
// n entier >0

Entier: max
max t[0]
Pour i=1 à n-1
si (max <t[i])
maxt[i]
Fin si
Fin pour

Vous aimerez peut-être aussi