Algorithmique et complexité de calcul
Objectifs :
• Étude des techniques de conception et d'analyse des algorithmes.
• comparaison et classification des algorithmes.
Ce n’est pas un catalogue d'algorithmes pour la résolution de
problèmes spécifiques.
Plan :
I Préliminaires
II Analyse de l'efficacité des algorithmes
III Diviser pour régner
IV Algorithmes voraces
V Programmation dynamique
VI Transformation du domaine
VII Algorithmes probabilistes
VIII Pré conditionnement
Chapitre 1 : Préliminaires
1 Notion d’algorithme
2 Efficacité des algorithmes
3 Nature de l’analyse
4 Pourquoi des algorithmes efficaces
5 Calcul des nombres de Fibonacci
1 Notion d’algorithme
Origine : le mot "algorithme" est associé au célèbre auteur Perse
Abou Jaafar Mohammed Ibn Moussa Al Khawarizmi connu pour son
livre "Al Jabr oua El Mokabala" écrit en l'an 825.
Un algorithme est une méthode systématique pour résoudre un
problème donné. L'exécution ne doit pas laisser la place à
l'interprétation, l’intuition ni à la créativité.
L’Algorithmique est l’étude des techniques de conception et
d’analyse des algorithmes.
Intérêt de l’étude de l’efficacité d’un algorithme ou de sa
complexité :
Un problème peut être résolu par plusieurs algorithmes.
L’étude de la complexi permet de choisir le meilleur = le plus
efficace. L’efficacité est caractérisée par :
Les temps d’exécution (on recherchera le plus rapide)
L’occupation de la mémoire
Consommation optimale des ressources de l’ordinateur
Cette étude utilise
La trace
Chronomètre
Etude théorique
Exemples :
• Multiplication des nombres entiers
Tri
Fibonacci
Multiplication des nombres : 8*9 et 54*17
Travail : Proposer des algorithmes pour faire ces multiplications et
des outils pour les comparer.
Algorithmes classique et russe
Pré requis pour les multiplications:
Méthode classique : tables de multiplication et d’addition
Méthode russe : multiplication par 2 et division par 2 (décalages
à droite et à gauche dans une représentation en base 2) +
addition
Travail demandé :
Compter le nombre de divisions et opérations
Ecrire l’opérande qui est divisé en binaire
Conclusion ?
Algorithme de multiplication russe
fonction russe (a,b)
tableau X , Y
X[1] a , Y[1] b, i 1 { initialisation }
tant que X[i] > 1 faire {former les 2 colonnes}
X[i + 1] X[i] div 2
Y[i + 1] Y[i] * 2
i i + 1
p 0 {addition des entrées appropriées}
tant que i > 0 faire
si (X[i] mod 2 = 1) alors p p + Y[i]
i i - 1
retourner p
Exercice : Faire la trace pour l'exemplaire (17,53). Modifier cet
algorithme pour avoir une seule boucle et utiliser des variables
scalaires.
Autre algorithme de multiplication russe
fonction autre_russe (a , b)
entier x , y
x a, y b, p 0 {initialisation}
tant que x 1 faire
si (x mod 2 = 1) alors p p + y {ajouter la valeur
appropriée}
x x div 2
y y * 2
retourner p
Algorithme de la multiplication pas russe
fonction pas_russe (A,B)
tableau X,Y
X[1] A, Y[1] B, i 1 { initialisation }
tant que X[i] > 1 faire { former les 2 colonnes }
X[i + 1] X[i] - 1
Y[i + 1] B
i i + 1
P 0 { additionner les entrées appropriées }
tant que i > 0 faire
si X[i] > 0 alors P P + Y[i]
i i - 1
retourner P
2 Efficacité des algorithmes
Définition : Un exemplaire x est l’entrée d’un algorithme, |x| = n =
taille de l'exemplaire x
Exemples :
- Tri : |x| est le nombre d'entiers à ordonner.
- Multiplication : |x| est le nombre de chiffres (ou bits) des facteurs
Approches d’analyse :
- Empirique : programmation + exécution avec plusieurs exemplaires
- Théorique : déterminer la quantité de ressources (temps,
mémoire,...) en fonction de la taille des exemplaires
Avantages de l'approche théorique :
- Indépendance de l'ordinateur et langage de programmation
- Gain dans l'exécution des algorithmes inefficaces
- Taille des exemplaires n'est pas une contrainte
3 Nature de l’analyse
Efficacité d’un algorithme dépend
- taille de l’exemplaire
- espace mémoire
-
Comparaison des algorithmes selon différentes analyses
- meilleur cas (optimiste)
- moyenne
- pire cas (pessimiste)
Cf. Notebook pour Tri et Fibonacci
Tri par insertion
Procédure insert (T[1..n])
pour i2 jusqu'à n faire
xT[i]
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !