CSI2510 Structures des Données et Algorithmes

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 243B Programmation informatique appliquée Listes chaînées I – Tableaux de structures §15.1 – 15.2.
Structures de données avancées : Principales structures de fichiers
Chap. 4 Recherche en Table
Cours Algorithmique et Analyse : Structures linéaires
Cours n° 6 Standard Template Library I.
Au programme du jour …. Un peu plus de structures de données
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
GEF 243B Programmation informatique appliquée Listes chaînées II §15.1 – 15.2.
GEF 243B Programmation informatique appliquée Décisions de design avec structures de données §15.1 – 15.2.
Cours n° 8 Conception et Programmation à Objets
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Approfondissement du langage
Algorithme et structure de données
Chap. 1 Structures séquentielles : listes linéaires
Algorithmique et Structures de données
Utilisation des tableaux
Structures collectives en Java
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les algorithmes: complexité et notation asymptotique
Bibliothèque standard du C++
POO-L3 H. Fauconnier1 Tableau et héritage Y[] yA=new Y[3]; X[] xA=yA; //ok xA[0]=new Y(); xA[1]=new X(); //non xA[1]=new Z(); //non Object XX[]int[] YZY[]Z[]
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
II. Chaînage, SDD séquentielles
Publispostage Menu Outils / Lettres et publipostage
IFT-2000: Structures de Données Listes chaînées Dominic Genest, 2009.
Chapitre VII Généricité. POO-L3 H. Fauconnier2 Chapitre VII 1. Principes généraux 2. Types génériques imbriqués 3. Méthodes génériques 4. Types paramètres.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Standard Template Library (STL)
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Les fichiers indexés (Les B-arbres)
IFT-2000: Structures de données
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Présentation Structures de Données et TDA
Les listes chaînées par Frédérick Henri.
Cours du 22 novembre généricité. Chapitre VII Généricité.
Les Algorithmes de Tri Introduction Tri par Sélection
IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Retour sur les listes ordonnées Département dinformatique et de génie logiciel Édition Septembre 2009.
Le langage C Structures de données
ALGORITHME DE TRI Le tri par insertion.
LES PILES ET FILES.
Méthodes de tri.
Structures de données élémentaires dans le contexte du TP #1
Cours 4 - Trois algorithmes de recherche dans un tableau
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
II. Chaînage, SDD séquentielles
ETNA – 1ème année Guillaume Belmas –
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Structures de données avancées : Variantes des B arbres
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données avancées : Principales structures de fichiers
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
1 Listes des méthodes de la classe string, et exemples.
 Chaînage et LSC : motivation et principe Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Chaînage et LSC : motivation et principe  Manipuler la LSC : exemples Variantes : LDC, liste circulaire, … Etude de cas : réalisation d’un buffer clavier.
Types abstraits de données (TAD)
CSI25101 Les structures de données de base (structures de données « concrètes ») trailer header Tableaux Listes chaînées l.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Un visiteur… …venu d’ailleurs Whooooooooooooooo!!!
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Les structures de base Listes chainées. Listes Les listes(similaire aux tableaux) sont des structures informatiques qui permettent de garder en mémoire.
Transcription de la présentation:

CSI2510 Structures des Données et Algorithmes CSI2510 - Paola Flocchini

Structures de données? Comment organiser les données pour optimiser l’efficacité des opérations qu’il faut effectuer sur les données CSI2510 CSI2510 - Paola Flocchini

Structures de données? Exemple: Contient des données différents: l‘annuaire de téléphone électronique Pierre 622-9823 Contient des données différents: - Des noms Des numéro de téléphone Des adresses Michele 75 Bronson Sylvie 110 Bank Paola 112-4433 OPERATIONS: - ajouter - effacer chercher un numéro de téléphone chercher une adresse CSI2510 CSI2510 - Paola Flocchini

Structures de données? Exemple: Lisa 223-4433 Pierre 543-1234 Michael Michele John 110 Bank 622-9823 112-4433 75 Bronson Paola Lisa 223-4433 Pierre 543-1234 Michael 123-4567 Anne 321-6745 Lisa 223-4433 Pierre 543-1234 Michael 123-4567 Anne 321-6745 Lisa 223-4433 Pierre 543-1234 Michael 123-4567 Anne 321-6745 CSI2510 CSI2510 - Paola Flocchini

Structures de données? Exemple: Anne 321-6745 Lisa 223-4433 Pierre Michele John 110 Bank 622-9823 112-4433 75 Bronson Paola Anne 321-6745 Lisa 223-4433 Pierre 543-1234 Michael 123-4567 CSI2510 CSI2510 - Paola Flocchini

Structures de données? Penser aux opérations que vous avez besoin d’exécuter. Choisir la meilleure structure pour vos données. Nous allons étudier les différentes structures de données. Comment savoir si une structure de données est bonne ? CSI2510 CSI2510 - Paola Flocchini

Les objectifs du cours Présenter, de façon systématique, les structures de données le plus utilisées, en soulignant leurs propriétés abstraites. Discuter des algorithmes typiques qui traitent chaque type de structure, et analyser leur performance. Comparer les différentes structures de données pour résoudre des problèmes similaires, et choisir la meilleure CSI2510 CSI2510 - Paola Flocchini

Rappel Tableaux Structures chaînées CSI2510 1 2 3 4 5 6 7 1 2 3 4 5 6 7 NULL CSI2510 CSI2510 - Paola Flocchini

Opérations typiques sur les objets Insérer un objet Supprimer un objet Chercher un objet CSI2510 CSI2510 - Paola Flocchini

Tableau A: structure statique accès direct aux cellules 1 2 3 4 5 6 7 A: Ensemble de longueur fixe, composé de cellules indexées contenant des variables du même type. structure statique accès direct aux cellules Insertion ? Suppression ? CSI2510 CSI2510 - Paola Flocchini

Tableau a c d m o f Un exemple d’insertion dans un tableau trié 1 2 3 1 2 3 4 5 6 7 f Un exemple d’insertion dans un tableau trié CSI2510 CSI2510 - Paola Flocchini

Tableau a c d m o a c d m o a c d m o a c d f m o f Déplacer ‘m’ et ‘o’ pour faire de la place pour ‘f’ f a c d m o 1 2 3 4 5 6 7 a c d m o 1 2 3 4 5 6 7 a c d m o 1 2 3 4 5 6 7 a c d f m o 1 2 3 4 5 6 7 CSI2510 CSI2510 - Paola Flocchini

Tableau a c d f m o p z 1) Pour des insertions et des suppressions, 1 2 3 4 5 6 7 1) Pour des insertions et des suppressions, les éléments doivent être déplacés. 2) et si le tableau est plein? CSI2510 CSI2510 - Paola Flocchini

Structures chaînées Structure dynamique Accès séquentiel aux éléments NULL Structure dynamique Accès séquentiel aux éléments Ajout et suppression sans déplacer les éléments CSI2510 CSI2510 - Paola Flocchini

Liste simplement chaînée NULL Nœud v Suivant (next) Objet élément Nœud suivant v élément CSI2510 CSI2510 - Paola Flocchini

Liste simplement chaînée L’implémentation en Java sera traitée durant les séances de laboratoire Une liste chaînée possède normalement ces méthodes: setElement(Object e) setNext(Object newNext) getElement() getNext() La liste chaînée (SlinkedList) est définie par le nœud tête (head) et par sa taille (size) CSI2510 CSI2510 - Paola Flocchini

Liste simplement chaînée - Insertion Configuration originale: head NULL v But: insérer l’élément v dans la liste. CSI2510 CSI2510 - Paola Flocchini

Insertion au début d’une liste simplement chaînée head head  v size  size+1 NULL v.setNext(head) v (facile) … Nous utilisons pseudocode … head  v == la variable head aura la valeur de la variable v CSI2510 - Paola Flocchini CSI2510 - Paola Flocchini

Liste simplement chaînée : Insertion après r w r head NULL v w  getNext(r ) v.setNext(w) r.setNext(v) size size+1 Facile CSI2510 CSI2510 - Paola Flocchini

r h v Liste simplement chaînée : Insertion avant r NULL v Maintenir un pointeur à l’élément précédant (parcourir le liste) ou Échanger les contenus pointés par r et v et insérer v après r. (plus difficile) CSI2510 CSI2510 - Paola Flocchini

Liste simplement chaînée - Recherche head NULL tmp Traverser la liste Node tmp; tmp  firstnode; while (tmp != null ) { if (tmp .element = élément qu’on recherche) return tmp ; } else {………..} CSI2510 CSI2510 - Paola Flocchini 21

Liste simplement chaînée - Recherche head NULL tmp Node tmp; tmp  firstnode; while (tmp != null ) { if (tmp.element = élément qu’on recherche) return tmp ; } else { tmp tmp.getNext() } Traverser la liste CSI2510 CSI2510 - Paola Flocchini 22

Liste simplement chaînée - Suppression head NULL Premier élément (facile) Élément après r (facile) Élément à r (difficile) head  head.getNext() … w  r.getNext() r.setNext(w.getNext()) ….. Utiliser un pointeur à l’élément précédant, ou Échanger les contenus de l’élément à r avec les contenus de l’élément suivant, et effacer l’élément après r. **Très difficile si r indique dernier élément! CSI2510 CSI2510 - Paola Flocchini

Liste doublement chaînée trailer header Suivant(next) Précédent (prev) Chaque nœud (Dnode) contient: Un élément (element) Un lien vers le nœud précédent (prev) Un lien vers le nœud suivant (next) Noeud(DNode) CSI2510 CSI2510 - Paola Flocchini

Liste doublement chaînée trailer header Méthodes de la classe Dnode: void setElement(Object e) void setPrev(DNode newPrev) void setNext(DNode newNext) Object getElement() DNode getPrev() DNode getNext() La liste doublement chaînée (DList) est définie par les deux nœuds spéciaux tête (header) et queue (trailer) et par sa taille (size) CSI2510 CSI2510 - Paola Flocchini

Liste doublement chaînée –Suppression (début) Supprimer v u v.getPrev() u w v.getNext() w v u.setNext(w) trailer header w.setPrev(u) v.setPrev(null) v.setNext(null) size size-1 CSI2510 CSI2510 - Paola Flocchini

Liste doublement chaînée –Suppression (milieu) w Supprimer v u v trailer header u v.getPrev() w v.getNext() w.setPrev(u) u.setNext(w) v.setPrev(null) v.setNext(null) size size-1 CSI2510 CSI2510 - Paola Flocchini 27

Liste doublement chaînée - Insertion (début) w Insérer v header trailer v w header.getNext() v.setNext(w) v.setPrev(header) w.setPrev(v) header.setNext(v) Size  size+1 CSI2510 CSI2510 - Paola Flocchini 28

Liste doublement chaînée - Insertion (après p) w header Insérer v après p trailer v w p.getNext() v.setNext(w) v.setPrev(p) w.setPrev(v) p.setNext(v) size  size+1 CSI2510 CSI2510 - Paola Flocchini 29

Liste doublement chaînée - Insertion (avant p) Insérer v avant p header trailer v p header trailer v CSI2510 CSI2510 - Paola Flocchini 30

Conclusion: Structures chaînées vs Tableaux trailer header 1 2 3 4 5 6 7 Structure Chaînée Tableau Structure dynamique (jamais pleine) Structure figée Pas besoin de déplacer les éléments lors des insertions - suppressions Insertions suppressions des éléments plus laborieuses Pas d’accès direct à un élément donné de la structure (parcours de la structure obligatoire) Accès direct à une cellule donnée CSI2510 - Paola Flocchini CSI2510 - Paola Flocchini 31