Algorithmes et structures de donn - PowerPoint PPT Presentation

About This Presentation
Title:

Algorithmes et structures de donn

Description:

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 ... – PowerPoint PPT presentation

Number of Views:219
Avg rating:3.0/5.0
Slides: 31
Provided by: PatrickR158
Category:

less

Transcript and Presenter's Notes

Title: Algorithmes et structures de donn


1
Algorithmes et structures de données6ème cours
  • Patrick Reuter
  • maître de conférences
  • http//www.labri.fr/preuter

2
Ingré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)

3
Motivation
Structure de données - tableau à 2 dimensions
4
Aujourdhui
  • Type enregistrement
  • Complexité asymptotique

5
Dé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
6
Dé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
7
Dé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

8
Enregistrements
  • 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

9
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
  • 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

10
Type 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

11
Type 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

12
Type 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
14
Type 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

15
Type 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

16
Type 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

17
Type 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

18
Enregistrements
  • 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

19
Enregistrements
  • 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

20
Exigences dun programme
  • Lisibilité
  • Extensibilité
  • Portabilité
  • Réutilisable
  • Fiabilité
  • Efficacité (faible complexité)

21
Complexité
  • 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

22
Mé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.

23
Mé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

24
1er 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

25
2è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

26
2è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

27
Thé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

28
Thé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

29
Thé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

30
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

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
Write a Comment
User Comments (0)
About PowerShow.com