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

Dimension: px
Commencer à balayer dès la page:

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

Transcription

1 Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : SUPPORT DE COURS Matière : Algorithmiques et Structures de Données 1 Niveau : 2 ème Année Licence en Informatique

2 ALGORITHMIQUES ET STRUCTURES DE DONNEES 1 Programme : 1- Rappel sur les structures de données simples : tableaux, listes chaînées. 2- Structures de données séquentielles : piles, files, listes. 3- Structures de données en table : hachage. 4- Structures de données hiérarchiques : arbres. 5- Arbres binaires de recherche. 6- Arbres AVL. 7- Arbres bicolores. 8- B-arbres. 9- Les notations asymptotiques et la complexité d un algorithme. 10- Preuve d exactitude d un algorithme 11- L algorithme de tri par arbre (heapsort). Ouvrages : 1- «Arbres, tables, algorithmes», Jacques Guyot, édition Chihab. 2- «Introduction à l algorithmique», Thomas Corman, édition Dunod. 3- «Introduction to Algorithms», Cormen, Mc Graw Hill edition. 4- «Apprendre à programmer en Turbo C», Claude Delannoy, édition Chihab. -1-

3 Rappels sur les Tableaux et les Listes Chaînées Dans la plupart des ordinateurs, la mémoire principale est formée d une suite de cellules de même taille, repérable à l aide d une adresse. Pour représenter les structures de données en mémoire principale, on a essentiellement deux modes de stockage : le stockage par tableau (stockage contigu), et le stockage par pointeur ou liste chaînée (stockage dispersé). I- Les Tableaux : L élément représentatif des structures statiques homogènes est le tableau que l on trouve dans la majorité des langages évolués de programmation. L allocation de l espace mémoire d un tableau est souvent statique. I-1 Les Tableaux Monodimensionnels : Le tableau monodimensionnel est la représentation informatique d un vecteur de l espace. Il est constitué d un ensemble d élément accessible à l aide d un indice. Cet accès direct est garanti en cas de lecture ou écriture. #include <stdio.h> #include <conio.h> /* Variables Globales*/ int A[100] ; int I, NombreMax ; void main() { /* Effacer l écran*/ clrscr(); /* Lecture de la taille du tableau*/ printf( Donner la taille du tableau : ); scanf( %d,&nombremax); /* Lecture des éléments du tableau*/ printf( Donner les éléments du tableau : \n ); for(i = 0 ; I <= NombreMax-1 ; I++) scanf( %d,&a[i]); -2-

4 /* Affichage des éléments du tableau*/ printf( Voici le contenu du tableau : \n ); for(i = 0 ; I <= NombreMax-1 ; I++) printf( %d\n, A[I]); } /* Pause avant quitter*/ getchar(); getchar(); I-2 Les Tableaux Multidimensionnels : Un élément de tableau multidimensionnel est repéré à l aide de plusieurs indices au lieu d un seul. Néanmoins, la représentation physique dans la mémoire principale est presque la même. Mémoire Mémoire A[1] A[1][1] A[2] A[3] A[1][2] A[2][1] A[4] A[2][2] Représentation physique d un tableau monodimensionnel Représentation physique d un tableau multidimensionnel Alors quelque soit la dimension d un tableau multidimensionnel, sa représentation physique est toujours linéaire

5 Elément Adresse + (I-1) * TailleElement +(I-1) * TaillePremiereDimension +(J-1) * TailleElement II- Les Listes Chaînées : Lorsque le besoin de conserver la mémoire s élève, il sera nécessaire d implémenter les structures de données en utilisant les pointeurs ou les listes chaînées, où les données sont organisées séquentiellement. Le principe de base de leur représentation est de suivre les évolutions de la structure, en lui attribuant de la place en mémoire quand elle grandit, et en la récupérant quand elle diminue. Ceci est réalisé par un principe d allocation et libération dynamique d espace mémoire. Le TAS (HEAP) est la plage d espace mémoire réservée juste pour l allocation dynamique. Mémoire Espace réservé pour les variables, tableaux, environnement des procédures, (statiques) TAS Espace réservé pour les listes chaînées, environnement des procédures, (dynamique) Dans les langages modernes, on dispose de deux procédures standard d acquisition et de libération d espace mémoire : RESERVE et LIBERE. La procédure RESERVE La procédure LIBERE Langage Pascal new() dispose() Langage C malloc() free() -4-

6 II-1 Les Listes Simplement Chaînées (Unidirectionnelles) : Une liste simplement chaînée est composée d'éléments distincts liés par un simple pointeur. Chaque élément d'une liste simplement chaînée est formé de deux parties: - Un champ (ou plusieurs champs) contenant la donnée (ou l information). - Un pointeur vers l'élément suivant de la liste. - L ensemble {champ, pointeur} est appelé le maillon. La liste est caractérisée par sa tête (l adresse du premier maillon). Aussi, le dernier maillon a la valeur NULL (Nil en Pascal) pour son pointeur. La queue (l adresse du dernier élément) est très utile pour accélérer l opération d insertion. Champ Pointeur Tête Maillon Queue NULL #include <stdio.h> #include <conio.h> /* Definition de Type*/ typedef struct S_Element { int info ; struct S_Element* suivant ; } Type_Element ; /* Variables Globales*/ Type_Element* tete ; Type_Element* element ; void main() { /* Effacer l écran*/ clrscr(); /* Créer la liste {1, 2, 3}*/ /* 1 */ tete = malloc (sizeof (Type_Element)) ; tete -> info = 1 ; /* 2 */ element = tete ; element -> suivant = malloc (sizeof (Type_Element)) ; element = element -> suivant ; element -> info = 2 ; /* 3 */ -5-

7 element -> suivant = malloc (sizeof (Type_Element)) ; element = element -> suivant ; element -> info = 3 ; element -> suivant = NULL; /* Affichage des éléments de la liste*/ printf( Voici le contenu de la liste : \n ); element = tete; while (element!= NULL) { printf( %d\n, element -> info); element = element -> suivant; } } /* Pause avant quitter*/ getchar(); getchar(); II-2 Les Listes Doublement Chaînées (Bidirectionnelles) : Les listes doublement chaînées sont constituées d'éléments comportant trois champs: - Un champ contenant la donnée. - Un pointeur vers l'élément suivant de la liste. - Un pointeur vers l'élément précédent de la liste. Les listes doublement chaînées peuvent donc être parcourues dans les deux sens. La liste est caractérisée par sa tête, aussi que par sa queue. Champ Tête Précèdent Suivant II-3 Les Listes Circulaires : Une liste circulaire peut être simplement ou doublement chaînée. Sa particularité est de ne pas comporter de queue (NULL ne figure pas). Le dernier élément de la liste pointe vers le premier. Un élément possède donc toujours un suivant. Champ Pointeur Tête -6-

8 Les Piles, les Files, et les Listes I. Les Piles : Les piles sont des structures de données, où l'ajout et le retrait d'un élément se fait toujours au sommet (en tête de liste). Le plus souvent, les piles sont implantées sous forme de liste chaînée. Néanmoins, une pile peut être implémentée à partir d'un tableau. Une pile suit la règle LIFO (Last In, First Out): dernier entré, premier sorti. Sommet Sommet Sommet Sommet Sommet Pile Vide Empiler(5) Empiler(7) Empiler(12) Dépiler() Empiler(3) Terminologie particulière: - l'extrémité où s'effectue l'ajout et le retrait s'appelle sommet. - ajouter un élément à une pile se dit empiler (ou push). - le fait de retirer un élément d'une pile et de récupérer son information s'appelle dépiler (ou pop). Exemple d Utilisation des Piles: Un programme A appelle une procédure B, qui appelle lui-même une procédure C qui appelle une fonction D. La pile du programme va évoluer comme suit: 1. lancement de A pile vide. 2. appel de B par A l'état de A est empilé. 3. appel de C par B l'état de B est empilé sur A. 4. appel de D par C l'état de C est empilé sur B. 5. Fin de D dépilage de l'état de C à poursuite de C. 6. Fin de C dépilage de l'état de B à poursuite de B. La Mémoire Etat de C Etat de B Etat de A -7-

9 7. Fin de B dépilage de l'état de A à poursuite de A. procédure. L état d une procédure représente l espace mémoire utilisé par cette Représentation par une liste chaînée : Sommet Tête 4 ème élément 3 ème élément 2 ème élément 1 er élément Les Primitives (Fonctions/Procédures de base) : - Empiler() - Dépiler() - Vider() ou DépilerTout() - Vide() - Taille() II. Les Files : Une file ou queue est une structure de données où l'insertion d'un élément se fait à une extrémité appelée queue et le retrait d'un élément se fait à une autre extrémité appelée tête. Une file est le plus souvent représentée par une liste chaînée. Une file suit la règle FIFO (First In, First Out): premier entré, premier sorti. Application : Les files servent à traiter des données dans l'ordre où elles arrivent, comme dans une file d'attente à un guichet où le premier arrivé est le premier servi. -8-

10 Représentation par une liste chaînée : Une file doit être accessible à la fois par la tête pour retirer un élément et par la queue pour ajouter un nouvel élément. La tête et la queue d'une file correspondent à la tête et la queue de la liste chaînée qui l'implémente. Tête 1 er élément 2 ème élément 3 ème élément 4 ème élément Queue Les Primitives : - Enfiler() - Défiler() - Vider() ou DéfilerTout() - Vide() - Taille() II. Les Listes : Une liste est un ensemble d élément de même type. Les listes sont implémentées par des tableaux ou des listes chaînées, selon les besoins d implémentation. Les polynômes correspondent à une liste de données ; chaque élément est constitué de l ensemble d un coefficient et un degré. Exemple : Soit le polynôme P(x) = X 5 + 3X 2 + X + 7. Voici l implémentation de la liste polynomiale par une liste chaînée : Tête

11 III. Les Listes Non-Linéaires: Une liste non linéaire est une structure de donnée dynamique que l on l utilise beaucoup en informatique, surtout dans le domaine de l intelligence artificielle. Le langage LISP souvent utilise une base de donnée organisée sous forme des listes non linéaires. Spécification Fonctionnelle : - ( ) représente la liste vide. - A représente l atome (ou l élément) A - (A) représente la liste à un élément A. - (A B) représente la liste de deux éléments A et B - (A (B (C) D) (E)) est une liste composée de trois éléments : - l atome A - la liste à trois éléments (B (C) D) - et la liste à un élément (E) Remarque : 1- La liste non linéaire peut être composée d autres listes ou/et des atomes. 2- Si la liste est composée des atomes seulement, alors c est une liste linéaire. Représentation Physique : 1- Liste Vide : () Courant Suivant Tête 2- La Liste (A) Tête A Atome Liste -10-

12 3- La Liste (A B) Tête A B 4- La Liste (A (B)) Tête A B 5- La Liste (A (B C)) Tête A B C 6- La Liste (A (B C) D) Tête A D B C Dans les exemples précédents, on observe que le pointeur Suivant pointe toujours sur une liste. Par contre, le pointeur Courant pointe sur des listes et des atomes. Afin d enlever cette ambiguïté, un champ booléen est ajouté pour distinguer entre l atome et la liste : -11-

13 Tête V A F V V V D B C La structure en C : Typedef Struct S_Liste { Struct S_Liste* Suivant ; Struct S_Liste* Courant_Liste ; Char Courant_Atome ; Int Type_Courant ; /* 1 : Vrai, 0 : Faux*/ } Liste ; -12-

14 Structures de données en table : Hachage Les opérations fondamentales sur une base de données sont : l insertion, la recherche, et la suppression. On cherche souvent à trouver des structures de données et des méthodes d accès plus efficaces afin d améliorer le temps requis par ces opérations. Soit un tableau des noms triés en ordre alphabétique comme suit : Ali Bachir Celia Dalila Emad Farid George Hassan La recherche dichotomique binaire est faite sur plusieurs étapes, sauf si le nom cherché est au milieu. Généralement, si le tableau des données est de taille n, alors le pire des cas correspond à lg 2 (n) étapes de recherche pour accéder aux éléments situés aux extrémités. Solution : Créer une fonction h qui remplace directement chaque mot correspondant : h( Ali ) = 0 ; h( Bachir ) = 1 ; La fonction h est appelée une fonction de hachage (ou de dispersion). par son indice Définition : Une fonction de hachage h est une fonction d un ensemble de clés C dans un ensemble (d indices) {0, 1,, m-1}. Une bonne fonction de hachage doit être calculable très rapidement et doit distribuer uniformément les clés sur les indices de hachage. Exemple1 : h(mot) = Ord(premier caractère de MOT) Ord( A ) ; où Ord est la fonction de conversion d un caractère à son code ASCII. Exemple 2 : Si on désire de stocker les entiers 1, 3, 4, 6, 8, 11, on peut choisir la méthode de la division suivante : h(k) = k mod m, où mod est l opération du reste de division entière, et m = 6. Dans ce cas tous les éléments sont rangés dans un tableau de 6 éléments : h(6) = 0, h(1) = 1, h(8) = 2, h(3) = 3, h(4) = 4, h(11) = Avantages : - Accès directe (rapide). Inconvénients : - Impossible de stocker deux clés si elles ont la même valeur hachée ; h( Ali ) = h( Ahmed ) ; h(5) = h(11). On appelle cette situation une collision. La collision peut -13-

15 facilement être évitée si la fonction de hachage est bijective. Mais cette méthode conduit à une énorme perte de l espace mémoire si le nombre de clés à stocker est très inférieur au domaine des clés. Exemple : Stocker les entiers 2, 4, 10, 18, et 20 dans un tableau en utilisant la fonction de hachage bijective h(x) = (x/2) Pour remédier à ce problème, deux solutions ont été proposées : l adressage fermé, et l adressage ouvert. 1- L Adressage Fermé (avec Chaînage): Au lieu de sauvegarder les clés directement dans les cellules du tableau, en associe une liste chaînée pour chaque cellule, chacune contenant la classe des clés de même valeur hachée. Exemple : Insérer successivement les clés 10, 22, 31, 4, 15, 28, 17, 88, et 59 dans une table de hachage de taille m = 11 gérée en adresse fermé, en utilisant la fonction uniforme de hachage : h(k) = k mod m

16 Avantages : - Un nombre limité de données (têtes des listes) est sauvegardés dans la partie statique de la mémoire ; le reste est sauvegardé dans le tas. - Collision éliminée. Inconvénients : - Les clés ne sont pas distribuées uniformément. On peut donc avoir une grande accumulation de données dans des zones limitées!!! - L accès à un élément dans une liste chaînée est coûteux. 2- L Adressage Ouvert : 2-1 L Adressage Ouvert Simple: Dans ce mode d adressage, tous les éléments sont conservés dans la table de hachage. Chaque entrée de la table contient soit NULL, soit un élément. En supprimant les listes chaînées, on libère de la mémoire, ce qui permet d augmenter la taille de la table et limiter les collisions. Lorsqu on définie la fonction de hachage h, chaque clé k est associé à une permutation H(k) = {h(k, 0), h(k, 1),, h(k, m-1)} de {0, 1,, m-1}. Cette permutation est la suite des indices des cellules testées lors d une recherche. Alors, on examine (sonde) successivement les cellules de la table jusqu à en trouver une vide. Remarque : En adressage ouvert, la table peut se remplir complètement, dans ce cas, il ne sera plus possible d y insérer des éléments. Exemple : Même exemple précédent avec la fonction de hachage h(k, i) = (k + i) mod m h(22, 0) = h(88, 0) = 0, h(88, 1) = h(4, 0) = h(15, 0) = 4, h(15, 1) = h(28, 0) = h(17, 0) = 6, h(17, 1) = h(59, 0) = 4, h(59, 1) = 5, h(59, 2) = 6, h(59, 3) = 7, h(59, 4) = h(31, 0) = h(10, 0) =

17 2-2 L Adressage Ouvert Double : On observe que dans le mode d adressage simple, la suite des essais (permutation) est toujours séquentielle selon l indice de la table. En fait, les valeurs h(k, i), h(k, i+1), h(k, i+2), consiste à une suite numérique non-aléatoire. Ce qui fait que la recherche dans une table de hachage est loin d être uniforme. En mode d adressage double, on ajoute une deuxième fonction d hachage afin d améliorer la distribution des permutations H(k). Exemple : Même exemple précédent avec la fonction de hachage h(k, i) =(k + ih 2 (k)) mod m, tel que h 2 (k) = k mod (m-1) h(22, 0) = 0 7- h(17, 0) = 6, h(17, 1) = 2 5- h(15, 0) = 4, h(15, 1) = 9, h(15, 2) = 3 4- h(4, 0) = 4 6- h(28, 0) = 6 9- h(59, 0) = 4, h(59, 1) = 2, h(59, 2) = 0, h(59, 3) = 9, h(59, 4) = h(88, 0) = 0, h(88, 1) = h(31, 0) = h(10, 0) = 10 - Avantages : Accès aléatoire aux cellules. - Inconvénients : Pas de garantie d insertion, même s il y a une case vide (exemple : on peut pas insérer la valeur 20 dans la table précédente). 2-3 L Adressage Ouvert Quadratique : L adressage double ne nous garantie aucune seuil maximale à propos du nombre d essais qu il faut balayer pour la recherche d une clé. Pour cela, l adressage quadratique a été proposé comme suit : h(k, i) = (k + i 2 ) mod m Dans ce mode, si m est un nombre premier, la suite d essais successifs balaie au plus la moitié du tableau. Ou bien, on à au moins un nombre d essais égale à la moitié des cellules existantes. Preuve : Supposons que les essais i et j (i < j et i,j {1, m-1}) correspondent à la même cellule du tableau. Nous avons alors h(k, i) = h(k, j). Donc on a h(k, j) - h(k, i) = 0. Ce qui fait que (k + j 2 ) - (k + i 2 ) = 0 mod m -16-

18 Alors j 2 - i 2 = 0 mod m, et donc (j+i)(j-i) = 0 mod m Comme m est un nombre premier, alors soit (j+i) = 0 mod m ou bien (j-i) = 0 mod m Si (j-i) = 0 mod m, alors j {i, i+m, i+2m, }. Contradiction puisque j i et j {1, m-1}. Il reste que (j+i) = 0 mod m, alors les seuls couples (i, j) possibles sont : - Si m est pair, alors m = 2n : (i, j) {(1, m-1), (2, m-2),, (n-1, n+1)} - Si m est impair, alors m = 2n+1 : (i, j) {(1, m-1), (2, m-2),, (n, n+1)} Dans les deux cas précédents, le nombre de possibilités est inférieur ou égale à n, ou m/2. Ca veut dire que, dans le pire des cas, après le n ème essai on tombe sûrement sur une cellule déjà visitée. Exemple : Même exemple précédent avec la fonction de hachage quadratique h(k, i) = (k + i 2 ) mod m h(22, 0) = h(88, 0) = 0, h(88, 1) = h(4, 0) = h(15, 0) = 4, h(15, 1) = h(28, 0) = h(17, 0) = 6, h(17, 1) = h(59, 0) = 4, h(59, 1) = 5, h(59, 2) = h(31, 0) = h(10, 0) =

19 Les Arbres L arbre est une structure de données fondamentale en informatique. Elle est utilisée pour représenter des données en hiérarchie. Le but d étudier les arbres est de savoir comment peut on améliorer la représentation et l accès aux différentes données. Les arbres sont utilisés dans des différents domaines, comme la compilation, les graphes, et l intelligence artificielle. Exemple 1 : Représentation Administratives des daïras et wilayas : Algérie Adrar Chlef. Alger. Rélizane Timimoun Reggane Aoulef. Exemple 2 : Représentation d une expression arithmétique : A (B + C * (D E)) * F A * + F B * C D E -18-

20 Exemple 3 : Arbre de décision d un tri de trois éléments a, b, et c : a>b a b a>c a c b>c b c c>b c b a>c a c (a, c, b) (a, b, c) (c, a, b) (b, a, c) (b, c, a) (c, b, a) 1. Définition : Un arbre binaire est composé d une racine (ou nœud) et de deux sous-arbres binaires (gauche et droit). Un arbre binaire peut aussi être vide. 2. Primitives : La structure arbre binaire doit assurer les primitives suivantes : - Insérer() - Supprimer() - Rechercher() - Taille() - Vide() 3. Représentation Physique : Un arbre binaire est facilement représenté par une liste chaînée. Néanmoins, la représentation tabulaire est souvent utilisée pour les arbres de tri. Exemple 4 : Tête

21 4. Parcours d un Arbre : On appelle parcours d un arbre binaire, toute méthode permettant l accès une seule fois aux nœuds de cette arbre. 4.1 Le Parcours en Pré-ordre (Prefix en anglais) : Dans ce mode, on inspecte d abord la racine, puis le sous-arbre gauche, et enfin le sous-arbre droit (RGD). Ce type de parcours est caractérisé par le balayage en profondeur : vertical de haut en bas. Exemple : (L arbre de l exemple 4) RGD : (5 (1) (4 (7) ())) (8 () (10 (12) ())) 4.2 Le Parcours en Post-ordre (Postfix en anglais) : Dans ce mode, on inspecte d abord le sous-arbre gauche, puis le sous-arbre droit, et enfin la racine (GDR). Ce type de parcours est caractérisé par le balayage en profondeur : vertical de bas en haut. Exemple : (L arbre de l exemple 4) GDR : ((1) ((7) () 4) 5) (() ((12) () 10) 8) Le Parcours en Ordre (Infix en anglais) : Dans ce mode, on inspecte d abord le sous-arbre gauche, puis la racine, et enfin le sous-arbre droit (GRD). Ce type de parcours est caractérisé par le balayage en largeur (horizontal). Exemple : (L arbre de l exemple 4) GRD : ((1) 5 ((7) 4 ())) 2 (() 8 ((12) 10 ())) -20-

22 Les Arbres Binaires de Recherche Un arbre binaire de recherche est un arbre ordonné horizontalement (de gauche à droite) ; i.e., la clé de tout nœud non feuille est supérieur à toutes celles de son sous-arbre gauche, et inférieure à toutes celles de son sous-arbre droit. Exemple : Parcours Pre-Ordre : 13 (9 (5 () (7)) (11 (10) (12))) (45 () (50 (48) (52))) Parcours Post-Ordre : ((() (7) 5) ((10) (12) 11) 9) (() ((48) (52) 50) 45) 13 Parcours en-ordre : ((() 5 (7)) 9 ((10) 11 (12))) 13 (() 45 ((48) 50 (52))) 1- Recherche d un élément : Puisque l arbre binaire de recherche est ordonné horizontalement, une simple recherche dichotomique est déclanché pour trouver une clé quelconque : 1- Tester si la clé de la racine de l arbre égale à la clé recherchée. 2- Sinon, chercher récursivement dans le sous-arbre gauche si la clé est inférieure à la racine, sinon dans le sous-arbre droit. Exemple : Chercher la clé 12 : Chercher la clé 51 : > > 9 51 > > > = 12 (clé trouvée) (clé non trouvée) 2- Insertion d un élément : Le principe de l insertion d un élément inexistant dans un arbre binaire de recherche (ABR) est basé sur la recherche de cet élément. Il est évident qu on va aboutir à une feuille (élément inexistant). Alors le nouvel élément est accroché à la dernière feuille ; i.e., à gauche si inférieur, à droite si supérieur. -21-

23 Exemple : Insertion de 3 et Suppression d un élément : L opération de suppression d un élément est effectuée selon 3 cas : - Si l élément est une feuille alors on le supprime simplement. - Si l élément a un seul descendant alors on le remplace par ce descendant. - Si l élément a deux descendants (ou bien deux sous-arbres), on le remplace, au choix, soit par l élément le plus à droite (le plus grand) de son sous-arbre gauche, soit par l élément le plus à gauche (le plus petit) de son sous-arbre droit. Exemple : Suppression de 16 et

24 4- Modification d un élément : Il n y pas de règle spécifique pour la modification. Une simple implémentation consiste à supprimer puis insérer la nouvelle valeur de l élément. 5- Stockage optimal d un arbre binaire de recherche: Pour améliorer l accès aux éléments de l arbre, on les stocke dans un tableau comme suit : si un élément est stocké à l indice i, alors ses fils gauche et droit sont respectivement en position 2*i et 2*i+1. Si un fils n existe pas, sa place est perdue (restera vide) (7 (4 (2) (6)) (9 (8) (10))) (18 () (24)) Dans le cas où l arbre binaire est complet, ce stockage est compact et optimal. Notons qu avec cette représentation, un simple parcours séquentiel du tableau correspond à un parcours de l arbre par niveau, appelé aussi parcours en largeur. -23-

25 Les Arbres AVL Lorsque plusieurs opérations d insertion et de suppression sont effectuées sur un arbre binaire de recherche, l arbre binaire risque de se dégénérer ; i.e., l arbre peut se déséquilibrer et se transformer à une liste linéaire : après la suppression de 4, 5, 7 et 11 : Ceci enlève tout intérêt de la structure arborescence car on est ramené à une recherche séquentielle!!! La solution de ce problème serait de réorganiser l arbre après chaque modification (insertion ou suppression) 1- Critère d équilibre parfait : Un arbre binaire est parfaitement équilibré si pour tout nœud, la différence entre le nombre de noeuds du sous-arbre gauche SAG et ce du sous-arbre droit SAD égale à 0 ou 1 (maximum 1). Le problème c est que ce critère est très coûteux à réaliser. 2- Arbres partiellement équilibrés : Un arbre partiellement équilibré est un arbre caractérisé par l équilibre de la hauteur des sous-arbres gauche et droit. -24-

26 Pour cela, on ajoute l information BALANCE pour chaque nœud, où sa valeur est inclue dans {-1, 0, 1}. typedef struct S_Noeud { int info ; struct S_Noeud* gauche ; struct S_Noeud* droit ; int balance; /* -1, 0, ou 1*/ } Noeud; Le facteur d équilibre BALANCE a le sens suivant : - Si BALANCE = -1, alors la hauteur du SAG est supérieure à celle du SAD. - Si BALANCE = 0, alors la hauteur du SAG égale à celle du SAD. - Si BALANCE = 1, alors la hauteur du SAG est inférieure à celle du SAD. 3- Les Arbres AVL : Ils sont des arbres BR à critère d équilibre, proposés par G.M. Andelson-Velski et E.M. Landis en Dans un arbre AVL, pour tous les nœuds, la différence entre les hauteurs des sous-arbres gauche et droit égale à 1 au maximum. 4- Insertion dans un arbre AVL : Dans tout ce qui suit, on va étudier la modification du SAG seulement. Lorsqu un nœud est inséré dans un arbre AVL, 4 cas majeurs se produisent : 1 er cas : Le SAG n a pas grandi. Dans ce cas, l équilibre est inchangé. Aucune action de rééquilibrage n est exigée. -25-

27 2 ème cas : Le SAG a grandi alors que le SAD était maximal (balance = 1). Dans ce cas, l équilibre est amélioré (balance = 0). Aucune action de rééquilibrage n est exigée. SAG SAD SAG SAD 3 ème cas : Le SAG a grandi alors que le SAG et le SAD avaient la même hauteur (balance = 0). Dans ce cas, le SAG atteint la hauteur maximale (balance = -1). Aucune action de rééquilibrage n est exigée. SAG SAD SAG SAD 4 ème cas : Le SAG a grandi alors qu il était déjà maximal (balance = -1). SAG SAD SAG SAD Dans ce cas, le critère d équilibre AVL n est plus respecté. Alors, il faut réorganiser l arbre selon ces deux cas : Cas gauche-gauche : c est le cas où le sous-arbre gauche du SAG a grandi : A B C A B C Dans ce cas, une simple rotation à droite des nœuds 1 et 2 est effectuée. La racine du SAG devient la racine de l arbre en question. -26-

28 Cas gauche-droite : c est le cas où le sous-arbre droit du SAG a grandi : A 2 B1 B2 C A B1 B2 C Dans ce cas, cet arbre est divisé lui même en sous-arbre gauche et droit, et sa racine devient la racine de l arbre en question. Remarque : Cette méthode est valable quelque soit la BALANCE entre B1 et B2 (-1, 0, ou 1). 4- Retrait dans un arbre AVL : Lorsqu un nœud est supprimé d un arbre AVL, 4 cas majeurs se produisent : 1 er cas : Le SAG n a pas diminué à cause du retrait (balance n a pas changé). Dans ce cas, l équilibre est inchangé. Aucune action de rééquilibrage n est exigée. 2 ème cas : Le SAG a diminué alors qu il était maximal (balance = -1). Dans ce cas, l équilibre est amélioré (balance = 0). Aucune action de rééquilibrage n est exigée. SAG SAD SAG SAD 3 ème cas : Le SAG a diminué alors qu il avait la même hauteur que le SAD (balance = 0). Dans ce cas, le SAG atteint la hauteur minimale (balance = 1). Aucune action de rééquilibrage n est exigée. SAG SAD SAG SAD -27-

29 4 ème cas : Le SAG a diminué alors qu il était minimal (balance = 1). SAG SAD SAG SAD Dans ce cas, le critère d équilibre AVL n est plus respecté. Alors, il faut réorganiser l arbre selon ces deux cas : Cas droite-droite : c est le cas où le sous-arbre doit du SAD à une hauteur supérieur ou égale à celle de son sous-arbre gauche: A B C A B C Dans ce cas, une simple rotation à gauche des nœuds 1 et 2 est effectuée. La racine du SAD devient la racine de l arbre en question. Cas droite-gauche : c est le cas où le sous-arbre gauche du SAD à une hauteur supérieur à celle de son sous-arbre gauche: A B1 B2 C A B1 B2 C Dans ce cas, cet arbre est divisé lui même en sous-arbre gauche et droit, et sa racine devient la racine de l arbre en question. Remarque : Cette méthode est valable quelque soit la BALANCE entre B1 et B2 (-1, 0, ou 1). -28-

30 Les Arbres B et BB Définition 1: Un arbre B est un arbre N-aire (d ordre N) qui satisfait les conditions suivantes : 1- Critère d ordre : Ordonné horizontalement. 2- Critère d équilibre : Chaque noeud est constitué de N jusqu à 2N éléments, et que toutes les feuilles ont la même profondeur. 3- Seule la racine peut avoir moins de N élément. Exemple : Un arbre B d ordre Représentation physique : Un arbre B d ordre N peut être facilement représenté par une liste chaînée nonlinéaire : typedef struct S_NoeudB { struct S_Noeud* fils[2*n + 1] ; int info[2*n]; } NoeudB; Donc, fils[i] pointe sur la racine du sous-arbre dont ses éléments sont inclues entre info[i-1] et info[i]. Exemple d utilisation des arbres B : Si la mémoire est paginée (partagée en pages), il est utile de charger du disque juste les informations qu on a besoin momentanément. Dans ce cas, l arbre B nous aide à charger les pages dont les informations qu ils portent sont dans un intervalle désigné par une feuille (entre 13 et 18 pour le 2 ème noeud). Remarque : On cas d insertion ou de retrait, une réorganisation de l arbre B est nécessaire si une des trois conditions est non respectée. -29-

31 Définition 2: Un arbre BB (proposé par R. Bayer) est un arbre B d ordre 1. Alors, chaque nœud possède 1 ou 2 éléments. Implémentation : Un arbre BB peut être implémenté en deux manières : Représentation Père-Fils Représentation Père-Fils-Frère La représentation père-fils est plus proche de l implémentation physique. Par contre, la représentation père-fils-frère nous aide à réorganiser (logiquement) l arbre en cas d insertion ou de suppression. Remarque : - Un nœud peut avoir au plus soit deux fils soit un fils et un frère. - En cas de manque d un fils ou d un frère, un nœud est considéré d avoir une feuille de profondeur zéro. Représentation physique : Un arbre BB peut être facilement représenté par une liste chaînée non-linéaire : typedef struct S_NoeudBB { int info; struct S_Noeud* gauche; struct S_Noeud* droit; int TypeDroit; /*0 : Fils, 1: Frère*/ } NoeudBB; dans un arbre BB : Lorsqu un nouvel élément est inséré dans un arbre BB en lui déséquilibrant le niveau de ses feuilles, 2 cas se produisent pour chaque type d insertion (à gauche (SAG) ou à droite (SAD)): A- Insertion au SAD 1 er Cas : La racine a le SAD comme fils : -30-

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Série d exercices N 9 Arbres

Série d exercices N 9 Arbres Série d exercices N 9 Arbres Exercice 1 a) Ecrire une fonction ARBIN creerarbreentiers() qui permet de créer et de renvoyer l arbre d entiers suivant : b) Ecrire une fonction int feuilles(arbin a) qui

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Structures de données, IMA S6

Structures de données, IMA S6 Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech

Plus en détail

Exercice 1 : Questions diverses (5 points)

Exercice 1 : Questions diverses (5 points) Université Claude Bernard Lyon 1 Licence Sciences, Technologies, Santé L2 Année 2010-2011, 2ème semestre LIF5 Algorithmique & Programmation procédurale Contrôle final du 20 juin 2011 Durée : 1h30 Note

Plus en détail

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc

pedigree d'un cheval Zoe ; son père est Tonnerre et sa mère Belle ; mère de Belle est Rose et père de Belle est Eclair jean jean marc paul luc Chap. 3 Les arbres binaires Un arbre est un ensemble de nœuds, organisés de façon hiérarchique, à partir d'un nœud distingué, appelé racine. La structure d'arbre est l'une des plus importantes et des plus

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.

TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td. Exercice 1 TD 1 de Langage C module Outils pour l'informatique Industrielle - Corrigés des Tds : http://www-lagis.univ-lille1.fr/~macaire/td.htm Exercices de base de Programmation Arbre Programmatique

Plus en détail

Chapitre 3 Structures de données linéaires : listes, piles et files

Chapitre 3 Structures de données linéaires : listes, piles et files Chapitre 3 Structures de données linéaires : listes, piles et files 1. Introduction Le but de ce chapitre est de décrire des représentations des structures de données de base telles les listes en général

Plus en détail

Les arbres Florent Hivert

Les arbres Florent Hivert 1 de 1 Algorithmique Les arbres Florent Hivert Mél : Florent.Hivert@lri.fr Page personnelle : http://www.lri.fr/ hivert 2 de 1 Algorithmes et structures de données La plupart des bons algorithmes fonctionnent

Plus en détail

Structures de données et algorithmes

Structures de données et algorithmes Structures de données et algorithmes Chapitre 4 Les arbres Nous introduisons dans ce chapitre le TDA : arbres binaires Ce TDA est intéressant pour plusieurs raisons : Les arbres de recherche binaire permettent

Plus en détail

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files

Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012. Les Files . Ecole Nationale Polytechnique Département Génie Industriel Année Universitaire 2011/2012 Algorithmique et Programmation Les structures de données Les Files Introduction Une File ressemble fortement à

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Algorithmique IN102 TD 3

Algorithmique IN102 TD 3 Algorithmique IN10 TD 16 décembre 005 Exercice 1 Clairement, il existe des arbres de hauteur h à h + 1 éléments : il sut pour cela que leurs n uds internes aient au plus un ls non vide. On a alors un arbre

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Cours d Algorithmique et Complexité

Cours d Algorithmique et Complexité Cours d Algorithmique et Complexité Structures de données (2e suite) Catalin Dima Arbres binaires de recherche Propriété de base des arbres binaires de recherche Soit x un noeud de l arbre. Alors : 1.

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 1 Arbres binaires de recherche 1 Les arbre sont très utilisés en informatique, d une part parce que les informations sont souvent hiérarchisées, et peuvent être représentées naturellement sous

Plus en détail

Structures de données linéaires

Structures de données linéaires Structures de données linéaires I. Liste, Pile et file. Une liste linéaire est la forme la plus simple et la plus courante d'organisation des données. On l'utilise pour stocker des données qui doivent

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

Algorithmique P2. HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont

Algorithmique P2. HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont Algorithmique P2 HeapSort et files de priorité Ulg, 2009-2010 Renaud Dumont Structure de tas - arbre Un tas est une structure de données qui Permet un nouveau type de tri (Tri par tas) Permet l'implémentation

Plus en détail

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

ARBRES BINAIRES DE RECHERCHE

ARBRES BINAIRES DE RECHERCHE ARBRES BINAIRES DE RECHERCHE Table de symboles Recherche : opération fondamentale données : éléments avec clés Type abstrait d une table de symboles (symbol table) ou dictionnaire Objets : ensembles d

Plus en détail

Corrigé des exercices

Corrigé des exercices hapitre 1 option informatique orrigé des eercices Arbres binaires Eercice 1 La première solution qui vient à l esprit est sans doute celle-ci : let rec profondeur p = function Nil > [] a when p = 0 > [a]

Plus en détail

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel)

Plan. Cours 4 : Méthodes d accès aux données. Architecture système. Objectifs des SGBD (rappel) UPMC - UFR 99 Licence d informatique 205/206 Module 3I009 Cours 4 : Méthodes d accès aux données Plan Fonctions et structure des SGBD Structures physiques Stockage des données Organisation de fichiers

Plus en détail

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire.

C ellules. Gestion et récupération automatique de mémoire. Principes des lang. de progr. INE 11. Allocation dynamique de mémoire. Principes des lang. de progr. INE 11 Michel Mauny ENSTA ParisTech Prénom.Nom@ensta.fr Michel Mauny (ENSTA ParisTech) INE 11 Prénom.Nom@ensta.fr 1 / 37 Gestion et récupération automatique de mémoire lanage

Plus en détail

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN CHAPITRE 6 Arbres binaires Lycée Kléber MPSI, Option Info 2014/2015 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3 Recherche Complexité Insertion

Plus en détail

Option Informatique Arbres binaires équilibrés

Option Informatique Arbres binaires équilibrés Option Informatique Arbres binaires équilibrés Sujet novembre 2 Partie II : Algorithmique et programmation en CaML Cette partie doit être traitée par les étudiants qui ont utilisé le langage CaML dans

Plus en détail

4.2 Les arbres binaires de recherche

4.2 Les arbres binaires de recherche 4.2 Les arbres binaires de recherche 4.2.1 Définition Les arbres binaires de recherche sont utilisés pour accélérer la recherche dans les arbres m-aires. Un arbre binaire de recherche est un arbre binaire

Plus en détail

ALGORITHMIQUE. Notes du cours FS/1/6584 Année préparatoire au master 60 en informatique ULB UMH Gilles GEERAERTS (Université Libre de Bruxelles)

ALGORITHMIQUE. Notes du cours FS/1/6584 Année préparatoire au master 60 en informatique ULB UMH Gilles GEERAERTS (Université Libre de Bruxelles) ALGORITHMIQUE A L G O R I T H M I Q U E Notes du cours FS/1/6584 Année préparatoire au master 60 en informatique ULB UMH Gilles GEERAERTS (Université Libre de Bruxelles) ANNÉE ACADÉMIQUE 2008 2009 (2 E

Plus en détail

Travaux dirigés n o 6

Travaux dirigés n o 6 Travaux dirigés n o 6 Lycée Kléber MPSI, Option Info 2014/2015 Exercice 1 (Indexation d un arbre binaire) Ecrire une fonction Caml indexation : ( f, n) arbre_binaire -> (string,string) arbre_binaire qui

Plus en détail

Séance de TD 05 TD05. 1 Exercice 1. 1.1 Question 1 : dessins des ABR avec hauteurs différentes AG51

Séance de TD 05 TD05. 1 Exercice 1. 1.1 Question 1 : dessins des ABR avec hauteurs différentes AG51 Séance de TD 05 1 Exercice 1 1. Dessinez les arbres binaires de recherche de hauteur 2,3,4,5 et 6 pour le même ensemble de clés S = 1,4,5,10,16,17,21. 2. Donnez l algorithme de l opération ArbreRechercher(x,k)

Plus en détail

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas

Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas Arbres ordonnés, binaires, tassés, FAP, tri par FAP, tas, tri par tas 1. Arbres ordonnés 1.1. Arbres ordonnés (Arbres O) On considère des arbres dont les nœuds sont étiquetés sur un ensemble muni d'un

Plus en détail

Les arbres binaires de recherche

Les arbres binaires de recherche Institut Galilée Année 2010-2011 Algorithmique et arbres L2 TD 6 Les arbres binaires de recherche Type en C des arbres binaires (également utilisé pour les ABR) : typedef struct noeud_s { struct noeud_s

Plus en détail

Types et Structures de Données LI213

Types et Structures de Données LI213 Types et Structures de Données LI213 Interrogation du 3 mars 2013 Aucun document n est autorisé. 1 Listes, piles et files Pour l exercice suivant, on a besoin de définir une liste chaînée de personnes.

Plus en détail

LES ARBRES BINAIRES DE RECHERCHE

LES ARBRES BINAIRES DE RECHERCHE 1 INTRODUCTION À L ALGORITHMIQUE - LES ARBRES BINAIRES DE RECHERCHE Chargée de cours: Transparents:http://www-npa.lip6.fr/~blin/Enseignements.html Email: lelia.blin@lip6.fr Arbres binaires de Recherche

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

Plus en détail

Initiation aux algorithmes des arbres binaires

Initiation aux algorithmes des arbres binaires Initiation aux algorithmes des arbres binaires Plan I. Les arbres biniaires I. Définition II. Représentation graphique d un arbre III. Terminologie IV. Représentation en mémoire des arbres binaires V.

Plus en détail

Etude de la suppression de clés dans les arbres lexicographiques équilibrés

Etude de la suppression de clés dans les arbres lexicographiques équilibrés Université de Tours UFR Sciences & Techniques Av. Monge, Parc de Grandmont 37200 TOURS, FRANCE Tél. (33)2-47-36-70-20 www.univ-tours.fr http://depinfo.univ-tours.fr Département d Informatique Projet d

Plus en détail

Cours 01 - Les structures de données

Cours 01 - Les structures de données Cours 01 - Les structures de données MPSI - Prytanée National Militaire Pascal Delahaye 1 er mars 2015 Les programmes informatiques, traitent des données, créent des données et renvoient des données. Pour

Plus en détail

Arbres bien équilibrés

Arbres bien équilibrés Arbres bien équilibrés ENSIIE : Programmation avancée 1/24 Recherche par dichotomie on aimerait avoir des opérations de recherche, d insertion et de suppression efficaces en moyenne et dans le pire des

Plus en détail

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1

Plan. Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java. Amphi 9 1 Plan Arbres équilibrés Arbres AVL Arbres a-b Quelques compléments de Java Amphi 9 1 Structures d'arbre Les structures d'arbre permettent de réaliser des opérations dynamiques, telles que recherche, prédécesseur,

Plus en détail

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII ALGORITHMIQUE II NOTION DE COMPLEXITE 1 2 Comment choisir entre différents algorithmes pour résoudre un même problème? Plusieurs critères de choix : Exactitude Simplicité Efficacité (but de ce chapitre)

Plus en détail

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique

Algorithmique - Techniques fondamentales de programmation Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr)

Partie 3. Gilles Lebrun (gilles.lebrun@unicaen.fr) Partie 3 Gilles Lebrun (gilles.lebrun@unicaen.fr) Les arbres binaires Définition : C est une structure arborescente ou hiérarchique ou récursive Chaque élément (nœud) constituant la structure de l arbre

Plus en détail

Marches, permutations et arbres binaires aléatoires

Marches, permutations et arbres binaires aléatoires Marches, permutations et arbres binaires aléatoires Épreuve pratique d algorithmique et de programmation Concours commun des Écoles Normales Supérieures Durée de l épreuve: 4 heures Cœfficient: 4 Juillet

Plus en détail

Licence STIC, Semestre 1 Algorithmique & Programmation 1

Licence STIC, Semestre 1 Algorithmique & Programmation 1 Licence STIC, Semestre 1 Algorithmique & Programmation 1 Exercices Alexandre Tessier 1 Introduction 2 instruction de sortie 3 expressions 4 variable informatique 5 séquence d instructions, trace Exercice

Plus en détail

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche

Université Paris Diderot Paris 7. TD n 2. Arbres Binaire de Recherche Université Paris Diderot Paris L Informatique Algorithmique Année 00-0, er semestre TD n Arbres Binaire de Recherche Le type de donné arbre" sera utilisé pour indiquer l ensemble de toutes les Arbres Binaires

Plus en détail

Programmation récursive

Programmation récursive Année 2004-2005 F. Lévy IUT De Villetaneuse Dép t informatique Cours d'algorithmique 2 éme Année Cours 8 Programmation récursive 1. Qu'est-ce que la programmation récursive Définition : la programmation

Plus en détail

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

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII

ALGORITHMIQUE II. Récurrence et Récursivité. SMI AlgoII ALGORITHMIQUE II Récurrence et Récursivité Récurrence Suite récurrente: la déition d une suite est la donnée d un terme général déi en fonction du (ou des) terme(s) précédant(s) D un terme initial qui

Plus en détail

alg - Arbres binaires de recherche [br] Algorithmique

alg - Arbres binaires de recherche [br] Algorithmique alg - Arbres binaires de recherche [br] Algorithmique Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 25 avril 2015 Table des matières 1 Définition, Parcours, Représentation

Plus en détail

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide

3 Structures de données Tableaux Listes. Problème du tri. Tri rapide Cours 2 Algorithmique IN102-02 Michel Mauny ENSTA Prénom.Nom@ensta.fr 1 Tris Retour sur fusion et quicksort Complexité minimale Efficacité 2 Récursivité 3 Structures de données Tableaux Listes Michel Mauny

Plus en détail

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

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004 Questionnaire d'examen final INF1101 Sigle du cours Nom : Signature : Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004 Professeur(s)

Plus en détail

Notion de complexité

Notion de complexité 1 de 27 Algorithmique Notion de complexité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www-igm.univ-mlv.fr/ hivert Outils mathématiques 2 de 27 Outils mathématiques : analyse

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données 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

Plus en détail

Arbres Binaire. PSI DAKHLA Prof Youssef El marzak. 1 Prof Youssef Elmarzak

Arbres Binaire. PSI DAKHLA Prof Youssef El marzak. 1 Prof Youssef Elmarzak Arbres Binaire PSI DAKHLA Prof Youssef El marzak 1 Prof Youssef Elmarzak 1.introduction: Les arbre sont très utilisées en informatique, d une part parce que les informations sont souvent hiérarchisées,

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Arbres binaires de recherche (ABR) Binary Search Trees (BST)

Arbres binaires de recherche (ABR) Binary Search Trees (BST) LSVIII-BIM Algorithmie, 2015 Arbres binaires de recherche (ABR) Binary Search Trees (BST) I. Arbres binaires 1. Structure 2. Parcours II. Arbres binaires de recherche 1. Définition 2. Opérations sur les

Plus en détail

Arbres binaires de recherche et arbres rouge noir

Arbres binaires de recherche et arbres rouge noir Institut Galilée lgo, rbres, Graphes I nnée 006-007 License rbres binaires de recherche et arbres rouge noir Rappels de cours et correction du TD rbres binaires de recherche : définitions Un arbre binaire

Plus en détail

Arbres binaires. Chapitre 1. 1. Introduction. option informatique. 1.1 Définition formelle d un arbre binaire

Arbres binaires. Chapitre 1. 1. Introduction. option informatique. 1.1 Définition formelle d un arbre binaire Chapitre option informatique Arbres binaires. Introduction Dans son acceptation la plus générale, un arbre est un graphe acyclique orienté enraciné : tous les sommets, à l exception de la racine, ont un

Plus en détail

Chap. VII : arbres binaires

Chap. VII : arbres binaires Chap. VII : arbres binaires 1. Introduction Arbre : collection d objets avec une structure hiérarchique Structure intrinsèque descendants d une personne (elle incluse) A ascendant connus d une personne

Plus en détail

Algorithmique, Structures de données et langage C

Algorithmique, Structures de données et langage C UNIVERSITE PAUL SABATIER TOULOUSE III Algorithmique, Structures de données et langage C L3 IUP AISEM/ICM Janvier 2005 J.M. ENJALBERT Chapitre 1 Rappels et compléments de C 1.1 Structures Une structure

Plus en détail

RECURSIVITE ARBRES BINAIRES

RECURSIVITE ARBRES BINAIRES RECURSIVITE ARBRES BINAIRES Insertion, Parcours pré, post et in ordre, Recherche, Suppression. Ch. PAUL Algorithmique Arbres binaires 1 ARBRE BINAIRE DEFINITION RECURSIVE Les arbres binaires sont des arbres

Plus en détail

9. Implantations des arbres binaires par un tableau: les monceaux (les tas) - heap en anglais.

9. Implantations des arbres binaires par un tableau: les monceaux (les tas) - heap en anglais. 9. Implantations des arbres binaires par un tableau: les monceaux (les tas) - heap en anglais. Définition : Un monceau (tas) est un arbre binaire complet dans lequel il existe un ordre entre un nœud et

Plus en détail

Mathématiques pour l informatique 1 notes de cours sur la seconde partie

Mathématiques pour l informatique 1 notes de cours sur la seconde partie Mathématiques pour l informatique notes de cours sur la seconde partie L Université Paris-Est, Marne-la-Vallée Cyril Nicaud Organisation Ce demi-cours est composé de 6 séances de cours et 6 séances de

Plus en détail

Introduction à l Algorithmique

Introduction à l Algorithmique Introduction à l Algorithmique N. Jacon 1 Définition et exemples Un algorithme est une procédure de calcul qui prend en entier une valeur ou un ensemble de valeurs et qui donne en sortie une valeur ou

Plus en détail

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes

Introduction Tableaux / Vecteurs Listes chaînées Un principe général Quelques algorithmes de tri À faire pour lundi prochain. Tableaux VS Listes Tableaux VS Listes Tableaux VS Listes Petit chapitre. Plan Introduction Tableaux / Vecteurs Définition abstraite Qu a-t-on fait avec des vecteurs? Que peut-on faire avec des vecteurs? Listes chaînées Définition

Plus en détail

Exercice sur les arbres binaires de recherche

Exercice sur les arbres binaires de recherche Exercice sur les arbres binaires de recherche Voici une liste aléatoire de 1 éléments. Notez que vous pouvez faire cet exercice en prenant une autre liste aléatoire ; évidemment, il y a peu de chances

Plus en détail

Licence 2 SPI parcours Info semestre 4 : ALGO et SD de base Fiche de TD 1 d exercices

Licence 2 SPI parcours Info semestre 4 : ALGO et SD de base Fiche de TD 1 d exercices Licence 2 SPI parcours Info semestre 4 : ALGO et SD de base Fiche de TD 1 d exercices Exercice : Somme de polynômes creux Dans chacune des trois représentations statiques suivantes, il est demandé d écrire

Plus en détail

INF3105 Arbres binaires de recherche

INF3105 Arbres binaires de recherche INF3105 Arbres binaires de recherche Éric Beaudry Université du Québec à Montréal (UQAM) Été 2015 Éric Beaudry (UQAM) INF3105 Arbres binaires de recherche Été 2015 1 / 37 Sommaire 1 Introduction 2 Arbre

Plus en détail

Arbres binaires de recherche optimaux et quasi-optimaux

Arbres binaires de recherche optimaux et quasi-optimaux Université Libre de Bruxelles Faculté des Sciences Département d Informatique Arbres binaires de recherche optimaux et quasi-optimaux Mémoire présenté par Gabriel Kalyon en vue de l obtention du grade

Plus en détail

Tri en Python. # on cherche k tel que a k = min(a j ) ji

Tri en Python. # on cherche k tel que a k = min(a j ) ji Tri en Python On considère ici des tableaux ou listes d entiers ou de ottants. En Python, on peut trier une liste à l aide de la méthode sort : si a est une liste d entiers ou de ottants, a.sort() modi

Plus en détail

Cours 1: Introduction à l algorithmique

Cours 1: Introduction à l algorithmique 1 Cours 1: Introduction à l algorithmique Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 2 Aujourd hui Calcul de x n Maximum Complexité d un problème Problème

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 6 Arbres binaires de recherche 6.1 Introduction On a étudié le problème de la recherche dans une collection d éléments ordonnés entre eux : on a montré que Pour une liste contiguë, la recherche

Plus en détail

IX- Quelques exercices d examen

IX- Quelques exercices d examen 1 IX- Quelques exercices d examen I- Elagage On dispose d un tableau a[n] dont chaque case contient un nombre. Certains de ces nombres sont des 0. Sans utiliser d autre tableau (mais en désespoir de cause

Plus en détail

Année Universitaire 2013/2014 DST de Printemps

Année Universitaire 2013/2014 DST de Printemps Année Universitaire 2013/2014 DST de Printemps Parcours : Licence LIMI201 & LIMI211 Code UE : J1MI2013 Épreuve : Algorithmes et Programmes Date : Lundi 16 juin 2014 Heure : 16 heures 30 Durée : 2 heures

Plus en détail

Algorithmique avancée

Algorithmique avancée Algorithmique avancée IUP 2 Frédéric Vivien 24 avril 2002 Table des matières 1 Introduction 9 1.1 Qu est-ce que l algorithmique?.. 9 1.2 Motivation : calcul de x n. 9 1.2.1 Problème. 9 1.2.2 Algorithme

Plus en détail

INF601 : Algorithme et Structure de données

INF601 : Algorithme et Structure de données Cours 2 : TDA Arbre Binaire B. Jacob IC2/LIUM 27 février 2010 Plan 1 Introuction 2 Primitives u TDA Arbin 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs)

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours Algorithmique, 2ème partie AS IUT

Cours Algorithmique, 2ème partie AS IUT Cours Algorithmique, 2ème partie AS IUT Cours 2 : Arbres Binaires Anne Vilnat http://www.limsi.fr/individu/anne/coursalgo Plan 1 Représentations arborescentes 2 Définition d un arbre binaire récursive

Plus en détail

Informatique / Structures de donnees / Presentation (French)

Informatique / Structures de donnees / Presentation (French) Informatique / Structures de donnees / Presentation (French) 1 de 3 STRUCTURES DE DONNEES INTRODUCTION Ce document est un résumé concernant les structures les plus classiques rencontrées en informatique

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr

Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Programme de la licence informatique, université de Caen http://www.info.unicaen.fr Unité Systèmes d'information CM : 45h - TD : 60h - TP : 12h - Coeff 2 Systèmes de Gestion de Bases de Données Modéliser

Plus en détail

Les Tables de Hachage

Les Tables de Hachage NICOD JEAN-MARC Licence 3 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2007 NICOD JEAN-MARC 1 / 34 Référence Tables à adressage directe Thomas H. Cormen, Charles E.

Plus en détail

Arbres Binaires de Recherche : Introduction

Arbres Binaires de Recherche : Introduction Arbres Binaires de Recherche : Introduction I. Guessarian cours ISN 11 janvier 2012 LIAFA, CNRS and University Paris Diderot 1/13 Arbre Binaire de Recherche Un Arbre Binaire de Recherche (ABR) est un arbre

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Analyse Statique Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 12 mai 2007 1 / 38 Indécidabilité de la Terminaison

Plus en détail

Notes de cours d algorithmique L3

Notes de cours d algorithmique L3 UFR d Informatique Paris 7 Paris Diderot Année 2010 2011 Notes de cours d algorithmique L3 François Laroussinie Notes de cours d algorithmique L3 François Laroussinie francois.laroussinie@liafa.jussieu.fr

Plus en détail

Algorithmes de tris. Chapitre 4

Algorithmes de tris. Chapitre 4 Chapitre 4 Algorithmes de tris Trier un ensemble d objets consiste à ordonner ces objets en fonction de clés et d une relation d ordre définie sur cette clé. Par exemple, chaque étudiant inscrit à l université

Plus en détail

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 11 : Arbre couvrant Prétraitement Benjamin Wack 2015-2016 1 / 32 La dernière fois Rappels sur les graphes Problèmes classiques Algorithmes d optimisation

Plus en détail

CH.1 COMPLEXITÉ. 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples

CH.1 COMPLEXITÉ. 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples CH.1 COMPLEXITÉ 1.1 Les ordres de grandeur 1.2 Les récurrences linéaires 1.3 Des exemples L2-2 ch1 1 1.1 Les ordres de grandeur Chaque problème peut être résolu de différentes manières par des algorithmes

Plus en détail

Algorithmique et structures de données II. Première partie. Séries des exercices. Page 1

Algorithmique et structures de données II. Première partie. Séries des exercices. Page 1 Première partie 1 Séries des exercices Page 1 Série1 : Les pointeurs Exercice1: Analyser le programme suivant: void main() int a[10], *pa, x; a[0] = 11; a[1] =22; a[2] = 33; a[3] = 44; pa = &a[0]; x =

Plus en détail

Introduction à l algorithmique. David Cachera ENS Cachan Bretagne

Introduction à l algorithmique. David Cachera ENS Cachan Bretagne 1 Introduction à l algorithmique David Cachera ENS Cachan Bretagne 2 Plan Introduction à l algorithmique Notion de complexité Recherche dichotomique Calculs de puissance 3 Un peu d histoire Etymologie

Plus en détail