Académique Documents
Professionnel Documents
Culture Documents
structures de données
6ème cours
Patrick Reuter
maître de conférences
http://www.labri.fr/~preuter
Ingrédients d’algorithmes
• Affectation (ex. mois := 6, jours[1] := 31)
• Condition/Comparaison (ex. mois <= 12)
• Appel de fonction (ex. writeln(mois))
• Structure de contrôle
– Branchements conditionnels (multiples) (si ..
Alors .. Sinon)
– Boucles (tant que..faire, pour.. faire)
• Bloc d’instructions (begin .. end)
Motivation
Structure de données:
- tableau à 2 dimensions
…
Aujourd’hui
-Type enregistrement
- Complexité asymptotique
Déclaration de variables
var compteur : integer; Nombre entier
…
Déclaration de variables
• Type enregistrement (structure hétérogène)
type t_enregistrement = RECORD
nom_de_variable_1 : type1;
nom_de_variable_2 : type2;
...
nom_de_variable_n : typen;
END;
var dossier : t_enregistrement;
• Affectation
dossier.nom_de_variable_1 := valeur;
Type enregistrement (structure
hétérogène)
Exemple
• Déclaration du type
• Affectation
aujourdhui.jour = 17;
aujourdhui.mois = 10;
aujourdhui.an = 2006;
Type enregistrement (structure
hétérogène)
Exemple
• Déclaration du type
• Affectation
with aujourdhui do
jour := 17;
mois := 10;
an := 2006;
end
type t_date = RECORD
an : integer;
mois : byte;
jour : byte;
END;
var aujourdhui : t_date;
#536.870.911
#536.870.910 ...
...
aujourdhui.jour; #4005 17
aujourdhui.mois; #4004 10
aujourdhui.an; #4003 0
aujourdhui.an; #4002 0 Occupe de la place
aujourdhui.an;#4001 7 successive
aujourdhui.an #4000 214 dans la mémoire
...
#0
Type tableaux
•
d’enregistrements
Déclaration du type enregistrement :
• Affectation
collection[1].title = ‘Riders on the storm’;
collection[1].artiste = ‘The Doors’;
...
collection[n].title = ‘Talkin Blues’;
...
Type tableaux
d’enregistrements
• Exercice
i := i + 1;
fin tant que
Type tableaux
d’enregistrements
• Exercice
…
Enregistrements
• Motivation (à ne pas faire !)
…
Exigences d’un programme
• Lisibilité
• Extensibilité
• Portabilité
• Réutilisable
• Fiabilité
• Théorie de la complexité
– Temporelle
– Spatiale
• Affectations : 1 + n
• Comparaisons : 2n
• Appel de fonctions : n (Attention : considerer le “worst
case”, c-à-d la pire option)
• T(n) = 4n+1
2ème exemple pour T(n)
• Remplir une matrice identité
i := 1;
tant que i<=n faire
j := 1;
tant que j<=n faire
SI i=j ALORS
a[i][j] := 1;
SINON
a[i][j] := 0;
j := j + 1;
fin tant que
i := i + 1;
fin tant que
2ème exemple pour T(n)
i := 1;
tant que i<=n faire
j := 1;
tant que j<=n faire
SI i=j ALORS
a[i][j] := 1;
SINON
a[i][j] := 0;
j := j + 1;
fin tant que
i := i + 1;
fin tant que
• Affectations : 1 + 2n + 2n2
• Comparaisons : n+ 2n2
• T(n) = 4n2+3n+1
Théorie de la complexité –
Diminuer les constantes
n 1 2 3 10 20 100 1000
• Comment peut-on
optimiser T(n) ? T1(n) 8 25 46 431 1661 40301 4003001
• T(n) = 4n2+3n+1
• 1ère solution : T2(n) 4 16 36 400 1600 40000 4000000
diminuer les
constantes a,b,c T3(n) 1 4 9 100 400 10000 1000000
• Exemple :
– T1(n) = 4n2+3n+1 T1/T2 2 1,56 1,28 1,08 1,04 1,01 1
– T2(n) = 4n2
– T3(n) = n2
T1/T3 8 6,25 5,11 4,31 4,15 4,04 4
Théorie de la complexité –
Diminuer les constantes
• 2 fonctions
– T1(n) = a1n2+b1n+c1
– T2(n) = a2n2+b2n+c2
• Amélioration :
– lim n ∞ T1(n) /T2(n) = a1/a2
• T1(n) = log2n
logarithmique
• T2(n) = n
linéaire
• T3(n) = n log2 n
Quasi-linéaire
• T4(n) = n2
quadratique
• T5(n) = n3
cubique
• T6(n) = 2n
exponentiel
Théorie de la complexité –
Changement de la fonction
• Quel taille de n peut être résolue en 1 seconde, une minute, une heure ?
– Avec une machine de 1000 instructions par seconde