Algorithmique et Programmation Impérative 2 Maximier Tri arbre

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

Download "Algorithmique et Programmation Impérative 2 Maximier Tri arbre"

Transcription

1 Algorithmique et Programmation Impérative 2 Maximier Tri arbre N.E. Oussous oussous@lifl.fr FIL USTL API2 - LST«A» p.1/33

2 Maximier - Définition Un arbre vide est considéré comme un maximier. API2 - LST«A» p.2/33

3 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si API2 - LST«A» p.2/33

4 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. API2 - LST«A» p.2/33

5 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. ses 2 sous-arbres principaux sont des maximiers. API2 - LST«A» p.2/33

6 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. ses 2 sous-arbres principaux sont des maximiers. À la racine des 2 sous-arbres principaux on trouve donc les 2ème et 3ème valeurs selon l ordre décroissant. API2 - LST«A» p.2/33

7 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. ses 2 sous-arbres principaux sont des maximiers. À la racine des 2 sous-arbres principaux on trouve donc les 2ème et 3ème valeurs selon l ordre décroissant. On a un ordre partiel : API2 - LST«A» p.2/33

8 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. ses 2 sous-arbres principaux sont des maximiers. À la racine des 2 sous-arbres principaux on trouve donc les 2ème et 3ème valeurs selon l ordre décroissant. On a un ordre partiel : Le père est plus grand que ses deux fils. API2 - LST«A» p.2/33

9 Maximier - Définition Un arbre vide est considéré comme un maximier. Un arbre binaire non vide est un maximier si et seulement si sa racine porte la valeur maximale. ses 2 sous-arbres principaux sont des maximiers. À la racine des 2 sous-arbres principaux on trouve donc les 2ème et 3ème valeurs selon l ordre décroissant. On a un ordre partiel : Le père est plus grand que ses deux fils. Pas d ordre entre les frères. API2 - LST«A» p.2/33

10 Maximier - Exemple API2 - LST«A» p.3/33

11 Maximier - Utilité La structure de maximier n est pas utilisée pour implémenter les primitives usuelles (recherche, insertion, suppression) sur les ensembles. API2 - LST«A» p.4/33

12 Maximier - Utilité La structure de maximier n est pas utilisée pour implémenter les primitives usuelles (recherche, insertion, suppression) sur les ensembles. Par exemple, la recherche d une valeur particulière peut amener à parcourir tout l arbre (donc être en Θ(n)). Elle nécessite de plus la gestion d une pile dont la hauteur est celle de l arbre lui-même. Cette recherche serait donc inefficace. API2 - LST«A» p.4/33

13 Maximier - Utilité La structure de maximier n est pas utilisée pour implémenter les primitives usuelles (recherche, insertion, suppression) sur les ensembles. Par exemple, la recherche d une valeur particulière peut amener à parcourir tout l arbre (donc être en Θ(n)). Elle nécessite de plus la gestion d une pile dont la hauteur est celle de l arbre lui-même. Cette recherche serait donc inefficace. Un maximier est par contre utilisé pour extraire le maximum parmi un ensemble de valeurs. API2 - LST«A» p.4/33

14 Maximier - Cueillette La suppression de l élément maximal est, par contre, plus efficace. On remplace cet élément par le plus grand de ses successeurs. API2 - LST«A» p.5/33

15 Maximier - Cueillette La suppression de l élément maximal est, par contre, plus efficace. On remplace cet élément par le plus grand de ses successeurs. On recommence l opération avec le successeur utilisé. API2 - LST«A» p.5/33

16 Maximier - Cueillette La suppression de l élément maximal est, par contre, plus efficace. On remplace cet élément par le plus grand de ses successeurs. On recommence l opération avec le successeur utilisé. On supprime la feuille utilisée en dernier. API2 - LST«A» p.5/33

17 Cueillette - Exemple API2 - LST«A» p.6/33

18 Cueillette - Exemple API2 - LST«A» p.6/33

19 Cueillette - Exemple API2 - LST«A» p.6/33

20 Cueillette - Exemple API2 - LST«A» p.6/33

21 Cueillette - Exemple API2 - LST«A» p.6/33

22 Cueillette - Exemple API2 - LST«A» p.6/33

23 Cueillette - Exemple API2 - LST«A» p.6/33

24 Cueillette - Exemple API2 - LST«A» p.6/33

25 Cueillette - Code procedure Supprimer_Max(var T : Maximier) ; X : Curseur ; Begin X := Racine(T) ; While not Est_Feuille(X) Do Begin Determiner quel successeur possède la valeur maximale ; Recopier cette valeur; Descendre X du coté où se trouvait la valeur maximale ; end ; // while Supprimer(X); End ; // Supprimer_Max API2 - LST«A» p.7/33

26 Pré-Maximier Un Pré-Maximier est un arbre dont les 2 sous-arbres principaux sont des maximiers. API2 - LST«A» p.8/33

27 Pré-Maximier Un Pré-Maximier est un arbre dont les 2 sous-arbres principaux sont des maximiers. Un pré-maximier n est pas nécessairement un maximier, cela dépend de la valeur portée à la racine. API2 - LST«A» p.8/33

28 Pré-Maximier Un Pré-Maximier est un arbre dont les 2 sous-arbres principaux sont des maximiers. Un pré-maximier n est pas nécessairement un maximier, cela dépend de la valeur portée à la racine. La transformation en maximier (Réorganisation) se fait par une méthode analogue à celle utilisée pour la suppression du maximum. API2 - LST«A» p.8/33

29 Pré-Maximier Maximier Si le pré-maximier n est pas un maximier, il faut API2 - LST«A» p.9/33

30 Pré-Maximier Maximier Si le pré-maximier n est pas un maximier, il faut Échanger la valeur portée à la racine avec la valeur maximale de ses successeurs, API2 - LST«A» p.9/33

31 Pré-Maximier Maximier Si le pré-maximier n est pas un maximier, il faut Échanger la valeur portée à la racine avec la valeur maximale de ses successeurs, Réorganiser le successeur avec lequel a eu lieu l échange. API2 - LST«A» p.9/33

32 Pré-Maximier Maximier Si le pré-maximier n est pas un maximier, il faut Échanger la valeur portée à la racine avec la valeur maximale de ses successeurs, Réorganiser le successeur avec lequel a eu lieu l échange. La réorganisation nécessite le parcours d une seule branche, avec un traitement en Θ(1) à chaque nœud parcouru. API2 - LST«A» p.9/33

33 Réorganisation - Exemple API2 - LST«A» p.10/33

34 Réorganisation - Exemple API2 - LST«A» p.10/33

35 Réorganisation - Exemple API2 - LST«A» p.10/33

36 Réorganisation - Exemple API2 - LST«A» p.10/33

37 Réorganisation - Exemple API2 - LST«A» p.10/33

38 Réorganisation - Exemple API2 - LST«A» p.10/33

39 Réorganisation - Exemple API2 - LST«A» p.10/33

40 Réorganisation - Code procedure Reorganiser(var T : Maximier) ; X : Curseur ; Begin X := Racine(T) ; Repeat if not Est_Vide(sag(X)) then begin G := X; G := sag(g) ; if not Est_Vide(sad(X)) then begin D := X; D := sad(d) ; if Valeur(D) > Valeur(G) and Valeur(D) > Valeur(X) then begin Changer_Valeur(X, Valeur(D)); X := D; end else if Valeur(G) > Valeur(D) and Valeur(G) > Valeur(X) then begin Changer_Valeur(X, Valeur(G)); X := G; end else exit; end else begin Changer_Valeur(X, Valeur(G)); X := G; end; end else if not Est_Vide(sad(X)) then begin Changer_Valeur(X, Valeur(D)); X := D; end else exit; until false ; // Repeat End ; API2 - LST«A» p.11/33

41 Fabrication d un maximier Un arbre binaire quelconque contient des maximiers : toutes ses feuilles. API2 - LST«A» p.12/33

42 Fabrication d un maximier Un arbre binaire quelconque contient des maximiers : toutes ses feuilles. Les sous-arbres de hauteur 2 sont donc des pré-maximiers. API2 - LST«A» p.12/33

43 Fabrication d un maximier Un arbre binaire quelconque contient des maximiers : toutes ses feuilles. Les sous-arbres de hauteur 2 sont donc des pré-maximiers. Par réorganisations successives, on peut transformer tous les sous-arbres de hauteur 2 en maximiers, puis ceux de hauteur 3, etc... API2 - LST«A» p.12/33

44 Fabrication d un maximier Un arbre binaire quelconque contient des maximiers : toutes ses feuilles. Les sous-arbres de hauteur 2 sont donc des pré-maximiers. Par réorganisations successives, on peut transformer tous les sous-arbres de hauteur 2 en maximiers, puis ceux de hauteur 3, etc... Il faudra donc parcourir les sous-arbres par hauteurs croissantes (les sous-arbres les plus profonds en premier). API2 - LST«A» p.12/33

45 Fabrication - Exemple API2 - LST«A» p.13/33

46 Fabrication - Exemple API2 - LST«A» p.13/33

47 Fabrication - Exemple API2 - LST«A» p.13/33

48 Fabrication - Exemple API2 - LST«A» p.13/33

49 Fabrication - Exemple API2 - LST«A» p.13/33

50 Fabrication - Exemple API2 - LST«A» p.13/33

51 Fabrication - Exemple API2 - LST«A» p.13/33

52 Fabrication - Code récursif Cet algorithme s exprime facilement de façon récursive procedure Fabriquer_maximier(C : Curseur) Begin if not Est_Vide(sag(X)) then begin G := X; G := sag(g) ; Fabriquer_maximier(G) ; end; // if if not Est_Vide(sad(X)) then begin D := X; D := sad(d) ; Fabriquer_maximier(D); end; // if // on a maintenant un pré-maximier Reorganiser(C); End ; // Fabriquer_maximier API2 - LST«A» p.14/33

53 Fabrication - Code itératif Cet algorithme peut aussi s exprimer (informellement) de façon itérative par for h := 2 to hauteur(arbre) do begin Réorganiser tous les sous-arbres de hauteur h ; end; // for Mais l interface d arbre proposée jusqu ici ne permet pas d implémenter aisément cette version itérative, faute de moyen efficace pour parcourir tous les sous-arbres d une hauteur donnée. API2 - LST«A» p.15/33

54 Tri-Arbre : Heapsort L utilisation des maximiers peut amener à une méthode de tri appelée Tri-arbre ou Heapsort. Description informelle de l algorithme : Tri_Arbre(var T : Tableau) Begin Constituer un arbre contenant les valeurs de T; Fabriquer un maximier à partir de cet arbre; for i:=low(t) to high(t) do begin Ranger le maximum dans T[i] ; Retirer le maximum de l arbre ; end; // for End ; // Tri_Arbre En pratique, cette méthode de tri est employée dans le cas d une implémentation d arbre bien particulière : le tas. API2 - LST«A» p.16/33

55 La structure de Tas La structure de tas permet de représenter, dans un tableau, un arbre quasi-équilibré, dont les feuilles à profondeur maximale sont situées le plus à gauche possible. API2 - LST«A» p.17/33

56 La structure de Tas La structure de tas permet de représenter, dans un tableau, un arbre quasi-équilibré, dont les feuilles à profondeur maximale sont situées le plus à gauche possible. Elle consiste à ranger les valeurs portées par les nœuds API2 - LST«A» p.17/33

57 La structure de Tas La structure de tas permet de représenter, dans un tableau, un arbre quasi-équilibré, dont les feuilles à profondeur maximale sont situées le plus à gauche possible. Elle consiste à ranger les valeurs portées par les nœuds par profondeur croissante API2 - LST«A» p.17/33

58 La structure de Tas La structure de tas permet de représenter, dans un tableau, un arbre quasi-équilibré, dont les feuilles à profondeur maximale sont situées le plus à gauche possible. Elle consiste à ranger les valeurs portées par les nœuds par profondeur croissante de gauche à droite (pour une profondeur donnée). API2 - LST«A» p.17/33

59 La structure de Tas La structure de tas permet de représenter, dans un tableau, un arbre quasi-équilibré, dont les feuilles à profondeur maximale sont situées le plus à gauche possible. Elle consiste à ranger les valeurs portées par les nœuds par profondeur croissante de gauche à droite (pour une profondeur donnée). un arbre = un tableau un curseur = un indice du tableau un nœud = une case du tableau API2 - LST«A» p.17/33

60 Tas - Exemple API2 - LST«A» p.18/33

61 Tas dans 1 tableau d indices 1..n T(1) T(2) T(3) T(4) T(5) T(6) T(7) T(8) T(9) T(10) T(11) T(12) Racine 1 Successeur gauche 2i Successeur droite 2i + 1 i Prédecesseur 2 Est_Feuille 2i > n Possède 2 successeurs 2i < n Possède 1 seul successeur 2i = n Dernier nœud interne n 2 API2 - LST«A» p.19/33

62 Tas - Cas général T[low(T)] T[low(T)+1] T[low(T)+2] T[low(T)+3] T[low(T)+4] T[low(T)+5] T[low(T)+6] T[high(T)] Racine low(t) Successeur gauche 2i low(t) + 1 Successeur droite 2i low(t) Prédecesseur (i + low(t) 1) 2 Est_Feuille 2i low(t) + 1 > high(t) Possède 2 successeurs 2i low(t) + 1 < high(t) Possède 1 seul successeur 2i low(t) + 1 = high(t) 1 Dernier nœud interne (high(t) + low(t) 1) 2 API2 - LST«A» p.20/33

63 La structure de Tas Les moins API2 - LST«A» p.21/33

64 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. API2 - LST«A» p.21/33

65 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. la suppression d un nœud ou l insertion d un nouveau nœud sont impossibles. API2 - LST«A» p.21/33

66 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. Les plus API2 - LST«A» p.21/33

67 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. Les plus Pas besoin de pointeurs. API2 - LST«A» p.21/33

68 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. Les plus Pas besoin de pointeurs. Le passage d un nœud à ses successeurs se fait par adressage calculé. API2 - LST«A» p.21/33

69 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. Les plus Pas besoin de pointeurs. Le passage d un nœud à ses successeurs se fait par adressage calculé. Possibilité de calculer également l emplacement du prédécesseur. API2 - LST«A» p.21/33

70 La structure de Tas Les moins Les arbres auront une taille maximale, celle du tableau. Un nœud est associé à une case (fixée) du tableau. Les plus Pas besoin de pointeurs. Le passage d un nœud à ses successeurs se fait par adressage calculé. Possibilité de calculer également l emplacement du prédécesseur. Possibilité de parcourir l arbre de bas en haut. API2 - LST«A» p.21/33

71 Réorganiser un Tas : Itératif procedure Reorganiser( C : Curseur ) ; I : Curseur ; begin I := C ; repeat if Possede_2_Successeurs(I) then begin if T[sag(I)] > T[sad(I)] and T[sag(I)] > T[I] then begin Echanger(T[I],T[sag(I)]); I := sag(i); end else if T[sad(I)] > T[sag(I)] and T[sad(I)] > T[I] then begin Echanger(T[I],T[sad(I)]); I := sad(i); end else // T[I] est la plus grande des 3 valeurs exit; end else if Possede_1_Seul_Successeur(I) and T[sag(I)]>T[I] then begin Echanger(T[I],T[sag(I)]); exit; end else exit; Until false ; end; // Reorganiser API2 - LST«A» p.22/33

72 Réorganiser un Tas : Récursif Reorganiser(T, C) g : Curseur ; d : Curseur ; Begin g := sag(c) ; d := sad(c) ; // on détermine max(t[c], T[g], T[d]) if g <= high(t) and T[g] > T[C] then max := g else max := C ; if d <= high(t) and T[d] > T[max] then max := d ; if max <> C then begin // c est un pré-maximier Echanger(T[C], T[max]) ; Reorganiser(T, max) ; end; // if End; // Reorganiser API2 - LST«A» p.23/33

73 Réorganiser Tas : Complexité Le temps d exécution de Reorganiser sur un sous-arbre de taille n enraciné en un nœud i est la somme du temps Θ(1) nécessaire pour corriger la relation entre les éléments T[C], T[sag(C)] et T[sad(C)], et le temps d exécution de Reorganiser sur un sous-arbre enraciné sur l un des deux fils du nœud i. API2 - LST«A» p.24/33

74 Réorganiser Tas : Complexité Le temps d exécution de Reorganiser sur un sous-arbre de taille n enraciné en un nœud i est la somme du temps Θ(1) et le temps d exécution de Reorganiser sur un sous-arbre enraciné sur l un des deux fils du nœud i. Les sous-arbres des fils ont chacun une taille au plus égale à 2n 3. Car c est un arbre binaire presque complet. API2 - LST«A» p.24/33

75 Réorganiser Tas : Complexité Le temps d exécution de Reorganiser sur un sous-arbre de taille n enraciné en un nœud i est la somme du temps Θ(1) et le temps d exécution de Reorganiser sur un sous-arbre enraciné sur l un des deux fils du nœud i. Les sous-arbres des fils ont chacun une taille au plus égale à 2n 3. Le pire des cas est atteint lorsque le dernier niveau est rempli exactement à moitié. API2 - LST«A» p.24/33

76 Réorganiser Tas : Complexité On aboutit à la relation de récurrence suivante : ( ) 2n T(n) T + Θ(1) 3 API2 - LST«A» p.25/33

77 Réorganiser Tas : Complexité On aboutit à la relation de récurrence suivante : ( ) 2n T(n) T + Θ(1) 3 On est dans le cas 2 du théorème général avec a = 1 b = 3 2 f(n) = Θ(1) Ainsi n log b a = n 0 = 1 et f(n) = Θ(n log b a ) API2 - LST«A» p.25/33

78 Réorganiser Tas : Complexité On aboutit à la relation de récurrence suivante : ( ) 2n T(n) T + Θ(1) 3 On est dans le cas 2 du théorème général avec a = 1 b = 3 2 f(n) = Θ(1) Ainsi n log b a = n 0 = 1 et f(n) = Θ(n log b a ) La solution est donc T(n) = O(log 2 n) API2 - LST«A» p.25/33

79 Fabriquer un Tas Les feuilles sont situées dans les dernières cases du tableau : T[( n 2 +1)..n]. En supposant que le tableau est indicé de 1 à n. On parcourt les sous-arbres par hauteurs croissantes en parcourant les cases du tableau en ordre inverse. API2 - LST«A» p.26/33

80 Fabriquer un Tas Les feuilles sont situées dans les dernières cases du tableau : T[( n 2 +1)..n]. On parcourt les sous-arbres par hauteurs croissantes en parcourant les cases du tableau en ordre inverse. procedure Fabriquer_Tas(var T : Arbre) ; begin for i:=dernier_arbre_h2 downto Racine do begin Reorganiser(i); // Reorganiser(T,i) end; end Fabriquer_Tas; Racine 1 et Dernier_arbre_h2 n 2. API2 - LST«A» p.26/33

81 Fabriquer un Tas Les feuilles sont situées dans les dernières cases du tableau : T[( n 2 +1)..n]. On parcourt les sous-arbres par hauteurs croissantes en parcourant les cases du tableau en ordre inverse. procedure Fabriquer_Tas(var T : Arbre) ; begin for i:=dernier_arbre_h2 downto Racine do begin Reorganiser(i); // Reorganiser(T,i) end; end Fabriquer_Tas; Le temps d exécution de Fabriquer_tas : Chaque appel à Reorganiser coûte O(log 2 n). Il existe O(n) appels de ce type. Donc, le temps d exécution est au plus O(n log n). API2 - LST«A» p.26/33

82 Exemple Soit le tableau suivant : API2 - LST«A» p.27/33

83 Exemple Soit le tableau suivant : Il lui correspond l arbre suivant : API2 - LST«A» p.27/33

84 Exemple i API2 - LST«A» p.28/33

85 Exemple i API2 - LST«A» p.28/33

86 Exemple i API2 - LST«A» p.28/33

87 Exemple i API2 - LST«A» p.28/33

88 Exemple 1 i API2 - LST«A» p.28/33

89 Exemple API2 - LST«A» p.28/33

90 Fabriquer Tas : Complexité Une analyse plus fine est basée sur les propriétés des tas : API2 - LST«A» p.29/33

91 Fabriquer Tas : Complexité Une analyse plus fine est basée sur les propriétés des tas : La hauteur d un tas à n éléments est h = log 2 n. API2 - LST«A» p.29/33

92 Fabriquer Tas : Complexité Une analyse plus fine est basée sur les propriétés des tas : La hauteur d un tas à n éléments est h = log 2 n. 1 sous-arbre de hauteur h, 2 sous-arbres de hauteur h 1, 4 sous-arbres de hauteur h 2 API2 - LST«A» p.29/33

93 Fabriquer Tas : Complexité Une analyse plus fine est basée sur les propriétés des tas : La hauteur d un tas à n éléments est h = log 2 n. 2 h i sous-arbres de hauteur i. Le temps de calcul de Reorganiser sur un nœud de hauteur h est O(h). API2 - LST«A» p.29/33

94 Fabriquer Tas : Complexité Une analyse plus fine est basée sur les propriétés des tas : La hauteur d un tas à n éléments est h = log 2 n. 2 h i sous-arbres de hauteur i. Le temps de calcul de Reorganiser sur un nœud de hauteur h est O(h). Le coût total pour Fabriquer_tas sera ( h h T(n) = 2 h i O(i) = O 2 h i=0 i=0 ) i 2 i API2 - LST«A» p.29/33

95 Fabriquer Tas : Complexité On a l égalité : i=0 i 2 i = 1/2 (1 1/2) 2 = 2 Obtenue en remplaçant x par 1/2 et k par i dans la formule : k=0 kx k = x (1 x) 2 API2 - LST«A» p.30/33

96 Fabriquer Tas : Complexité On a l égalité : i=0 i 2 i = 1/2 (1 1/2) 2 = 2 Donc, le temps d exécution de Fabriquer_tas peut être borné par O n log 2 n i=0 i 2 i = O ( n i=0 ) i 2 i = O(n 2) = O(n) API2 - LST«A» p.30/33

97 Fabriquer Tas : Complexité On a l égalité : i=0 i 2 i = 1/2 (1 1/2) 2 = 2 Donc, le temps d exécution de Fabriquer_tas peut être borné par O n log 2 n i=0 i 2 i = O ( n i=0 ) i 2 i = O(n 2) = O(n) Ainsi, on peut construire un tas à partir d un tableau non ordonné en un temps linéaire. API2 - LST«A» p.30/33

98 Le tri par tas : Heapsort On construit un tas par Fabriquer_Tas à partir de T[1..n], n=length(t). API2 - LST«A» p.31/33

99 Le tri par tas : Heapsort On construit un tas par Fabriquer_Tas à partir de T[1..n], n=length(t). L élément maximum de T se trouve à la racine T[1]. API2 - LST«A» p.31/33

100 Le tri par tas : Heapsort On construit un tas par Fabriquer_Tas à partir de T[1..n], n=length(t). L élément maximum de T se trouve à la racine T[1]. On le place à sa position finale en l échangeant avec T[n]. API2 - LST«A» p.31/33

101 Le tri par tas : Heapsort On construit un tas par Fabriquer_Tas à partir de T[1..n], n=length(t). L élément maximum de T se trouve à la racine T[1]. On le place à sa position finale en l échangeant avec T[n]. On décrémente la taille du tableau en ne considérant que le sous-tableau T[1..(n-1)]. API2 - LST«A» p.31/33

102 Le tri par tas : Heapsort On construit un tas par Fabriquer_Tas à partir de T[1..n], n=length(t). L élément maximum de T se trouve à la racine T[1]. On le place à sa position finale en l échangeant avec T[n]. On décrémente la taille du tableau en ne considérant que le sous-tableau T[1..(n-1)]. On transforme T[1..(n-1)] en tas puisque les fils de la racine restent des tas. Il y aura éventuellement à descendre la nouvelle racine à sa place. API2 - LST«A» p.31/33

103 Exemple API2 - LST«A» p.32/33

104 Exemple i API2 - LST«A» p.32/33

105 Exemple i API2 - LST«A» p.32/33

106 Exemple i 16 API2 - LST«A» p.32/33

107 Exemple i 16 API2 - LST«A» p.32/33

108 Exemple i API2 - LST«A» p.32/33

109 Exemple i API2 - LST«A» p.32/33

110 Exemple i API2 - LST«A» p.32/33

111 Exemple i API2 - LST«A» p.32/33

112 Exemple i API2 - LST«A» p.32/33

113 Exemple i API2 - LST«A» p.32/33

114 Exemple i API2 - LST«A» p.32/33

115 Exemple i API2 - LST«A» p.32/33

116 Exemple i API2 - LST«A» p.32/33

117 Tri Tas : Code Tri_Tas(T) Begin Fabriquer_Tas(T) ; n := Length(T) ; for i:=n downto 2 do begin Echanger(T[1], T[i]) ; Reorganiser(T[1..n-1], 1) ; end; End ; API2 - LST«A» p.33/33

118 Tri Tas : Code Tri_Tas(T) Begin Fabriquer_Tas(T) ; n := Length(T) ; for i:=n downto 2 do begin Echanger(T[1], T[i]) ; Reorganiser(T[1..n-1], 1) ; end; End ; L appel à Fabriquer_Tas prend un temps en O(n). API2 - LST«A» p.33/33

119 Tri Tas : Code Tri_Tas(T) Begin Fabriquer_Tas(T) ; n := Length(T) ; for i:=n downto 2 do begin Echanger(T[1], T[i]) ; Reorganiser(T[1..n-1], 1) ; end; End ; L appel à Fabriquer_Tas prend un temps en O(n). Chacun des n 1 appels à Reorganiser prend un temps en O(log n). API2 - LST«A» p.33/33

120 Tri Tas : Code Tri_Tas(T) Begin Fabriquer_Tas(T) ; n := Length(T) ; for i:=n downto 2 do begin Echanger(T[1], T[i]) ; Reorganiser(T[1..n-1], 1) ; end; End ; L appel à Fabriquer_Tas prend un temps en O(n). Chacun des n 1 appels à Reorganiser prend un temps en O(log n). La complexité de Tri_Tas est donc en O(n log n). API2 - LST«A» p.33/33

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

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

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

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

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com 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

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

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

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

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives introduction Chapitre 5 Images récursives http ://univ-tln.fr/~papini/sources/flocon.htm Récursivité http://www.poulain.org/fractales/index.html Image qui se contient elle-même 1 Exemples mathématiques

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

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

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

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

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

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

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources

SNT4U16 - Initiation à la programmation 2014-2015. TD - Dynamique de POP III - Fichiers sources SNT4U16 - Initiation à la programmation Licence SVT 2 ème année 2014-2015 TD - Dynamique de POP III - Fichiers sources contacts : mathias.gauduchon@univ-amu.fr, melika.baklouti@univ-amu.fr, xavier.giraud@univ-amu.fr,

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

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

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Sub CalculAnnuite() Const TITRE As String = Calcul d'annuité de remboursement d'un emprunt TD1 : traduction en Visual BASIC des exemples du cours sur les structures de contrôle de l'exécution page 1 'TRADUCTION EN VBA DES EXEMPLES ALGORITHMIQUES SUR LES STRUCTURES 'DE CONTROLE DE L'EXECUTION

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

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

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

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

Algorithmes de recherche d itinéraires en transport multimodal

Algorithmes de recherche d itinéraires en transport multimodal de recherche d itinéraires en transport multimodal Fallou GUEYE 14 Décembre 2010 Direction : Christian Artigues LAAS-CNRS Co-direction : Marie José Huguet LAAS-CNRS Encadrant industriel : Frédéric Schettini

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

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

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

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux

Jean-Philippe Préaux http://www.i2m.univ-amu.fr/~preaux Colonies de fourmis Comment procèdent les colonies de fourmi pour déterminer un chemin presque géodésique de la fourmilière à un stock de nourriture? Les premières fourmis se déplacent au hasard. Les fourmis

Plus en détail

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle

NIMEGUE V3. Fiche technique 3.07 : Sauvegarde / Restauration manuelle NIMEGUE V3 Fiche technique 3.07 : Sauvegarde / Restauration manuelle Version au 2 mai 2011 Toute donnée mémorisée sur un ordinateur, quelque soit le support, peut-être supprimée/effacée suite à un dysfonctionnement

Plus en détail

Continuité et dérivabilité d une fonction

Continuité et dérivabilité d une fonction DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité

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

# 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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48 Méthodes de Polytech Paris-UPMC - p. 1/48 Polynôme d interpolation de Preuve et polynôme de Calcul de l erreur d interpolation Étude de la formule d erreur Autres méthodes - p. 2/48 Polynôme d interpolation

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

Algorithmes et programmation en Pascal. Cours

Algorithmes et programmation en Pascal. Cours Algorithmes et programmation en Pascal Faculté des Sciences de Luminy Edouard Thiel Cours Deug 1 Mass MA Module de 75 heures 1997 à 2004 2 Algorithmes et programmation en Pascal Edouard Thiel Table des

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

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

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours Exo7 Continuité (étude globale). Diverses fonctions Exercices de Jean-Louis Rouget. Retrouver aussi cette fiche sur www.maths-france.fr * très facile ** facile *** difficulté moyenne **** difficile *****

Plus en détail

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

Bases de données documentaires et distribuées Cours NFE04 Bases de données documentaires et distribuées Cours NFE04 Introduction a la recherche d information Auteurs : Raphaël Fournier-S niehotta, Philippe Rigaux, Nicolas Travers prénom.nom@cnam.fr Département

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

.NET - Classe de Log

.NET - Classe de Log .NET - Classe de Log Classe permettant de Logger des données Text Dans tous les projets, il est indispensable de pouvoir stocker de l'information textuelle : Pour le suivi des erreurs Pour le suivi de

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

Application 1- VBA : Test de comportements d'investissements

Application 1- VBA : Test de comportements d'investissements Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps

Plus en détail

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

= constante et cette constante est a.

= constante et cette constante est a. Le problème Lorsqu on sait que f(x 1 ) = y 1 et que f(x 2 ) = y 2, comment trouver l expression de f(x 1 )? On sait qu une fonction affine a une expression de la forme f(x) = ax + b, le problème est donc

Plus en détail

Ordonnancement temps réel

Ordonnancement temps réel Ordonnancement temps réel Laurent.Pautet@enst.fr Version 1.5 Problématique de l ordonnancement temps réel En fonctionnement normal, respecter les contraintes temporelles spécifiées par toutes les tâches

Plus en détail

1. Structure d'un programme FORTRAN 95

1. Structure d'un programme FORTRAN 95 FORTRAN se caractérise par la nécessité de compiler les scripts, c'est à dire transformer du texte en binaire.(transforme un fichier de texte en.f95 en un executable (non lisible par un éditeur) en.exe.)

Plus en détail

L ALGORITHMIQUE. Algorithme

L ALGORITHMIQUE. Algorithme L ALGORITHMIQUE Inspirée par l informatique, cette démarche permet de résoudre beaucoup de problèmes. Quelques algorithmes ont été vus en 3 ième et cette année, au cours de leçons, nous verrons quelques

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

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

Conception de circuits numériques et architecture des ordinateurs

Conception de circuits numériques et architecture des ordinateurs Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

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

Problèmes liés à la concurrence

Problèmes liés à la concurrence ENS Cachan Problématique Difficile de gérer la concurrence : Pas toujours facile d avoir des fonctions réentrantes. Risque de race condition : ex : x :=x+1 x :=x+1 On voudrait des blocs d instructions

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Manipulations du laboratoire

Manipulations du laboratoire Manipulations du laboratoire 1 Matériel Les manipulations de ce laboratoire sont réalisées sur une carte électronique comprenant un compteur 4-bit asynchrone (74LS93) avec possibilité de déclenchement

Plus en détail

Introduction aux algorithmes répartis

Introduction aux algorithmes répartis Objectifs et plan Introduction aux algorithmes répartis Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR http://sardes.inrialpes.fr/people/krakowia! Introduction aux algorithmes

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

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12 Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont

Plus en détail

Chapitre 7 : Intégration sur un intervalle quelconque

Chapitre 7 : Intégration sur un intervalle quelconque Universités Paris 6 et Paris 7 M1 MEEF Analyse (UE 3) 2013-2014 Chapitre 7 : Intégration sur un intervalle quelconque 1 Fonctions intégrables Définition 1 Soit I R un intervalle et soit f : I R + une fonction

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

Découverte de Python

Découverte de Python Découverte de Python Python est un des langages informatiques au programme des concours à partir de la session 2015. Ce tutoriel vous permettra de vous mettre à peu près à niveau de ce qui a été fait en

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

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé SERVEUR DE SAUVEGARDE POUR BCDI3 par G.Haberer, A.Peuch, P.Saadé Table des matières 1. Introduction........................................................................ 2 1.1. Objectif....................................................................

Plus en détail

Programmation C++ (débutant)/instructions for, while et do...while

Programmation C++ (débutant)/instructions for, while et do...while Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de

Plus en détail

Gestion mémoire et Représentation intermédiaire

Gestion mémoire et Représentation intermédiaire Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,

Plus en détail

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

1 Modélisation d être mauvais payeur

1 Modélisation d être mauvais payeur 1 Modélisation d être mauvais payeur 1.1 Description Cet exercice est très largement inspiré d un document que M. Grégoire de Lassence de la société SAS m a transmis. Il est intitulé Guide de démarrage

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

Compilation (INF 564)

Compilation (INF 564) Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation

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

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR Mickaël Bergem 25 juin 2014 Maillages et applications 1 Table des matières Introduction 3 1 La modélisation numérique de milieux urbains

Plus en détail

Algorithmes sur les mots (séquences)

Algorithmes sur les mots (séquences) Introduction Algorithmes sur les mots (séquences) Algorithmes sur les mots (textes, séquences, chines de crctères) Nomreuses pplictions : ses de données iliogrphiques ioinformtique (séquences de iomolécules)

Plus en détail

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES TRAVAUX PRATIQUES Le présent travail vise à développer une interface visuelle de programmation des entrées- sorties du port LPT d un PC à l aide du logiciel VISUAL BASIC. I- EDITION ET TEST DU PROGRAMME

Plus en détail

KL5121. Pour activer des sorties en fonction de la position d'un codeur

KL5121. Pour activer des sorties en fonction de la position d'un codeur KL5121 Pour activer des sorties en fonction de la position d'un codeur VERSION : 1.0 / PH DATE : 07 Février 2006 Sommaire Ce manuel explique de manière pratique les étapes successives pour mettre en œuvre

Plus en détail

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Le calcul formel dans l enseignement des mathématiques

Le calcul formel dans l enseignement des mathématiques Le calcul formel dans l enseignement des mathématiques Michel Mizony Lille, Avril 2005 mizony@univ-lyon1.fr 1 Résumé Il existe deux sortes de logiciels de calcul symbolique qui bousculent nos pratiques

Plus en détail

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle Ce projet comporte trois parties sur les thèmes suivants : création de base de donnée, requêtes SQL, mise en œuvre

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

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

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009 Déroulement Algorithmes et structures de données Cours 1 et 2 Patrick Reuter http://www.labri.fr/~preuter/asd2009 CM mercredi de 8h00 à 9h00 (Amphi Bât. E, 3 ème étage) ED - Groupe 3 : mercredi, 10h30

Plus en détail

Alarme intrusion filaire AEI HA-981 6 zones

Alarme intrusion filaire AEI HA-981 6 zones Alarme intrusion filaire AEI HA-981 6 zones Lycée de l Aa Page 1 sur 11 1) Mise en situation Vous devez assurer une protection périmétrique et volumétrique de la maison de M r X. Le schéma architectural

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

Gestion de stock pour un magasin

Gestion de stock pour un magasin Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire

Plus en détail

Enseignement secondaire technique

Enseignement secondaire technique Enseignement secondaire technique Régime technique Division technique générale Cycle moyen Informatique 11TG Nombre de leçons: 2.0 Nombre minimal de devoirs: - Langue véhiculaire: / Remarque générale:

Plus en détail

Programmation Linéaire - Cours 1

Programmation Linéaire - Cours 1 Programmation Linéaire - Cours 1 P. Pesneau pierre.pesneau@math.u-bordeaux1.fr Université Bordeaux 1 Bât A33 - Bur 265 Ouvrages de référence V. Chvátal - Linear Programming, W.H.Freeman, New York, 1983.

Plus en détail

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Logiciel Libre Cours 3 Fondements: Génie Logiciel Logiciel Libre Cours 3 Fondements: Génie Logiciel Stefano Zacchiroli zack@pps.univ-paris-diderot.fr Laboratoire PPS, Université Paris Diderot 2013 2014 URL http://upsilon.cc/zack/teaching/1314/freesoftware/

Plus en détail