INF601 : Algorithme et Structure de données



Documents pareils
Algorithmique, Structures de données et langage C

INF601 : Algorithme et Structure de données

ARBRES BINAIRES DE RECHERCHE

Arbres binaires de recherche

GUIDE Excel (version débutante) Version 2013

Algorithmique I. Algorithmique I p.1/??

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Les structures de données. Rajae El Ouazzani

Conventions d écriture et outils de mise au point

Cours d initiation à la programmation en C++ Johann Cuenin

Compression de Données - Algorithme de Huffman Document de Conception

Bases de données documentaires et distribuées Cours NFE04

Définitions. Numéro à préciser. (Durée : )

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Recherche dans un tableau

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Démonstration d utilisation De NesmaCom

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

EXCEL TUTORIEL 2012/2013

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Bases de programmation. Cours 5. Structurer les données

Structure fonctionnelle d un SGBD

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Architecture des Systèmes d Information Architecture des Systèmes d Information

SOMMAIRE. Travailler avec les requêtes... 3

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Génie Logiciel avec Ada. 4 février 2013

SYSTÈME DE GESTION DE FICHIERS

Parcours FOAD Formation EXCEL 2010

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Cours Bases de données 2ème année IUT

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

1 Recherche en table par balayage

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

PRÉSENTÉ PAR : NOVEMBRE 2007

Programmation système I Les entrées/sorties

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Introduction aux SGBDR

1. Introduction Création d'une requête...2

Architecture des ordinateurs

Travaux Dirigés n 1 : chaînes de caractères

Créer le schéma relationnel d une base de données ACCESS

Microsoft Excel 2000 Fonctions avancées

Excel Avancé. Plan. Outils de résolution. Interactivité dans les feuilles. Outils de simulation. La valeur cible Le solveur

Numbers sur ipad. Atelier Formation Numbers sur ipad. [Notes extraitres de l'aide en ligne]

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Traitement des données avec Microsoft EXCEL 2010

Débuter avec Excel. Excel

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Systemes d'exploitation des ordinateurs

Formation tableur niveau 1 (Excel 2013)

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Utiliser un tableau de données

Adama MBODJI MBODJ.SYSTEM

Alain DI MAGGIO Mise à jour sur le site 11/01/10

4. Les structures de données statiques

Les fichiers. Chapitre 4

Université Ibn Zohr Excel Résume de cours

Le langage C. Séance n 4

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

Représentation des Nombres

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Gestion mémoire et Représentation intermédiaire

Organiser le disque dur Dossiers Fichiers

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

LibreOffice Calc : introduction aux tableaux croisés dynamiques

COURS BARDON - EXCEL 2010

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Quelques Algorithmes simples

MEDIAplus elearning. version 6.6

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Les arbres binaires de recherche

Ouvrir le compte UQÀM

Assistant d e tablissement de Tableaux

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

UE C avancé cours 1: introduction et révisions

Le coût des politiques climatiques. Double dividende ou coûts excessifs?

Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Introduction à MATLAB R

Les bases de données. Se familiariser avec Base. Figure 1.1A Ouvre le fichier dont tu as besoin. Lance OpenOffice Base.

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Note de cours. Introduction à Excel 2007

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

La nouvelle planification de l échantillonnage

Localisation des fonctions

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Transcription:

Cours 2 : TDA Liste B. Jacob IC2/LIUM 15 février 2010

Plan 1 Définition du TDA Liste 2 Réalisation du TDA Liste 3 Type de stockage des éléments 4 Recherche d un élément Dans une liste non triée Dans une liste triée 5 Fin

Définition Plan 1 Définition du TDA Liste

Définition Les Primitives La définition du TDA Liste 1 définir un ensemble d opérations de base : les primitives 2 définir les opérations : fonctions que l on fait couramment sur les listes mais qui ne sont pas élémentaires qui peuvent être réalisées avec les primitives

Définition Définition des primitives On peut déterminer que pour "manipuler" une liste il faut : tester si elle est vide accéder aux éléments accéder à la fin de la liste accéder au début de la liste si on est sur une position, accéder à la position suivante insérer un élément à une position supprimer un élément à une position créer une liste vide détruire une liste

Définition Traduction en C Primitives dans lstprim.h utilise les "services" de ELEMENT donc #i n clude <e l t p r i m. h> b o o l L i s t e V i d e ( LISTE ) ; ELEMENT L i s t e A c c e d e r (POSITION, LISTE ) ; POSITION L i s t e S e n t i n e l l e ( LISTE ) ; POSITION L i s t e P r e m i e r ( LISTE ) ; POSITION L i s t e S u i v a n t ( POSITION, LISTE ) ; b o o l L i s t e I n s e r e r (ELEMENT, POSITION, LISTE ) ; b o o l L i s t e S u p p r i m e r ( POSITION, LISTE ) ; LISTE L i s t e C r e e r ( void ) ; void L i s t e D e t r u i r e ( LISTE ) ;

Définition Les Opérations On peut déterminer qu il y a aussi des opérations courantes telles que : afficher une liste accéder à l élément précédent rechercher la position (localiser) un élément supprimer les éléments identiques (purger) effacer les éléments d une liste (RAZ)

Définition Traduction en C Opérations dans lstop.h utilise les "services" des primitives donc #i n clude <l s t p r i m. h> void L i s t e A f f i c h e r ( LISTE L ) ; POSITION L i s t e P r e c e d e n t ( POSITION p, LISTE L ) ; POSITION L i s t e L o c a l i s e r (ELEMENT x, LISTE L ) ; LISTE L i s t e P u r g e r ( LISTE L, LISTE LL ) ; void L i s t e R a z ( LISTE L ) ;

Réalisation Plan 2 Réalisation du TDA Liste

Réalisation Organisation Naturelle 1 cellule / élément une liste = pointeur sur le 1 er élément fin = NULL L c b d a e position de l'élément "b"

Réalisation Organisation Avec entête/sentinelle 1 ere cellule vide (entête) 1 cellule / élément une liste = pointeur sur l entête fin = position de la Sentinelle L c b d a e Entête Sentinelle position de l'élément "b" position de la sentinelle Intérêt : insertion/suppression gestion d un seul pointeur

Réalisation Par liste chaînée Les types de chaînages Il existe types de réalisation avec chaînage : chaînage simple double chaînage chaînage circulaire... Traduction en C dans lstptr.h

Réalisation Par liste chaînée Chaînage simple L Accès : depuis L Début : O(1) Fin : O(n) Milieu : O(n) depuis un élément Suivant : O(1) Précédent : O(n)

Réalisation Par liste chaînée Double chaînage L Accès : depuis L Début : O(1) Fin : O(n) Milieu : O(n) depuis un élément Suivant : O(1) Précédent : O(1)

Réalisation Par liste chaînée Chaînage circulaire L Accès : depuis L Début : O(1) Fin : O(1) Milieu : O(n) depuis un élément Suivant : O(1) Précédent : O(n)

Réalisation Par liste chaînée Inconvénients des listes chaînées Si taille pointeur > taille d un élément plus de place pour organisation que pour les données efficacité Si taille liste nombre d allocations dynamiques Indirections vers des cellules dispersées rapidité d accès

Réalisation Par tableau Par cellule contiguës une liste = pointeur une structure qui contient un tableau alloué automatiquement (taille max réservée à la compilation) la position du dernier élément (taille réelle du tableau) Si N listes alors N structures Traduction en C dans lsttab.h

Réalisation Par tableau Par cellule contiguës L 0 1 2 3 4 5 elements % a b c d dernier 4 N

Réalisation Par tableau Par cellule contiguës Intérêt : Accès : recherche d un élément depuis L Début : O(1) Fin : O(1) Milieu : O(n) depuis une position d élément Suivant : O(1) Précédent : O(1) Inconvénient : la taille de la liste n est pas toujours adaptée à son utilisation si liste alors gaspillage mémoire si liste alors risque de débordement mémoire

Réalisation Par faux pointeurs Simulation des pointeurs en mémoire Simulation de la mémoire dans un tableau Tableau Mémoire allouée automatiquement une liste = @ du 1 er élément dans le tableau mémoire = un indice N listes dans le même tableau Mémoire Traduction en C dans lstfxptr.h

Réalisation Par faux pointeurs Par faux pointeurs L1 Simulation de la mémoire 1 element suivant L2 0 1 b % 3 6 5 2 3 4 c d 4-1 5 x N 6 a 0 N y -1

Réalisation Par faux pointeurs Par faux pointeurs Intérêt : pallie les inconvénients des "vrais" pointeurs Inconvénient : si tailles des listes et/ou si nombres des listes alors risque de débordement mémoire

Réalisation Correspondance Définition/Réalisation Traduction en C Dans lstprim.h #i n c l u de <l s t s d d. h> lstsdd.h structure de donnée choisie pour réaliser les primitives du TDA liste Contenu : / s i r é a l i s a t i o n par c e l l u l e s c h a i n e e s / #i n clude < l s t p t r. h> / s i r é a l i s a t i o n par c e l l u l e s c o n t i g u e s / #i n clude <l s t t a b. h> / s i r é a l i s a t i o n par f a u x p o i n t e u r s / #i n clude < l s t f x p t r. h>

Type de stockage des éléments Plan 3 Type de stockage des éléments

Type de stockage des éléments Vocabulaire La liste (du TDA LISTE) contient des élements (du TDA ELEMENT) On dit alors que le TDA LISTE est le Conteneur TDA ELEMENT est le Contenant

Type de stockage des éléments Stockage direct La valeur de l élément est copiée dans une cellule de la liste La copie de l élément à la liste a b c Cas d utilisation : quand taille élément quand il n y a qu une copie (élément / plusieurs listes)

Type de stockage des éléments Stockage indirect La valeur de l élément est pointée depuis une cellule de la liste l élément / à la liste A B C Cas d utilisation : quand taille élément quand élément plusieurs listes

Type de stockage des éléments Précautions Attention à la suppression de la liste : Si ListeDetruire détruit liste + éléments risque de pointeur fou si ListeDetruire détruit uniquement liste risque de fuite de mémoire

Type de stockage des éléments Stockage indirect/fuite mémoire A B C

Type de stockage des éléments Stockage indirect/fuite mémoire A B C ListeDetruire

Type de stockage des éléments Stockage indirect/fuite mémoire A B C

Type de stockage des éléments Stockage indirect/fuite mémoire A B C Fuite mémoire

Type de stockage des éléments Stockage indirect/pointeurs fous A B C

Type de stockage des éléments Stockage indirect/pointeurs fous A B C ListeDetruire

Type de stockage des éléments Stockage indirect/pointeurs fous

Type de stockage des éléments Stockage indirect/pointeurs fous Pointeurs fous

Type de stockage des éléments Règles Règle : un conteneur ne supprime QUE ce qui lui appartient stockage direct : ListeDetruire supprime liste + éléments stockage indirect : ListeDetruire supprime uniquement les cellules de la liste si besoin, faire ListeNettoyer qui supprime liste + éléments

Recherche Plan 4 Recherche d un élément Dans une liste non triée Dans une liste triée

Recherche Principe Cadre de l étude : rechercher un élément dans une liste sachant sa valeur optimiser la fonction ListeLocaliser comment organiser les éléments de la liste? On peut prouver que : si nombre d éléments recherche séquentielle dans liste non triée suffit si nombre d éléments envisager tri de la liste Vocabulaire : si on recherche un élément X recherche positive : X la liste recherche négative : X / la liste

Recherche Dans une liste non triée Plan 4 Recherche d un élément Dans une liste non triée Dans une liste triée

Recherche Dans une liste non triée Recherche séquentielle simple (Avec réalisation en tableau) L i s t e L o c a l i s e r ( LISTE L, ELEMENT X) { i n t i = 0 ; } while ( ( i < L >d e r n i e r ) && (L >e l e m e n t s [ i ]!= X) ) i ++; i f ( i == L >d e r n i e r ) return ( 1); return ( i ) ;

Recherche Dans une liste non triée Recherche séquentielle avec sentinelle On X ajoute à la position de la Sentinelle L i s t e L o c a l i s e r ( LISTE L, ELEMENT X) { i n t i = 0 ; i n t f i n = L >d e r n i e r +1 ; L >e l e m e n t s [ f i n ] = X ; } while ( L >e l e m e n t s [ i ]!= X ) i ++; i f ( i == f i n ) return ( 1); return ( i ) ;

Recherche Dans une liste non triée Recherche séquentielle Rappel : n nombre d éléments dans L accès à un élément dans une liste en o(n) en moyenne Analyse du nombre de comparaisons : Recherche négative : n + 1 comparaisons Recherche positive : si X est le k ieme élément de L alors il faut k comparaisons si k proche de 0, temps d accès rapide si k proche de n, temps d accès lent

Recherche Dans une liste non triée Recherche séquentielle Il faut donc que pour une majorité de recherches k soit proche de 0 X soit au début de L mettre les éléments les plus recherché en début de liste. Listes autoadaptatives

Recherche Dans une liste non triée Recherche auto-adaptative Principe : réorganiser la liste des éléments au fur et à mesure des recherches Méthodes : si X est le dernier élément recherché 1 Mettre X en tête de liste (coût si réalisation par liste chaînée) 2 Faire avancer X d une position ( tri bulle, coût si réalisation par tableau) 3 Commencer la recherche à partir de la position de X (utilisation de l entête) Nb comparaisons : dépend beaucoup de l utilisation mais toujours en O(n) en moyenne

Recherche Dans une liste triée Plan 4 Recherche d un élément Dans une liste non triée Dans une liste triée

Recherche Dans une liste triée Liste triée On suppose maintenant qu il y a une relation d ordre entre tous les éléments. Les éléments sont donc triés par ordre croissant ordre décroissant Présentation de 3 méthodes de recherche : séquentielle dichotomique par interpolation

Recherche Dans une liste triée Recherche séquentielle : algorithme avec la liste non triée = arrêt lorsque élément de la liste > X L i s t e L o c a l i s e r ( LISTE L, ELEMENT X) { i n t i = 0 ; } while ( ( i < L >d e r n i e r ) && (L >e l e m e n t s [ i ] <= X) ) i ++; i f (L >e l e m e n t s [ i ] == X ) return ( i ) ; return ( 1) ;

Recherche Dans une liste triée Recherche séquentielle : analyse Performances : nombre de comparaisons légèrement meilleur que celui de la liste non triée tiens peu compte du fait que les éléments soient triés complexité de la recherche encore en O(n) Meilleur rendement du tri : recherche par dichotomie recherche par extrapolation

Recherche Dans une liste triée Recherche par dichotomie : principe Principe de la recherche d un élément X dans une liste triée L : 1 Si L est vide arrêt échec, l élément / L 2 M L[milieu] 3 Comparer X à M si X = M arrêt succès on a trouvé l élément si X < M alors X / moitié droite de L on continue à chercher dans la moitié gauche de L recommencer en 1 si X > M alors X / moitié gauche de L on continue à chercher dans la moitié droite de L recommencer en 1 Se prête bien au traitement récursif

Recherche Dans une liste triée Recherche par dichotomie : algorithme L i s t e L o c a l i s e r ( LISTE L, ELEMENT X, i n t debut, i n t f i n ) { i n t m i l i e u ; i f ( f i n >= debut ) { m i l i e u = ( debut+f i n )/2 ; i f (X == L >e l e m e n t s [ m i l i e u ] ) return ( m i l i e u ) ; i f (X < L >e l e m e n t s [ m i l i e u ] ) return ( L i s t e L o c a l i s e r (L, X, debut, m i l i e u +1)); i f (X > L >e l e m e n t s [ m i l i e u ] ) return ( L i s t e L o c a l i s e r (L, X, m i l i e u 1, f i n ) ) ; } e l s e return ( 1) ; }

Recherche Dans une liste triée Recherche par dichotomie : analyse Exemple d une recherche sur une liste de 12 éléments Arbre de décision : < L[3] > < L[6] L[10] > L[1] L[4] L[8] L[11] < > < > < > > L[0] L[2] L[5] L[7] L[9] L[12] > < Recherche positive : si L[k] = X alors Profondeur(L[k]) + 1 Recherche négative : alors on arrive sur une feuille O Profondeur(Arbre)

Recherche Dans une liste triée Recherche par dichotomie : analyse Complexité : Optimalité : H = Hauteur de l arbre de décision nombre de comparaisons [1..H] Complexité = Calcul de la Hauteur = O(log 2 n) + 1 beaucoup mieux que la recherche séquentielle Optimale pour recherche négative optimale pour recherche positive en moyenne

Recherche Dans une liste triée Recherche par interpolation : principe En pratique, on tient compte de la valeur de l élément pour déterminer la liste de recherche. Exemple : pour rechercher le mot "Ananas" dans un dictionnaire, on ouvrira celui ci plutôt au début qu au milieu C est le principe de base de la recherche par interpolation La méthode est la même mais le calcul des limites de la liste est plus compliqué

Recherche Dans une liste triée Recherche par interpolation : algorithme Soient : d = début de la liste f = fin de la liste s = séparation de la liste Dans recherche dichotomique : séparation de la liste systématiquement au milieu X s (d + f )/2 Dans la recherche par interpolation : séparation en fonction de la valeur de X s d + ((f d)(x L[f ] L[d])) (par exemple)

Recherche Dans une liste triée Recherche par interpolation : analyse On montre (difficilement) que la complexité = O(log 2 (log 2 (n)) Exemple : pour une liste de 10 9..2 30 éléments recherche dichotomique O(log 2 (2 19 ) 30 comparaisons recherche par interpolation : 5 comparaisons à peine Quand interpolation? lorsque les éléments sont numériques (valeur) lorsqu il en a un grand nombre lorsque les valeurs des éléments augmentent de façon à peu près constante

Fin The End That all folks...