16
ALGORITHMIQUE 02 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) Cours n°1: 9 Octobre 2013 AROUSSI Sana Disponible sur https://sites.google.com/a/esi.dz/s-aroussi/

Chapitre i introduction et motivations

Embed Size (px)

Citation preview

Page 1: Chapitre i introduction et motivations

ALGORITHMIQUE 02

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)

Cours n°1: 9 Octobre 2013

AROUSSI Sana

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

Page 2: Chapitre i introduction et motivations

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

Page 3: Chapitre i introduction et motivations

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

Page 4: Chapitre i introduction et motivations

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

Page 5: Chapitre i introduction et motivations

CHAPITRE I:

INTRODUCTION & MOTIVATION

Page 6: Chapitre i introduction et motivations

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

Page 7: Chapitre i introduction et motivations

7

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.

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.

GÉNÉRALITÉ SUR L’ALGORITHMIQUE

Page 8: Chapitre i introduction et motivations

8

GÉNÉRALITÉ SUR L’ALGORITHMIQUE

ÉTAPES DE CONCEPTION D’UN ALGORITHME

Analyse

Conception

Programmation

Test

Définition du problème en terme

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

séquencement

Traduction et réalisation de

l’algorithme dans un langage

précis

Vérification du bon

fonctionnement de l’algorithme

Page 9: Chapitre i introduction et motivations

9

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

dans un langage de programmation.

ALGORITHMIQUE & PROGRAMMATION

Langage de bas niveau

Langage de haut niveau

Évolution

Binaire, Assembleur

Procédural (Pascal, C),

Logique (Prolog), ....

Orienté Objet (C++, C#, Java),

....

Page 10: Chapitre i introduction et motivations

10

ALGORITHMIQUE & PROGRAMMATION DÉMARCHE DE PROGRAMMATION

Énoncé du problème

Analyse du problème

Algorithme Choisir un langage de

programmation

Programmation (traduction

l’algorithme en programme)

Programme (code source)

Compilation (traduction du code source en

code objet)

Traduction du code objet en code

machine exécutable, compréhensible par

l'ordinateur

Programme binaire

exécutable

Exécution du programme

Résultats

Page 11: Chapitre i introduction et motivations

11

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.

Page 12: Chapitre i introduction et motivations

12

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

P0

Pour i allant de 0 à n faire

P P+ ai *Xi

Finpour

Fin

1ère Complexité :

(n+1) additions

(n+1) multiplications

(n+1) puissances

Page 13: Chapitre i introduction et motivations

13

QUALITÉ D’UN BON ALGORITHME

EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME

2ème variante

Début

Inter1

P 0

Pour i allant de 0 à n faire

P P+ Inter *ai

Inter Inter * X

finpour

Fin

1ère variante

Début

P0

Pour i allant de 0 à n faire

P P+ ai *Xi

Finpour

Fin

1 Complexité :

1ère Complexité :

(n+1) additions

(n+1) multiplications

(n+1) puissances

2ème Complexité :

(n+1) additions

2(n+1) multiplications

Page 14: Chapitre i introduction et motivations

14

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 + ... +a2X

2 + 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

Pour i allant de n-1 à 0 faire

P P*X + ai

Finpour

Fin

3ème Complexité :

n additions

n multiplications

Page 15: Chapitre i introduction et motivations

15

Variantes Première Deuxième Troisième

Complexité

(nombre

d’opérations)

(n+1) additions

(n+1) multiplications

(n+1) puissances

(n+1) additions

2(n+1)

multiplications

n additions

n multiplications

QUALITÉ D’UN BON ALGORITHME

EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME

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

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

Page 16: Chapitre i introduction et motivations

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