1
ALGORITHMES AVANCÉS ET
PROGRAMMATION AVEC
PYTHON
Responsable du cours : Mariem Gzara
Mastère Big Data
Université de Djibouti-Faculté des Sciences
2019-2020
1
Algorithmes Avancés et
Programmation avec Python
I. Analyse des algorithmes
II. Complexité des algorithmes récursifs
III. Tris et rangs
IV. Les files avec priorités (tas binomial, tas de
fibonacci)
V. Les tables de Hachage
VI. Graphes et structures de données pour les graphes
VII. Les algorithmes gloutons
VIII.La programmation dynamique
2
Analyse des algorithmes
3
Analyse des algorithmes
Motivations pour calculer la complexité
Complexité des algorithmes
Notations asymptotiques et grandeurs de
fonctions
Notations asymptotiques et algorithmes
4
2
5
Motivations
Considérons le problème de recherche d’une valeur a
dans une séquence <a1, a2…an> de taille n.
Instances possibles du problème de recherche d’une
valeur:
<5,10,8,19,30>, n=5, a=10
<18, 19, 20, 48,58>, n=5, a=10
<18, 100,30,…,150>, n=100, a=19
Une instance d’un problème est constituée de
toutes les entrées nécessaires pour calculer une
solution du problème.
6
Algorithme: recherche_valeur
Entrée : tableau T, Valeur
Début
(1) I1
Tant que( (IN)(2) et (T[I] valeur)(3) )
(4) II+1
Fin tant que
(5) Si (I>N) alors
(6) écrire (valeur pas dans le tableau)
Sinon
(7) écrire (valeur dans tableau)
Fin Si
Fin
Motivations
7
Exécution à la main:
Instance 1: <5,10,8,19,30>, n=5, a=5 Instance 2: <5,10,8,19,30>, n=5, a=30
(1) I=1 (1) I=1
(2)15 vrai (2)15 vrai
(3) T[1]=5 5 faux (3) T[1]=5 30 vrai
(5) 1 5 vrai (4) I=2
(6) Retourner vrai (2)25 vrai
3) T[2]=10 30 vrai
5 instructions élémentaires (4) I=3
(2)35 vrai
(3) T[3]=8 30 vrai
(4) I=4
(2)45 vrai
(3) T[4]=19 30 vrai
(4) I=5
(2) 55 vrai
(3) T[5]=30 30 faux
(5) 5 5 vrai
(6) Retourner vrai
17 instructions élémentaires
Le nombre d’instructions élémentaires exécutées dépend de la position de la
valeur recherchée dans l’instance
Motivations
8
Motivations
Exécution à la main:
Instance 2: <5,10,8,19,30,16,22>, n=7, a=22
(1) I=1 (4) I=6
(2)17 vrai (2) 67 vrai
(3) T[1]=5 22 vrai (3) T[6]=16 22 vrai
(4) I=2 (4) I=7
(2)27 vrai (2) 77 vrai
(3) T[2]=10 22 vrai (3) T[7]=22 22 faux
(4) I=3 (5) 7 7 vrai
(2)37 vrai (6) Retourner vrai
(3) T[3]=8 22 vrai 23 instructions élémentaires
(4) I=4
(2)47 vrai
(3) T[4]=19 22 vrai
(4) I=5
(2) 57 vrai
(3) T[5]=30 22 vrai
Le nombre d’instructions élémentaires exécutées dépend de la taille de
linstance
3
9
Un nombre maximum d’instructions est exécuté si valeur
se trouve sur le dernier élément du tableau ou bien ne
fait pas partie du tableau
Un nombre minimum d’instructions est exécuté si valeur
se trouve sur le premier élément du tableau
T(meilleur des cas)temps exécution instanceT(pire des cas)
Cas le plus favorable Cas le plus défavorable
Motivations
10
Motivations
Le nombre d’instructions élémentaires
exécutées dans un algorithme dépend de
l’instance, c-à-d dépend de l’entrée de
l’algorithme :
dépend de la taille de l’entrée
dépend de la nature de l’entrée
Comment prévoir le temps de réponse d’un algorithme?????????
11
Motivations
Calcul de xn, x réel, n entier
Méthode naïve
Puissance(x,n)
y1
I 1
Pour I allant de 1 à n faire
y y*x
Fin pour
Retourner y
Pour calculer x23, il faut effectuer 23
multiplications
Méthode binaire
1. Écrire n sous forme binaire
2. Remplacer chaque :
– « 1 » par la paire de lettres « SX » ;
– « 0 » par la lettre « S ».
3. Éliminer la paire « SX » la plus à
gauche.
4. Résultat : un mode de calcul de xn
– S signifie « élever au carré »
– X signifie « multiplier par x ».
Le tout en partant de x.
Pour calculer x23, il faut 7 multiplications
23 =10111
SX S SX SX SX
S SX SX SX
x2 x5 x11 x23
12
Motivations
Double problématique de l’algorithmique:
Trouver une méthode de résolution (exacte ou
approchée) du problème.
Trouver une méthode efficace.
Savoir résoudre un problème est une chose, le
résoudre efficacement en est une autre.
4
13
Motivation
Objectifs:
prévoir les ressources cessaires à un algorithme (temps, mémoire)
mesurer l’efficacité d’un algorithme
comparer des algorithmes
Les critères de choix d’un algorithme sont:
Simplicité de compréhension, de mise en œuvre
Exploitation optimale des ressources de l’ordinateur, mémoire et
entrée/sortie
Rapidité d’exécution
Le temps d’exécution d’un algorithme dépend :
du nombre et de la nature des entrées/sorties.
des performances de l’unité centrale, de la taille de la mémoire centrale
relativement à la taille des données manipulées
de la complexité algorithmique du programme.
14
Complexité des algorithmes
La Complexité spatiale d’un algorithme est la
mesure du nombre de mots mémoire
nécessaires pour la mise en œuvre de
l’algorithme
La complexité temporelle d’un algorithme est la
mesure du nombre d’opérations fondamentales
qu’il effectue sur un jeu de données
La complexité est exprimée comme une fonction
de la taille du jeu de données
15
Complexité spatiale
Réduction de la complexité spatiale complexité spatiale : Une
matrice de permutation contient un seul 1 par ligne et par colonne.
Quelle structure de données minimale permet de stocker une telle
matrice ?
16
Temps de calcul
Complexité en temps
T(algo, d) =
temps d'exécution de l'algorithme algo appliqué aux
données d
Éléments de calcul de la complexité en temps
T(opération élémentaire) = constant
T( si C alors I sinon J ) = T(C) + max (T(I), T(J))
T( pour i allant de e1 à e2 faire li ) = T(e1) + T(e2) + T(Ii)
Temps de calcul de procédures récursives est solution
d’équations de récurrence
5
17
Temps de calcul
• T(algo, d) dépend en général de d.
Complexité au pire
TMAX (algo, n)=max {T(algo, d) ; d de taille n }
Complexité au mieux
TMIN (algo, n)=min {T(algo, d) ; d de taille n }
Complexité en moyenne
TMOY (algo, n)= p(d).T(algo, d)
p(d) = probabilité d'avoir la donnée d
TMIN (algo, n) TMOY (algo, n) TMAX (algo, n)
18
Tri-insertion
Tri_insertion(T,n) Coû
t
meilleur
cas
pire cas
Pour j2 à N faire c1
clé A[j] c2
Insertion de A[j] dans la séquence
trié A[1,j-1]
i j-1 c3
Tant que i>=1 et A[i]>clé Faire c4 c5
A[i+1] A[i] c6
i i-1 c7
Fin Tant que
A[i+1] clé c8
Fin pour
19
Étudier l’efficacité asymptotique des algorithmes, c-à-d la limite du
temps d’exécution en fonction de la taille de l’entrée
Mesurer le comportement asymptotiques de grandeurs données
(encombrement et temps d’exécution)
Taille mémoire nécessaire
Dans le pire cas
Dans le meilleur cas
En encadrement (cas moyen) : pas facile à calculer hypothèses
probabilistes sur la répartition des données
Complexité des algorithmes Notation asymptotique et Grandeur des fonctions
Notation O
La notation O définit une borne
asymptotique supérieure.
Pour une fonction g(n) donnée, on note
O(g(n)) l’ensemble des fonctions tel que:
O(g(n))={f(n): il existe deux constantes
strictement positives c et n0 telles que
0f(n)c.g(n) pour tout nn0}
20
1 / 30 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 !