Vous êtes sur la page 1sur 16

Université Saad Dahleb de Blida

Faculté des Sciences


Département d’Informatique
Licence Génie des Systèmes Informatique (GSI)
Semestre 5 (3ème année)

ALGORITHMIQUE 02

Cours n°1: 9 Octobre 2013

AROUSSI Sana

Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/


PRÉAMBULE

 Pré-requis: Cours (Algo1, S1) + (Algo 2, S2) + (Aglo 1, S4).

 UEF: Algorithmique et Technologie d’Implémentation (ALTI)

 Volume horaire hebdomadaire: 3H Cours + 1H30 TD

 Évaluation: continu + Examen.

 Coefficient 1, Crédit 4

2
OBJECTIFS DE LA MATIÈRE
 Élaborer 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
 Connaître les différents algorithmes de tri et estimer leur complexité
 Comprendre la méthode gloutonne.
 Définir la classe de complexité NP.
 Étudier quelques algorithmes d’approximations de complexité polynomiale
(les heuristiques)
3
CONTENU DE LA MATIÈRE

I. Introduction et Motivations

II. Complexité et Optimalité

III. Récursivité et Paradigme « diviser pour régner »

IV. Algorithmes de tri

V. Algorithmes gloutons

VI. NP-complétude

VII. Heuristiques
4
CHAPITRE I:

INTRODUCTION & MOTIVATION


PLAN DU CHAPITRE I

 Généralités sur l’Algorithmique


 Définition

 Étapes de conception

 Algorithmique et Programmation
 Définition

 Langages de programmation

 Démarche de programmation

 Qualités d’un Bon Algorithme


6
GÉNÉRALITÉ SUR L’ALGORITHMIQUE

 Historique : L’algorithmique est un terme d’origine arabe,


hommage à Al Khawarizmi (780-850) auteur d’un ouvrage décrivant
des méthodes de calculs algébriques.

 Définition: Un algorithme est suite finie d’opérations


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

7
GÉNÉRALITÉ SUR L’ALGORITHMIQUE
ÉTAPES DE CONCEPTION D’UN ALGORITHME

Définition du problème en terme


Analyse de séquences d’opérations de
calcul, de stockage de données

Définition précise des données,


des traitements et de leur Conception
séquencement

Traduction et réalisation de
Programmation l’algorithme dans un langage
précis

8
Vérification du bon
fonctionnement de l’algorithme Test
ALGORITHMIQUE & PROGRAMMATION

 Définition : Un programme est la traduction d’un algorithme


dans un langage de programmation.

Évolution
Langage
de haut
niveau
Orienté Objet
(C++, C#, Java),
Binaire, Procédural ....
Assembleur (Pascal, C),
Logique (Prolog),
Langage .... 9
de bas
niveau
ALGORITHMIQUE & PROGRAMMATION
DÉMARCHE DE PROGRAMMATION

Choisir un
Énoncé du Analyse du
Algorithme langage de
problème problème programmation

Traduction du code Compilation Programmation


objet en code
machine exécutable, (traduction du Programme (traduction
compréhensible par code source en (code source) l’algorithme en
programme)
l'ordinateur code objet)

Programme
Exécution du
binaire Résultats
programme
exécutable 10
QUALITÉ D’UN BON ALGORITHME

 Correct: Il faut que le programme exécute correctement ses


tâches pour lesquelles il a été conçu.

 Complet: Il faut que le programme considère tous les cas


possibles et donne un résultat dans chaque cas.

 Efficace: Il faut que le programme exécute sa tâche avec


efficacité, c’est-à-dire avec une complexité minimal qui s’est
mesurée en termes de temps de calcul et d’espace mémoire

nécessaire. 11
QUALITÉ D’UN BON ALGORITHME
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME

 Soit P(X) un polynôme de degré n


P(X) = anXn + an-1Xn-1 + ... + a1X + a0 ,
Où: n : entier naturel
an, an-1, ..., a1, a0 : les coefficients du polynôme

1ère variante
Début 1ère Complexité :

P0 (n+1) additions

Pour i allant de 0 à n faire (n+1) multiplications

P  P+ ai *Xi (n+1) puissances

Finpour
Fin 12
QUALITÉ D’UN BON ALGORITHME
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME
2ème variante
1ère variante
Début
Début
Inter1
P0
P 0
Pour i allant de 0 à n faire
Pour i allant de 0 à n faire
P  P+ ai *Xi
P  P+ Inter *ai
Finpour
Inter  Inter * X
Fin
finpour
1ère Complexité : Fin
(n+1) additions
2ème Complexité :
(n+1) multiplications
(n+1) additions
(n+1) puissances
2(n+1) multiplications 13
QUALITÉ D’UN BON ALGORITHME
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME

 3ème variante: Schéma de Horner


P(X) = anXn + an-1Xn-1 + ... +a2X2 + a1X + a0
=(anXn-1 + an-1Xn-2 + ... +a2X + a1)X + a0
= ((anXn-1 + an-1Xn-2 + ... +a2)X+ a1)X + a0
= ............

= (....(((anX + an-1)X+ an-2 )X.....)X+ ... +a2)X+ a1)X + a0

3ème variante
Début
P  an 3ème Complexité :
Pour i allant de n-1 à 0 faire n additions
P  P*X + ai n multiplications 14
Finpour
Fin
QUALITÉ D’UN BON ALGORITHME
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME

Variantes Première Deuxième Troisième


Complexité (n+1) additions (n+1) additions n additions
(nombre
d’opérations) (n+1) multiplications 2(n+1) n multiplications
(n+1) puissances multiplications

 Nécessité d’estimer la complexité d’un


algorithme avant de l’écrire et l’implémenter

15
SOURCES DE CE COURS
 Mohamed El Marraki, Algorithmique, Université Mohammed V-Agdal, Faculté des
Sciences Rabat, Département Mathématiques et Informatique, 2007, pp.35.
Disponible sur www.fsr.um5a.ac.ma/cours/informatique/elmarraki/Algo_ch1_3.pdf

 Frédéric Vivien, Algorithmique avancée, École Normale Supérieure de Lyon, 2002.,


pp. 93. Disponible sur http://perso.ens-lyon.fr/frederic.vivien/Enseignement/Algo-
2001-2002/Cours.pdf

 Slim Msfar, Algorithmique et Complexité, 2012, pp 104. Disponible sur


http://p835.phpnet.org/testremorque/upload/catalogue/coursalgorithmi.pdf

16