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

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 : omarinmt@gmail.com 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-

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

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

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, 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

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

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

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

Chapitre 7. Récurrences

Chapitre 7. Récurrences Chapitre 7 Récurrences 333 Plan 1. Introduction 2. Applications 3. Classification des récurrences 4. Résolution de récurrences 5. Résumé et comparaisons Lectures conseillées : I MCS, chapitre 20. I Rosen,

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

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

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

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

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

Architecture des Systèmes d Information Architecture des Systèmes d Information Plan... Tableaux et tris I3 - Algorithmique et programmation 1 Rappels Nicol Delestre 2 Tableaux à n dimensions 3 Initiation aux tris Tableaux - v2.0.1 1 / 27 Tableaux - v2.0.1 2 / 27 Rappels : tableau

Plus en détail

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation Complexité Objectifs des calculs de complexité : - pouvoir prévoir le temps d'exécution d'un algorithme - pouvoir comparer deux algorithmes réalisant le même traitement Exemples : - si on lance le calcul

Plus en détail

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

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Quelques Algorithmes simples

Quelques Algorithmes simples Quelques Algorithmes simples Irène Guessarian ig@liafa.jussieu.fr 10 janvier 2012 Je remercie Patrick Cegielski de son aide efficace pour la programmation Java ; la section sur le codage de Huffman a été

Plus en détail

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

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

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

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

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

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

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D

ÉPREUVE COMMUNE DE TIPE 2008 - Partie D ÉPREUVE COMMUNE DE TIPE 2008 - Partie D TITRE : Les Fonctions de Hachage Temps de préparation :.. 2 h 15 minutes Temps de présentation devant le jury :.10 minutes Entretien avec le jury :..10 minutes GUIDE

Plus en détail

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

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

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée. ANALYSE 5 points Exercice 1 : Léonie souhaite acheter un lecteur MP3. Le prix affiché (49 ) dépasse largement la somme dont elle dispose. Elle décide donc d économiser régulièrement. Elle a relevé qu elle

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

CCP PSI - 2010 Mathématiques 1 : un corrigé

CCP PSI - 2010 Mathématiques 1 : un corrigé CCP PSI - 00 Mathématiques : un corrigé Première partie. Définition d une structure euclidienne sur R n [X]... B est clairement symétrique et linéaire par rapport à sa seconde variable. De plus B(P, P

Plus en détail

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/??

Algorithmique I. Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr. Algorithmique I 20-09-06 p.1/?? Algorithmique I Augustin.Lux@imag.fr Roger.Mohr@imag.fr Maud.Marchal@imag.fr Télécom 2006/07 Algorithmique I 20-09-06 p.1/?? Organisation en Algorithmique 2 séances par semaine pendant 8 semaines. Enseignement

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Algorithmique et Programmation

Algorithmique et Programmation École Supérieure d Ingénieurs de Poitiers Gea Algorithmique et Programmation Laurent Signac ii Algorithmique et programmation Gea Table des matières Avant Propos v Structures de données Notion de pointeur..............................................

Plus en détail

La fonction exponentielle

La fonction exponentielle DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction

Plus en détail

Intégration et probabilités TD1 Espaces mesurés Corrigé

Intégration et probabilités TD1 Espaces mesurés Corrigé Intégration et probabilités TD1 Espaces mesurés Corrigé 2012-2013 1 Petites questions 1 Est-ce que l ensemble des ouverts de R est une tribu? Réponse : Non, car le complémentaire de ], 0[ n est pas ouvert.

Plus en détail

Initiation. àl algorithmique et à la programmation. en C

Initiation. àl algorithmique et à la programmation. en C Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,

Plus en détail

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Leçon 11 PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES Dans cette leçon, nous retrouvons le problème d ordonnancement déjà vu mais en ajoutant la prise en compte de contraintes portant sur les ressources.

Plus en détail

Les algorithmes de base du graphisme

Les algorithmes de base du graphisme Les algorithmes de base du graphisme Table des matières 1 Traçage 2 1.1 Segments de droites......................... 2 1.1.1 Algorithmes simples.................... 3 1.1.2 Algorithmes de Bresenham (1965).............

Plus en détail

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

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2. Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3

Plus en détail

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Groupe symétrique. Chapitre II. 1 Définitions et généralités Chapitre II Groupe symétrique 1 Définitions et généralités Définition. Soient n et X l ensemble 1,..., n. On appelle permutation de X toute application bijective f : X X. On note S n l ensemble des permutations

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Résolution d équations non linéaires

Résolution d équations non linéaires Analyse Numérique Résolution d équations non linéaires Said EL HAJJI et Touria GHEMIRES Université Mohammed V - Agdal. Faculté des Sciences Département de Mathématiques. Laboratoire de Mathématiques, Informatique

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

Algorithmes de recherche

Algorithmes de recherche Algorithmes de recherche 1 Résolution de problèmes par recherche On représente un problème par un espace d'états (arbre/graphe). Chaque état est une conguration possible du problème. Résoudre le problème

Plus en détail

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

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses 6. Hachage Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses PLAN Définition Fonctions de Hachage Méthodes de résolution de collisions Estimation

Plus en détail

Structures algébriques

Structures algébriques Structures algébriques 1. Lois de composition s Soit E un ensemble. Une loi de composition interne sur E est une application de E E dans E. Soient E et F deux ensembles. Une loi de composition externe

Plus en détail

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

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1 Chap 4: Analyse syntaxique 1 III- L'analyse syntaxique: 1- Le rôle d'un analyseur syntaxique 2- Grammaires non contextuelles 3- Ecriture d'une grammaire 4- Les méthodes d'analyse 5- L'analyse LL(1) 6-

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

# 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>

# 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> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

LE PROBLEME DU PLUS COURT CHEMIN

LE PROBLEME DU PLUS COURT CHEMIN LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs

Plus en détail

V- Manipulations de nombres en binaire

V- Manipulations de nombres en binaire 1 V- Manipulations de nombres en binaire L ordinateur est constitué de milliards de transistors qui travaillent comme des interrupteurs électriques, soit ouverts soit fermés. Soit la ligne est activée,

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

I. Polynômes de Tchebychev

I. Polynômes de Tchebychev Première épreuve CCP filière MP I. Polynômes de Tchebychev ( ) 1.a) Tout réel θ vérifie cos(nθ) = Re ((cos θ + i sin θ) n ) = Re Cn k (cos θ) n k i k (sin θ) k Or i k est réel quand k est pair et imaginaire

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Image d un intervalle par une fonction continue

Image d un intervalle par une fonction continue DOCUMENT 27 Image d un intervalle par une fonction continue La continuité d une fonction en un point est une propriété locale : une fonction est continue en un point x 0 si et seulement si sa restriction

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

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

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Cours de Programmation Impérative: Zones de mémoires et pointeurs Cours de Programmation Impérative: Zones de mémoires et pointeurs Julien David A101 - david@lipn.univ-paris13.fr Julien David (A101 - david@lipn.univ-paris13.fr) 1 / 1 Z`o n`e s `d`e m`é m`o i r`e Julien

Plus en détail

CH.6 Propriétés des langages non contextuels

CH.6 Propriétés des langages non contextuels CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le

Plus en détail

Limites finies en un point

Limites finies en un point 8 Limites finies en un point Pour ce chapitre, sauf précision contraire, I désigne une partie non vide de R et f une fonction définie sur I et à valeurs réelles ou complees. Là encore, les fonctions usuelles,

Plus en détail

Chaînes de Markov au lycée

Chaînes de Markov au lycée Journées APMEP Metz Atelier P1-32 du dimanche 28 octobre 2012 Louis-Marie BONNEVAL Chaînes de Markov au lycée Andreï Markov (1856-1922) , série S Problème 1 Bonus et malus en assurance automobile Un contrat

Plus en détail

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

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

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

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 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 Introduction Plusieurs dizaines de processus doivent se partager

Plus en détail

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

Travaux Dirigés n 1 : chaînes de caractères UE LE315 Travaux Dirigés n 1 : chaînes de caractères Exercice 1 Ecrire une fonction int nombre_caract(char *chaîne) qui retourne la taille d une chaîne de caractères. Exercice 2 Ecrire la fonction void

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

Plus en détail

Quelques algorithmes simples dont l analyse n est pas si simple

Quelques algorithmes simples dont l analyse n est pas si simple Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib habib@liafa.jussieu.fr http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008 Plan Histoire

Plus en détail

Chapitre 2 Le problème de l unicité des solutions

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

données en connaissance et en actions?

données en connaissance et en actions? 1 Partie 2 : Présentation de la plateforme SPSS Modeler : Comment transformer vos données en connaissance et en actions? SPSS Modeler : l atelier de data mining Large gamme de techniques d analyse (algorithmes)

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

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

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) Modularité Extensions Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs) généricité modules de première classe : peuvent être

Plus en détail

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2

Université de Strasbourg UFR de Mathématique et d'informatique. L2 Informatique Semestres S3 et S4. Structures de Données et Algorithmes 1 et 2 Université de Strasbourg UFR de Mathématique et d'informatique L2 Informatique Semestres S3 et S4 Structures de Données et Algorithmes 1 et 2 Fiches d exercices année 2009 2010 1 2 Constructions de base

Plus en détail

Systemes d'exploitation des ordinateurs

Systemes d'exploitation des ordinateurs ! " #$ % $ &' ( $ plan_ch6_m1 Systemes d'exploitation des ordinateurs Conception de Systèmes de Gestion de la Mémoire Centrale Objectifs 1. Conception de systèmes paginés 2. Conception des systèmes segmentés

Plus en détail

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

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année 2003-2004 Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES Maude Manouvrier La reproduction de ce document par

Plus en détail

Correction de l examen de la première session

Correction de l examen de la première session de l examen de la première session Julian Tugaut, Franck Licini, Didier Vincent Si vous trouvez des erreurs de Français ou de mathématiques ou bien si vous avez des questions et/ou des suggestions, envoyez-moi

Plus en détail

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007 Vision industrielle et télédétection - Détection d ellipses Guillaume Martinez 17 décembre 2007 1 Table des matières 1 Le projet 3 1.1 Objectif................................ 3 1.2 Les choix techniques.........................

Plus en détail

Fonctions de plusieurs variables

Fonctions de plusieurs variables Module : Analyse 03 Chapitre 00 : Fonctions de plusieurs variables Généralités et Rappels des notions topologiques dans : Qu est- ce que?: Mathématiquement, n étant un entier non nul, on définit comme

Plus en détail

Algorithmes récursifs

Algorithmes récursifs Licence 1 MASS - Algorithmique et Calcul Formel S. Verel, M.-E. Voge www.i3s.unice.fr/ verel 23 mars 2007 Objectifs de la séance 3 écrire des algorithmes récursifs avec un seul test rechercher un élément

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Cours de Master Recherche

Cours de Master Recherche Cours de Master Recherche Spécialité CODE : Résolution de problèmes combinatoires Christine Solnon LIRIS, UMR 5205 CNRS / Université Lyon 1 2007 Rappel du plan du cours 16 heures de cours 1 - Introduction

Plus en détail

Métriques de performance pour les algorithmes et programmes parallèles

Métriques de performance pour les algorithmes et programmes parallèles Métriques de performance pour les algorithmes et programmes parallèles 11 18 nov. 2002 Cette section est basée tout d abord sur la référence suivante (manuel suggéré mais non obligatoire) : R. Miller and

Plus en détail

4. Les structures de données statiques

4. Les structures de données statiques 4. Les structures de données statiques 4.1 Tableaux à une dimension 4.1.1 Introduction Imaginons que dans un programme, nous ayons besoin simultanément de 25 valeurs (par exemple, des notes pour calculer

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Cours d Analyse. Fonctions de plusieurs variables

Cours d Analyse. Fonctions de plusieurs variables Cours d Analyse Fonctions de plusieurs variables Licence 1ère année 2007/2008 Nicolas Prioux Université de Marne-la-Vallée Table des matières 1 Notions de géométrie dans l espace et fonctions à deux variables........

Plus en détail

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications A. Optimisation sans contrainte.... Généralités.... Condition nécessaire et condition suffisante

Plus en détail

Partie 7 : Gestion de la mémoire

Partie 7 : Gestion de la mémoire INF3600+INF2610 Automne 2006 Partie 7 : Gestion de la mémoire Exercice 1 : Considérez un système disposant de 16 MO de mémoire physique réservée aux processus utilisateur. La mémoire est composée de cases

Plus en détail

Algorithmique avec Algobox

Algorithmique avec Algobox Algorithmique avec Algobox 1. Algorithme: Un algorithme est une suite d instructions qui, une fois exécutée correctement, conduit à un résultat donné Un algorithme doit contenir uniquement des instructions

Plus en détail

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN Table des matières. Introduction....3 Mesures et incertitudes en sciences physiques

Plus en détail