Algorithmes et structures de donnes 7me cours - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

Algorithmes et structures de donnes 7me cours

Description:

Aujourd'hui. Complexit asymptotique. Fonctions/Proc dures. D claration ... Nombre virgule flottante avec double pr cision. Cha ne de caract res ... – PowerPoint PPT presentation

Number of Views:37
Avg rating:3.0/5.0
Slides: 46
Provided by: PatrickR158
Category:

less

Transcript and Presenter's Notes

Title: Algorithmes et structures de donnes 7me cours


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

2
Aujourdhui
  • Complexité asymptotique
  • Fonctions/Procédures

3
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
4
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
5
Déclaration de variables
  • Types de base prédéfinis
  • Integer, boolean, Real, Single,
  • Les types énumérés
  • type t_jourdesemaine (lundi, mardi, mercredi,
    jeudi, vendredi, samedi, dimanche)
  • var jour t_jourdesemaine
  • Type tableau (structure homogène)
  • 1 dimension
  • type t_tableau array1..12 of byte
  • var jours t_tableau
  • 2 dimensions
  • type t_damier array1..8 of array1..8 of
    t_champ

6
  • type t_date RECORD
  • an integer
  • mois byte
  • jour byte
  • END
  • var aujourdhui t_date

536.870.911
536.870.910
...
...
aujourdhui.jour4005
24
Occupe de la place successive dans la mémoire
aujourdhui.mois4004
10
aujourdhui.an 4000
2006
...
0
7
Exigences dun programme
  • Lisibilité
  • Extensibilité
  • Portabilité
  • Réutilisable
  • Fiabilité
  • Efficacité (faible complexité)

8
Complexité
  • Combien de temps dexécution le programme dure
    til?
  • Complexité temporelle
  • De combien de mémoire le programme a til besoin?
  • ? Complexité de mémoire (ou Complexité spatiale)
  • Comment trouver ces complexités ?
  • ? méthode empirique
  • ? méthode mathématique

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

10
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

11
  • Instructions de répétition
  • Boucle
  • complexité du corps multipliée par le nombre
    de fois quelle est répétée.
  • Démarche
  • 1. déteminer le nombre de répétitions
  • 2. multiplier ce nombre par la complexité du
    corps de cette boucle.

12
1er exemple pour T(n)
  • Trouver lartiste dune chanson donnée kaya
  • i 1
  • tant que iltn faire
  • 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

13
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
  • fin si
  • j j 1
  • fin tant que
  • i i 1
  • fin tant que
  • Affectations 1 2n 2n2
  • Comparaisons n 2n2
  • ?
    T(n) 4n23n1

14
Théorie de la complexité
  • Comment peut on résoudre des problèmes de plus
    grande échelle (plus grand longueur des données
    dentrée n ) ?
  • On utilise une machine plus puissante
  • On choisit un algorithme avec une meilleure
    complexité

15
Théorie de la complexité
  • Comment peut on résoudre des problèmes de plus
    grande échelle (plus grande longueur des données
    dentrée n ) ?
  • On utilise une machine plus puissante (p.ex.10
    fois plus )

16
Théorie de la complexité Diminuer les constantes
  • 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

17
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 grand n, seule la constante du plus
    grand degré est significative

18
Théorie de la complexité
  • Comment peut on résoudre des problèmes de plus
    grande échelle (plus grande longueur des données
    dentrée n ) ?
  • On choisit un algorithme avec une meilleure
    complexité !!!

19
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

20
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

21
Théorie de la complexité
  • Notation Grand-O
  • Exemple
  • Si
  • T(n) c n
  • pour une constante c et toutes les valeurs de
    ngtn0, on dit
  • T(n) est dans O(n) ou bien
  • T(n) ? O(n) ou, par abus décriture,
  • T(n) O(n)

22
Théorie de la complexité
  • Notation Grand-O
  • Exemple (Rappel de T(n) 4n1)
  • Si
  • T(n) c n
  • pour une constante c et toutes les valeurs de
    ngtn0, on dit
  • T(n) est dans O(n) ou bien
  • T(n) ? O(n) ou, par abus décriture,
  • T(n) O(n)

23
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 ? O(n) !

24
Théorie de la complexité
  • En général
  • O(f) g ?c gt 0 ? n0 gt 0 ? n n0 g(n)
    c f(n)
  • Soit g une fonction non négative.
  • g est dans O(f) sil existe deux constantes
    positives c et n0 telles que g ? cf(n) pour tout
    n gt n0.
  • EXEMPLE T(n) 9n2 ? O(n2) f n2, g
    9n2

25
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? O(n2) !

26
Théorie de la complexité
  • Classes de Grand-O
  • O(1) complexité constante
  • O(log n) complexité logarithmique
  • O(n) complexité linéaire
  • O(n log n) complexité quasi-linéaire
  • O(na) complexité polynomiale
  • O(n2) complexité quadratique
  • O(n3) complexité cubique
  • O(an) complexité exponentielle

O(log n) ? O(n) ? O(n log n) ? O(n2) ? O(n3) ?
O(2n)
27
  • Instructions de répétition
  • Boucle
  • complexité du corps multipliée par le nombre
    de fois quelle est répétée.
  • Démarche
  • 1. déteminer le nombre de répétitions
  • 2. multiplier ce nombre par la complexité du
    corps de cette boucle.

28
  • On analyse les boucles pour comme les boucles
    tant que
  • Pour i de 1 à n faire
  • Fin pour
  • Instruction si maximum entre le alors et le
    sinon
  • cas maximum parmi les différents cas
  • Appels de fonctions Temps dexécution de la
    fonction

29
  • Procédures et fonctions
  • leur complexité est déteminée par celle de leur
    corps.

30
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

31
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

En-tête de la fonction
32
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

Corps de la fonction
33
(No Transcript)
34
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

Paramètres de la fonction (arguments)
35
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

Type de retour de la fonction
Valeur de retour de la fonction
36
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

37
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

boucle max n itérations
38
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

39
  • type t_tableau array1..n of integer
  • var tab t_tableau
  • function dedans(quoi integer, n integer)
    integer
  • var position integer
  • var i integer
  • début
  • position 0
  • i 1
  • tant que (iltn ET position 0) faire
  • si (quoi tabi) alors
  • position i
  • fin si
  • i i 1

? T(n) 4n3 ? O(n) !
40
  • type t_tableau array1..15 of integer
  • var tab t_tableau
  • function enigme(quoi integer, n integer)
    integer
  • var inf, sup, milieu integer
  • var trouve boolean
  • début
  • inf 1
  • sup n
  • trouve FAUX
  • tant que (sup gtinf ET trouve FAUX) faire
  • milieu (inf sup) DIV 2
  • si (quoi tabmilieu) alors
  • trouve VRAI
  • sinon
  • si (quoi lt tabmilieu) alors
  • sup milieu -1

41
  • type t_tableau array1..15 of integer
  • var tab t_tableau
  • function enigme(quoi integer, n integer)
    integer
  • var inf, sup, milieu integer
  • var trouve boolean
  • début
  • inf 1
  • sup n
  • trouve FAUX
  • tant que (sup gtinf ET trouve FAUX) faire
  • milieu (inf sup) DIV 2
  • si (quoi tabmilieu) alors
  • trouve VRAI
  • sinon
  • si (quoi lt tabmilieu) alors
  • sup milieu -1

42
  • type t_tableau array1..15 of integer
  • var tab t_tableau
  • function enigme(quoi integer, n integer)
    integer
  • var inf, sup, milieu integer
  • var trouve boolean
  • début
  • inf 1
  • sup n
  • trouve FAUX
  • tant que (sup gtinf ET trouve FAUX) faire
  • milieu (inf sup) DIV 2
  • si (quoi tabmilieu) alors
  • trouve VRAI
  • sinon
  • si (quoi lt tabmilieu) alors
  • sup milieu -1

boucle max. log2n itérations
43
  • Pourquoi log2n ?
  • n entrées dans le tableau
  • intervalle sup, inf
  • à chaque itération, lintervalle est divisé par 2
  • Soit
  • milieu (inf sup) DIV 2
  • sup milieu -1
  • Soit
  • milieu (inf sup) DIV 2
  • inf milieu 1
  • condition darrêt sup inf
  • c-à-d que lintervalle est inférieur à 1
  • ? max log2n itérations

44
  • Pourquoi log2n ?
  • n entrées dans le tableau
  • intervalle sup, inf
  • à chaque itération, lintervalle est divisé par 2
  • Soit
  • milieu (inf sup) DIV 2
  • sup milieu -1
  • Soit
  • milieu (inf sup) DIV 2
  • inf milieu 1
  • condition darret sup inf
  • c-à-d que lintervalle est inférieur à 1

45
  • type t_tableau array1..15 of integer
  • var tab t_tableau
  • function enigme(quoi integer, n integer)
    integer
  • var inf, sup, milieu integer
  • var trouve boolean
  • début
  • inf 1
  • sup n
  • trouve FAUX
  • tant que (sup gtinf ET trouve FAUX) faire
  • milieu (inf sup) DIV 2
  • si (quoi tabmilieu) alors
  • trouve VRAI
  • sinon
  • si (quoi lt tabmilieu) alors
  • sup milieu -1

? T(n) 7log2n5 ? O(log n) !
Write a Comment
User Comments (0)
About PowerShow.com