Title: Algorithmes et structures de donn
1Algorithmes et structures de données6ème cours
- Patrick Reuter
- maître de conférences
- http//www.labri.fr/preuter
2Ingrédients dalgorithmes
- Affectation (ex. mois 6, jours1 31)
- Condition/Comparaison (ex. mois lt 12)
- Appel de fonction (ex. writeln(mois))
- Structure de contrôle
- Branchements conditionnels (multiples) (si ..
Alors .. Sinon) - Boucles (tant que..faire, pour.. faire)
- Bloc dinstructions (begin .. end)
3Motivation
Structure de données - tableau à 2 dimensions
4Aujourdhui
- Type enregistrement
- Complexité asymptotique
5Déclaration de variables
- var compteur integer
- var diviseur single
- var c char
- var precision double
- var nom string
- var masculin boolean
- var jours array1..12 of byte
- diviseur 1.1 Affectation
- compteur 1
- Nom Gerhard
Nombre entier
Nombre à virgule flottante
Nombre à virgule flottante avec double précision
Chaîne de caractères
Tableau
6Déclaration de variables
- var compteur integer
- var diviseur single
- var c byte
- var precision double
- var nom string
- var masculin boolean
- var jours array1..12 of byte
- diviseur 1.1 Affectation
- compteur 1
- Nom Gerhard
Nombre entier
Nombre à virgule flottante
Nombre à virgule flottante avec double précision
Chaîne de caractères
Tableau
7Déclaration de variables
- Types de base prédéfinis
- Integer, boolean, single,
- Type tableau
-
- type t_tableau array1..12 of byte
- var jours t_tableau
- structure de données la plus connue
- structure homogène, chaque élément est du même
type de base - occupe de la place successive dans la mémoire
- random access laccès aux différents
éléments se fait à coût égal
8Enregistrements
- Motivation (à ne pas faire !)
- type t_couleur (rouge, vert, jaune)
- var joueurnom array1..n of string
- var joueurscore array1..n of integer
- var joueurcouleur array1..n of t_couleur
- joueurnom1 " Martin
- joueurscore1 0
- joueurcouleur1 rouge
- joueurnom2 " Romain
- joueurscore2 0
- joueurcouleur2 vert
9Dé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
- structure hétérogène, les éléments peuvent être
dun type différent - occupe de la place successive dans la mémoire
- random access l accès aux différents
éléments se fait à coût égal
10Type enregistrement (structure hétérogène
- Déclaration du type
- type t_enregistrement RECORD
- nom_de_variable_1 type1
- nom_de_variable_2 type2
- ...
- nom_de_variable_n type2
- END
- var dossier t_enregistrement
- Affectation
- dossier.nom_de_variable_1 valeur
11Type enregistrement (structure hétérogène)
- Exemple
- Déclaration du type
- type t_date RECORD
- an integer
- mois byte
- jour byte
- END
- Déclaration dune variable
- var aujourdhui t_date
- Affectation
- aujourdhui.jour 17
- aujourdhui.mois 10
- aujourdhui.an 2006
12Type enregistrement (structure hétérogène)
- Exemple
- Déclaration du type
- type t_date RECORD
- an integer
- mois byte
- jour byte
- END
- Déclaration dune variable
- var aujourdhui t_date
- Affectation
- with aujourdhui do
- jour 17
- mois 10
13- type t_date RECORD
- an integer
- mois byte
- jour byte
- END
- var aujourdhui t_date
536.870.911
...
536.870.910
...
17
aujourdhui.jour 4005
aujourdhui.mois 4004
10
aujourdhui.an 4003
0
aujourdhui.an 4002
0
Occupe de la place successive dans la mémoire
aujourdhui.an4001
7
aujourdhui.an 4000
214
...
0
14Type tableaux denregistrements
- Déclaration du type enregistrement
- type t_chanson RECORD
- titre string100
- artiste string100
- album string100
- longueur integer
- date t_date
- END
- Déclaration du type tableau
- type t_tableau_chansons array1..n of
t_chanson - Déclaration dune variable de ce type
-
- var collection t_tableau_chansons
- Affectation
15Type tableaux denregistrements
- Exercice
- type t_chanson RECORD
- titre string100
- artiste string100
- album string100
- longueur integer
- date t_date
- END
- type t_tableau_chansons array1..n of
t_chanson - var collection t_tableau_chansons
- Trouver lartiste dune chanson donnée kaya
- i 1
- tant que iltn
-
16Type tableaux denregistrements
- Exercice
- type t_chanson RECORD
- titre string100
- artiste string100
- album string100
- longueur integer
- date t_date
- END
- type t_tableau_chansons array1..n of
t_chanson - var collection t_tableau_chansons
- Trouver lartiste dune chanson donnée kaya
- i 1
- tant que iltn
- si collectioni.title kaya alors
- afficher collectioni.artiste
17Type tableaux denregistrements
- Exercice
- type t_chanson RECORD
- titre string100
- artiste string100
- album string100
- longueur integer
- date t_date
- END
- type t_tableau_chansons array1..n of
t_chanson - var collection t_tableau_chansons
- Trouver lartiste dune chanson donnée kaya
- trouve FAUX
- i 1
- tant que (iltn AND trouve FAUX)
- si collectioni.title kaya alors
- afficher collectioni.artiste
18Enregistrements
- Motivation (à ne pas faire !)
- type t_couleur (rouge, vert, jaune)
- var joueurnom array1..n of string
- var joueurscore array1..n of integer
- var joueurcouleur array1..n of t_couleur
- joueurnom1 " Martin
- joueurscore1 0
- joueurcouleur1 rouge
- joueurnom2 " Romain
- joueurscore2 0
- joueurcouleur2 vert
19Enregistrements
- Motivation (à ne pas faire !)
- type t_couleur (rouge, vert, jaune)
- type t_joueur RECORD
- nom string
- score integer
- couleur t_couleur
- END
- var joueur array1..n of t_joueur
- joueur1.nom " Martin
- joueur1.score 0
- joueur1.couleur rouge
- joueur2.nom " Romain
- joueur2.score 0
20Exigences dun programme
- Lisibilité
- Extensibilité
- Portabilité
- Réutilisable
- Fiabilité
- Efficacité (faible complexité)
21Complexité
- Quel est le temps déxécution du programme?
- Complexité temporelle
- De combien de mémoire le programme a-t-il besoin?
- ? Complexité de mémoire (ou Complexité spatiale)
- Comment déterminer ces complexités ?
- ? méthode empirique
- ? méthode mathématique
22Méthode empirique
- Avec une montre et un logiciel danalyse de
mémoire - Problème dépend des facteurs suivants
- de la machine utilisée
- du jeu dinstructions utilisées
- de lhabileté du programmeur
- du jeu de données générées
- du compilateur choisi
-
- BIEN SUR Le temps dexécution dépend de la
longueur de lentrée (par exemple le nombre de
chansons dans la collection). - Ce temps est une fonction T(n) où n est la
longueur des données dentrée.
23Méthode mathématique
- Théorie de la complexité
- Temporelle
- Spatiale
- Basée sur une machine abstraite
- Random-access memory (RAM)
- Instructions de base (affectation, boucle, appel
de fonctions ) - longueur des données dentrée n
241er exemple pour T(n)
- Trouver lartiste dune chanson donnée kaya
- i 1
- tant que iltn
- si collectioni.title kaya alors
- afficher collectioni.artiste
- i i 1
- fin tant que
- Affectations 1 n
- Comparaisons 2n
- Appel de fonctions n (Attention
considerer le worst case, c-à-d la pire option) - ?
T(n) 4n1
252ème exemple pour T(n)
- Remplir une matrice identité
- i 1
- tant que iltn faire
- j 1
- tant que jltn faire
- SI ij ALORS
- aij 1
- SINON
- aij 0
- j j 1
- fin tant que
- i i 1
- fin tant que
262ème exemple pour T(n)
- i 1
- tant que iltn faire
- j 1
- tant que jltn faire
- SI ij ALORS
- aij 1
- SINON
- aij 0
- j j 1
- fin tant que
- i i 1
- fin tant que
- Affectations 1 2n 2n2
- Comparaisons n 2n2
- ?
T(n) 4n23n1
27Théorie de la complexité Diminuer les constantes
n 1 2 3 10 20 100 1000
T1(n) 8 25 46 431 1661 40301 4003001
T2(n) 4 16 36 400 1600 40000 4000000
T3(n) 1 4 9 100 400 10000 1000000
T1/T2 2 1,56 1,28 1,08 1,04 1,01 1
T1/T3 8 6,25 5,11 4,31 4,15 4,04 4
- Comment peut-on optimiser T(n) ?
- T(n) 4n23n1
- 1ère solution diminuer les constantes a,b,c
- Exemple
- T1(n) 4n23n1
- T2(n) 4n2
- T3(n) n2
28Théorie de la complexité Diminuer les constantes
- 2 fonctions
- T1(n) a1n2b1nc1
- T2(n) a2n2b2nc2
- Amélioration
- lim n? 8 T1(n) /T2(n) a1/a2
- Pour des grands n, seule la constante du plus
grand degré est significative
29Théorie de la complexité Changement de la
fonction
- 2ème solution
- changer la fonction
- 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
30Thé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
Ti(n) 1 sec 1 min 1 heure
log2n 21000 260000 23600000
N 1000 60000 36000000
n log2 n 140 4893 20000
n2 131 244 1897
n3 10 39 153
2n 9 15 21