[PDF] Algorithmique Structures de données





Previous PDF Next PDF



Structures de données et algorithmes

pdf. 5. Page 6. Cours sur le web. Ce cours s'inspire également de plusieurs ... Une structure de données conserve des données et éventuellement des méta-données.



Cours de structures de données licence 2 - Université CLERMONT 2

Structure Générale d'un Ordinateur. Le modèle de nos ordinateurs est celui de Von Neumann (communément appelé machines à registres). Ils sont équiva- lents aux 



Structures de Données

8 янв. 2021 г. Les notions présentées dans ce cours sont les suivantes : — les mécanismes d'allocation dynamique du langage C;. — la séparation entre le type ...



INF3105 – Structures de données et algorithmes Notes de cours

L'objectif du cours INF3105 est d'approfondir le sujet des structures de données et des algorithmes fondamentaux en informatique. Les structures de données 



Cours Structures de données Objectifs du Cours

Structures de données (2013-2014). [SMI4_fsr]. Page 3. 3. Répartition & Evaluation. Semaine 1. 2. 3. 4. 5. 6. 7 8. 9. 10. 11. 12. 13. 14. Cours.



Les structures de données

○ Structure de données = regroupement de données. ○ Permet de lier entre ○ Une structure de données (tuple ou tableau) s'appelle un objet. ○ Un objet ...



GMT-6005 : Structures de données géométriques et algorithmes en

12 апр. 2018 г. structure de données spatiale et son fonctionnement et ses applications potentielles. ... pdf. Tout étudiant(e) est tenu en réalisant tout ...



Structure de données élémentaires en Python : listes tuples

Structures de données. Structure de données élémentaires en Python : listes tuples



Structures de données et algorithmes

Action d'une donnée de valeur x dans la structure de données où encore une fois



Algorithmique Structures de données

Structures séquentielles : les tableaux. 5 de 87. Structure de donnée séquentielle (tableau). En anglais : array vector. Définition.



Structures de données et algorithmes

Des structures de données permettant d'organiser et d'accéder efficacement aux données http://www.cs.berkeley.edu/~vazirani/algorithms/all.pdf.



Cours de structures de données licence 2 - Université CLERMONT 2

Structure Générale d'un Ordinateur. 2. 1.2. Mémoire Centrale. 3. 1.3. Langages. 3. 2. Algorithmes Valeurs



Structure de Données Introduction

2 Structure de données. 3 Pseudo Langage. 4 Tableaux. 5. Étude de complexité. Tri par insertion. Calcul de xn. Recherche dichotomique. Introduction.



Cours Structures de données Objectifs du Cours

Structures de données. 2ème année SMI Semestre ème année SMI



Algorithmique Structures de données et langage C

Elle permet de simplifier l'écriture d'un programme en regroupant des données liées entre elles. Un exemple type d'utilisation d'une structure est la gestion d' 



Structure de donnees.pdf

Ce document est un résumé concernant les structures les plus classiques rencontrées en informatique pour organiser des données. On suppose que le lecteur 



Leçon 901 : Structure de données. Exemples et applications.

De plus en fonction du problème (donc de l'algorithme)



Support de Cours - Structures de Données

Structures Arborescentes : Arbres binaires et Arbres BR Une structure de données est un moyen de stocker et organiser les données pour faciliter.



[PDF] Structure de Données Introduction

1 Introduction et Tableaux 2 Tri et Tas 3 Pile File Deque et Queue de priorité Regroupement : structures de données et types abstraits



[PDF] Structures de données et algorithmes - MONTEFIORE - Who is who?

Des structures de données permettant d'organiser et d'accéder efficacement aux données http://www cs berkeley edu/~vazirani/algorithms/all pdf



[PDF] Cours de structures de données licence 2 - Université CLERMONT 2

STRUCTURES DE DONNÉES 11 des files d'attente et qui ont la propriété du type FIFO (First In First Out) le TDA File est une formalisation de la propriété 



[PDF] Cours Structures de données - Faculté des Sciences de Rabat

1 Cours Structures de données 2ème année SMI Semestre Manipuler des structures de données de base : ? Structures linéaires (piles files listes) ;



[PDF] Structures de Données

8 jan 2021 · Ce document constitue le support du cours de structures de données à Polytech Lille pour les étudiants en troisième année de la filière IS 



[PDF] Support de Cours - Structures de Données

Structures Arborescentes : Arbres binaires et Arbres BR Une file est une structure de données qui permet de stocker les données dans l'ordre



[PDF] INF3105 – Structures de données et algorithmes Notes de cours

1 Introduction et rappel de notions de base L'objectif du cours INF3105 est d'approfondir le sujet des structures de données et des algorithmes



[PDF] Leçon 901 : Structure de données Exemples et applications

Les structures de données d'ordonnancement nous donne des structures qui nous per- mettent de ranger les données selon un certains ordre : de les trier 2 1 La 



[PDF] Structure de donneespdf - Zenk - Security

Ce document est un résumé concernant les structures les plus classiques rencontrées en informatique pour organiser des données On suppose que le lecteur 

  • Quel est la structure de données ?

    Une structure de données est un format spécial destiné à organiser, traiter, extraire et stocker des données. S'il existe plusieurs types de structures plus ou moins complexes, tous visent à organiser les données pour répondre à un besoin précis, afin de pouvoir y accéder et les traiter de façon appropriée.
  • Quelles sont les structures de données en informatique ?

    Nous allons étudier quatre grandes classes de structures de données : Les structures de données séquentielles (tableaux) ; Les structures de données linéaires (liste chaînées) ; Les arbres ; Les graphes. En anglais : array, vector.
  • Quels sont les 4 familles de structure algorithmique ?

    Un algorigramme bien représenté doit être fl?hé et fermé, compris entre un début et une fin. Les opérations relatives à la résolution d'un problème peuvent en fonction de leur enchaînement, être organisées selon trois familles de structures : - structures linéaires, - structures alternatives, - structures répétitives.
  • La structuration des données des applications métiers permet la création d'un référentiel métier, avec la formalisation des relations conceptuelles existantes. Le recueil de ces concepts sera essentiel pour décrire des objets dans les différentes applications métiers.

1 de 87

Algorithmique

Structures de données

Florent Hivert

Mél :Florent.Hivert@lri.fr

Page personnelle :http://www.lri.fr/˜hivert

2 de 87

Types de données

Retenir

Avoir choisi les bons types de données permet d"avoir un programmeplus lisible car auto documenté plus facile à maintenir souvent plus rapide, en tout cas plus facile à optimiser " I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships. " - Linus Torvalds (creator of Linux)

3 de 87

Algorithmes et structures de données

La plupart des bons algorithmes fonctionnent grâce à une méthode astucieuse pour organiser les données. Nous allons étudier quatre

grandes classes de structures de données :Les structures de données séquentielles (tableaux);

Les structures de données linéaires (liste chaînées);

Les arbres;

Les graphes.

Structures séquentielles : les tableaux

4 de 87Structures

séquentielles : les tableaux

Structures séquentielles : les tableaux

5 de 87Structure de donnée séquentielle (tableau)

En anglais : array, vector.Définition

Untableauest une structure de donnéeTqui permet de stocker un certain nombre d"élémentsT[i]repérés par un indexi. Les

tableaux vérifient généralement les propriétés suivantes :tous les éléments ont le même type de base;

le nombre d"éléments stockés est fixé; l"accès et la modification de l"élément numéroiest en temps constant(1), indépendant deiet du nombre d"éléments, le tableau.

Structures séquentielles : les tableaux

6 de 87Un tableau en mémoire

Définition

Dans le tableau, tous les éléments ont la même taille mémoire. Nombre d"élément :n, taille d"un élémentt:T[0]T[1]T[2]...T[n-1]

On suppose que le tableau commence à l"adressedT[0]occupe les casesdàd+t1;T[1]occupe les casesd+tàd+2t1;T[i]occupe les casesd+itàd+ (i+1)t1;Le tableau entier occupe les casesdàd+nt1.

Note : indirection (pointeur) possible si taille variable (par exemple classe virtuelle).

Structures séquentielles : les tableaux

6 de 87Un tableau en mémoire

Définition

Dans le tableau, tous les éléments ont la même taille mémoire. Nombre d"élément :n, taille d"un élémentt:T[0]T[1]T[2]...T[n-1]

On suppose que le tableau commence à l"adressedT[0]occupe les casesdàd+t1;T[1]occupe les casesd+tàd+2t1;T[i]occupe les casesd+itàd+ (i+1)t1;Le tableau entier occupe les casesdàd+nt1.Note : indirection (pointeur) possible si taille variable (par exemple

classe virtuelle).

Structures séquentielles : les tableaux

7 de 87Structure de donnée séquentielle (tableau)

On encapsule souvent le tableau dans une structure qui permet de

faire varier la taille :Java : tableauint[](taille fixe),ArrayList(taille variable)C : tableauint[](taille fixe), pointeur (taille variable)C++ :std::array(taille fixe),std::vector(taille variable)Python :list(taille variable,6=liste chaînée)

Structures séquentielles : les tableaux

8 de 87Exemple : Tableau en C (bas niveau)

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).définitionstatique:elem t[taille];définitiondynamiqueen deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));L"adresse det[i]est notét + i. Calculée par

Addr(t[i]) = Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

8 de 87Exemple : Tableau en C (bas niveau)

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).définitionstatique:elem t[taille];définitiondynamiqueen deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));L"adresse det[i]est notét + i. Calculée par

Addr(t[i]) = Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

8 de 87Exemple : Tableau en C (bas niveau)

On suppose déclaré un typeelempour les éléments.Espace mémoire nécessaire au stockage d"un élément exprimé

en mots mémoire (octets en général) :sizeof(elem).définitionstatique:elem t[taille];définitiondynamiqueen deux temps (déclaration, allocation) :

#include elem *t; t = (elem*) malloc(taille*sizeof(elem));L"adresse det[i]est notét + i. Calculée par

Addr(t[i]) = Addr(t[0]) +sizeof(elem)i

Structures séquentielles : les tableaux

9 de 87Tableau en Java

On suppose déclaré un typeelempour les éléments.définitiondynamiqueen deux temps (déclaration, allocation) :

elem[] t; t = new elem[taille];

Structures séquentielles : les tableaux

10 de 87Tableau partiellement remplis

Retenir

Pour simuler un tableau de taille variable, on peut

réserver une certaine quantité de mémoire appeléecapacite,et ranger les valeursau début du tableau .

Organisation des données (structure, classe) :

tableau de taillecapaciteallouééléments d"indiceipour 0i0 ...taille1 ...capacite1utilisélibre

Structures séquentielles : les tableaux

11 de 87Opérations de base

Hypothèses :tableau de taillecapaciteallouééléments 0i

accès au premier élément :(1)accès à l"élément numéroi:(1)accès au dernier élément :(1)insertion/suppression d"un élément au début :(taille)insert./suppr. d"un élt en positioni:(taillei)O(taille)insert./suppr. d"un élt à la fin :(1)À faire : écrire les méthodes correspondantes

Structures séquentielles : les tableaux

12 de 87Problème de la taille maximum

0 ...taille1 ...capacite1utilisélibre

On essaye d"insérer un élément dans un tableau oùtaille = capacite

Il n"y a plus de place disponible.

0 ...taille1= capacite1u t i l i s é

Comportements possibles :Erreur (arrêt du programme, exception) Ré-allocation du tableau avec recopie, coût :(taille)

Structures séquentielles : les tableaux

12 de 87Problème de la taille maximum

0 ...taille1 ...capacite1utilisélibre

On essaye d"insérer un élément dans un tableau oùtaille = capacite

Il n"y a plus de place disponible.

0 ...taille1= capacite1u t i l i s é

Comportements possibles :Erreur (arrêt du programme, exception) Ré-allocation du tableau avec recopie, coût :(taille)

Structures séquentielles : les tableaux

13 de 87Ré-allocation

En C :realloc

void *realloc(void *ptr, size_t size);modifie la taille du bloc de mémoire pointé par ptr pour l"amener à une taille desizeoctets.realloc()conserve le contenu de la zone mémoire minimum entre la nouvelle et l"ancienne taille. [...] Si la zone pointée était déplacée, unfree(ptr)est effectué.En Java, copy systématique :

E[] newData = (E[]) new Object[...];

System.arraycopy(data, 0, newData, 0, size);

data = newData;

Structures séquentielles : les tableaux

14 de 87Ré-allocation : coût

Problème

Quel est le coût des réallocations?

On se place dans le scénario suivant :Au début, le tableau ne contient rien;

On ajoute, 1 par 1,néléments à la fin.

méthodeappenden Python et Java,push_backen C++

On veut calculer la complexité de l"ajoutExemple : enregistrement d"un signal audio venant d"un micros

44000 échantillons par seconde.

Structures séquentielles : les tableaux

14 de 87Ré-allocation : coût

Problème

Quel est le coût des réallocations?

On se place dans le scénario suivant :Au début, le tableau ne contient rien;

On ajoute, 1 par 1,néléments à la fin.

méthodeappenden Python et Java,push_backen C++

On veut calculer la complexité de l"ajoutExemple : enregistrement d"un signal audio venant d"un micros

44000 échantillons par seconde.

Structures séquentielles : les tableaux

15 de 87Rappels suites arithmétiques et géométriques

Suite arithmétique :un+1=un+r,un=u0+nr.

u

0+u1++un= (n+1)u0+un2

= (n+1)2u0+nr2

0+r+2r+:::nr= (n+1)nr2

Suite géométrique :un+1=qun,un=u0qn.

u

0+u1++un=u01qn+11qsiq6=1

1+q+q2++qn=1qn+11q

Structures séquentielles : les tableaux

16 de 87Ré-allocation par ajout d"une case

On ajoute, 1 par 1,néléments à la fin.ÉtapeAllocationsCopiesStockage#écritures

11T[0]1

22T[0]T[1]2

33T[0:::1]T[2]3

..nnT[0:::n2]T[n1]n

Bilan :

nX i=1i=n(n+1)2

écritures.

Structures séquentielles : les tableaux

16 de 87Ré-allocation par ajout d"une case

On ajoute, 1 par 1,néléments à la fin.ÉtapeAllocationsCopiesStockage#écritures

11T[0]1

22T[0]T[1]2

33T[0:::1]T[2]3

..nnT[0:::n2]T[n1]n

Bilan :

nX i=1i=n(n+1)2

écritures.

Structures séquentielles : les tableaux

17 de 87Ré-allocation par ajout d"une taille fixeb

Nombre d"étapes :k=dnb

e. Hypothèse simplificatrice :nest un multiple de la taillebdes blocs :n=kb. À chaque étape, on écritbvaleurs.ÉtapeAlloc.CopiesStockage#écritures

1b0:::b1b

22b0:::b1b:::2b12b

33b0:::2b12b:::3b13b

..kkb0:::(k1)b1(k1)b:::kb1kb

Bilan :

kX i=1bi=bkX i=1i=bk(k+1)2n22bécritures.

Structures séquentielles : les tableaux

17 de 87Ré-allocation par ajout d"une taille fixeb

Nombre d"étapes :k=dnb

e. Hypothèse simplificatrice :nest un multiple de la taillebdes blocs :n=kb. À chaque étape, on écritbvaleurs.ÉtapeAlloc.CopiesStockage#écritures

1b0:::b1b

22b0:::b1b:::2b12b

33b0:::2b12b:::3b13b

..kkb0:::(k1)b1(k1)b:::kb1kb

Bilan :

kX i=1bi=bkX i=1i=bk(k+1)2n22bécritures.

Structures séquentielles : les tableaux

18 de 87Ré-allocation par ajout d"une taille fixe : Bilan

Retenir

On suppose que l"on réalloueune case supplémentaireà chaque débordement. Coût (nombre de copies d"éléments) : n X i=1i=n(n+1)2 2(n2)

Si on alloue des blocs de tailleb, en notantk=dnb

ele nombre de blocs :kX i=1bin22b2(n2) La vitesse est divisée parbmais lacomplexité reste la même.

Structures séquentielles : les tableaux

18 de 87Ré-allocation par ajout d"une taille fixe : Bilan

Retenir

On suppose que l"on réalloueune case supplémentaireà chaque débordement. Coût (nombre de copies d"éléments) : n X i=1i=n(n+1)2

2(n2)Si on alloue des blocs de tailleb, en notantk=dnb

ele nombre de blocs :kX i=1bin22b2(n2) La vitesse est divisée parbmais lacomplexité reste la même.

Structures séquentielles : les tableaux

19 de 87Ré-allocation par doublement de taille

Bilan : Il faut allouer de plus en plus d"éléments.Question Que ce passe-t-il si l"on double la taille à chaque fois?

Structures séquentielles : les tableaux

20 de 87Ré-allocation par doublement de taille

Nombre d"étapes :k=dlog2ne. Hypothèse simplificatrice :nest une puissance de 2 :n=2k.ÉtapeAlloc.CopiesStockage#écritures 0101
12012

240:::12:::34

380:::34:::78

4160:::78:::1516

..k2 k0:::2k112 k1:::2k12 kBilan : kX i=02 k=12k+112=2k+112nécritures.

Structures séquentielles : les tableaux

20 de 87Ré-allocation par doublement de taille

Nombre d"étapes :k=dlog2ne. Hypothèse simplificatrice :nest une puissance de 2 :n=2k.ÉtapeAlloc.CopiesStockage#écritures 0101
12012

240:::12:::34

380:::34:::78

4160:::78:::1516

..k2 k0:::2k112 k1:::2k12 kBilan : kX i=02 k=12k+112=2k+112nécritures.

Structures séquentielles : les tableaux

21 de 87Ré-allocation par doublement de taille

Retenir (Solution au problème de la ré-allocation) À chaque débordement, on ré-allouedKcapaciteeoùK>1est une constante fixée (par exempleK=2).Début : tableau à 1 élément

À lam-ième ré-allocation, la taille du tableaux :KmPour un tableau ànéléments :mest le plus petit entier tel

queKmn, soitm=dlogK(n)eNombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K12(n+Km) = (n)

Finalement le coût est(n)(carkm1

Structures séquentielles : les tableaux

21 de 87Ré-allocation par doublement de taille

Retenir (Solution au problème de la ré-allocation) À chaque débordement, on ré-allouedKcapaciteeoùK>1est une constante fixée (par exempleK=2).Début : tableau à 1 élément

À lam-ième ré-allocation, la taille du tableaux :KmPour un tableau ànéléments :mest le plus petit entier tel

queKmn, soitm=dlogK(n)eNombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K12(n+Km) = (n)

Finalement le coût est(n)(carkm1

Structures séquentielles : les tableaux

21 de 87Ré-allocation par doublement de taille

Retenir (Solution au problème de la ré-allocation) À chaque débordement, on ré-allouedKcapaciteeoùK>1est une constante fixée (par exempleK=2).Début : tableau à 1 élément

À lam-ième ré-allocation, la taille du tableaux :KmPour un tableau ànéléments :mest le plus petit entier tel

queKmn, soitm=dlogK(n)eNombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K12(n+Km) = (n)

Finalement le coût est(n)(carkm1

Structures séquentielles : les tableaux

22 de 87Nombre moyen de copies

Selon la valeur deK, la constante de complexité varie de manière importante. Nombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K1n+nK1=nKK1

Quelques valeurs :

K1:01 1:1 1:2 1:5 2 3 4 5 10K

K1101 11 6 3 2 1:5 1:33 1:25 1:11

Interprétation :Si l"on augmente la taille de 10% à chaque étape, chaque nombre

sera recopié en moyenne 11 fois.Si l"on double la taille à chaque étape, chaque nombre sera en

moyenne recopié deux fois.

Structures séquentielles : les tableaux

22 de 87Nombre moyen de copies

Selon la valeur deK, la constante de complexité varie de manière importante. Nombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K1n+nK1=nKK1Quelques valeurs :

K1:01 1:1 1:2 1:5 2 3 4 5 10K

K1101 11 6 3 2 1:5 1:33 1:25 1:11Interprétation : Si l"on augmente la taille de 10% à chaque étape, chaque nombre

sera recopié en moyenne 11 fois.Si l"on double la taille à chaque étape, chaque nombre sera en

moyenne recopié deux fois.

Structures séquentielles : les tableaux

22 de 87Nombre moyen de copies

Selon la valeur deK, la constante de complexité varie de manière importante. Nombre de recopies d"éléments :

C=n+m1X

i=1K i=n+Km1K1n+nK1=nKK1Quelques valeurs :

K1:01 1:1 1:2 1:5 2 3 4 5 10K

K1101 11 6 3 2 1:5 1:33 1:25 1:11Interprétation : Si l"on augmente la taille de 10% à chaque étape, chaque nombre

sera recopié en moyenne 11 fois.Si l"on double la taille à chaque étape, chaque nombre sera en

moyenne recopié deux fois.

Structures séquentielles : les tableaux

23 de 87Bilan

Retenir (Nombre de copies)

Dans un tableau de taillen, coût de l"ajout d"un élément dans le pire des cas :

Coût en tempsn;Coût en espace(K1)n:

En, moyenne sur un grand nombre d"éléments ajoutés :

Coût en tempsKK1;Coût en espaceK:

On dit que l"algorithme travaille entemps constant amortis (Constant Amortized Time (CAT) en anglais).

Structures séquentielles : les tableaux

24 de 87Compromis Espace/Temps

QuandKaugmente, la vitesse augmente mais la place mémoire gaspillée ((K1)n) augmente aussi. Le choix de la valeur deK dépend donc du besoin de vitesse par rapport au coût de la mémoire.Retenir C"est une situation très classique : dans de nombreux problèmes, il

est possible d"aller plus vite en utilisant plus de mémoire.Exemple : on évite de faire plusieurs fois les même calculs en

stockant le résultat.

Structures séquentielles : les tableaux

24 de 87Compromis Espace/Temps

QuandKaugmente, la vitesse augmente mais la place mémoire gaspillée ((K1)n) augmente aussi. Le choix de la valeur deKquotesdbs_dbs11.pdfusesText_17

[PDF] structure de l'atome cours 3ème pdf

[PDF] structure électronique de l'atome cours pdf

[PDF] structure exercises in c

[PDF] structure in c notes pdf

[PDF] structure in c pdf

[PDF] structure in c ppt

[PDF] structure in class c++

[PDF] structure intestinale impliquée dans l'absorption des nutriments

[PDF] structure of aldehyde and ketone

[PDF] structure of book in c++

[PDF] structure of c program notes

[PDF] structure of c program pdf

[PDF] structure of c++ program pdf

[PDF] structure of nucleic acid

[PDF] structure of report writing pdf