La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Powerpoint Templates Page 1 Powerpoint Templates Partie Informatique Algorithmique A. LOTFI Introduction Introduction.

Présentations similaires


Présentation au sujet: "Powerpoint Templates Page 1 Powerpoint Templates Partie Informatique Algorithmique A. LOTFI Introduction Introduction."— Transcription de la présentation:

1 Powerpoint Templates Page 1 Powerpoint Templates Partie Informatique Algorithmique A. LOTFI Introduction Introduction

2 Powerpoint Templates Page 2 Algorithmique Complexité algorithmique Les types de données Les structures de données La récursivité Les Arbres Les algorithmes de Tri

3 Powerpoint Templates Page 3 Un algorithme est une suite dinstructions, qui une fois exécutée correctement, conduit à un résultat donné. Lalgorithmique exprime les instructions à effectuer pour résoudre un problème donné indépendamment des particularités de tel ou tel langage. Pour fonctionner, un algorithme doit donc contenir uniquement des instructions compréhensibles par celui qui devra lexécuter. La vérification méthodique, pas à pas, de chacun de vos algorithmes représente plus de la moitié du travail à accomplir... et la garantie de vos progrès.

4 Powerpoint Templates Page 4 Donc : Un Algorithme : enchaînement des actions (instructions) nécessaires pour résoudre un problème Un Algorithme : enchaînement des actions (instructions) nécessaires pour résoudre un problème On trouve différentes appellations On trouve différentes appellations langage algorithmique langage algorithmique pseudo-langage de programmation pseudo-langage de programmation pseudo-code pseudo-code …

5 Powerpoint Templates Page 5 Quest ce quun ordinateur ? d'intelligence Une machine totalement dénuée d'intelligence grand nombre de tâches Capable deffectuer un grand nombre de tâches sans erreurs Exécute très rapidement et sans erreurs les ordres qu'on lui donne Quest-ce quun programme ? Assemblage et enchaînement dinstructions élémentaires Écrit dans un langage de programmation Exécuté par un ordinateur afin de traiter les données dun problème Et renvoyer un ou plusieurs résultats Un programme est réalisé dans le but deffectuer un ensemble de traitements particuliers sur un ensemble de données Définir sous quelle forme les données initiales seront fournies à lapplication Définir sous quelle forme les résultats seront communiqués Expliciter les différentes actions à effectuer pour réaliser cette tâche

6 Powerpoint Templates Page 6 La mémoire : c'est l'espace où les données sont rangées pour fin d'utilisation par l'algorithme La mémoire est comme un ensemble de casiers postaux Une case contient une donnée Pour accéder à une donnée, on indique le numéro du casier (ou adresse mémoire) Pour stocker une donnée, on indique le numéro du casier et la valeur à stocker

7 Powerpoint Templates Page 7 Plusieurs bases de codage possibles Base 10 (décimale) : base de calcul usuelle Base 24 : heures Base 60 : minutes, secondes, degrés Base 12 : douzaine Bases les plus utilisées Pour les êtres humains : base décimale Pour un ordinateur : Base binaire (2) et dérivées : base hexadécimale (16) ou octale (8) Origine de l'utilisation du binaire : absence ou présence de courant électrique (0 ou 1) comme base de codage

8 Powerpoint Templates Page 8 Historique Codage des nombres : dans un but de calcul Apparition du calcul Dès la préhistoire on comptait avec des cailloux et avec ses doigts Calcul vient du latin calculi signifiant caillou Antiquité Chaque civilisation (Musulmans, Grecs, Romains, Chinois, Mayas...) avait développé des : Systèmes et bases de numérotation Méthodes pour compter et calculer

9 Powerpoint Templates Page 9 Origine des systèmes de numérotation Base 10 : nombre des doigts des 2 mains Chiffres romains : V = 5 et X = 10 Base 20 : mains et pieds Moins pratique, a disparu... Base 12 : 3 phalanges et 4 doigts (le pouce sert à positionner le chiffre) Base 60 : les doigts de la deuxième main comptent le deuxième chiffre (60 = 5 x 12)

10 Powerpoint Templates Page 10 Pour une base B, il y a B symboles différents (les chiffres de cette base) Base 10 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 2 : 0, 1 un chiffre = un bit (binary digit) Base 4 : Base 8 : 0, 1, 2, 3, 4, 5, 6, 7 Base 16 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

11 Powerpoint Templates Page 11 Valeur en décimal (base 10) d'un nombre « a n a n-1... a 1 a 0 » codé dans une base B a n B n + a n-1 B n a 1 B + a 0 En prenant la valeur décimale de chaque chiffre a x Exemples (1234) 10 = 1 x x x (11001) 2 = 1 x x x x = = 25 (1C04) 16 = 1 x x x = x = 7172 avec A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

12 Powerpoint Templates Page 12 Schéma de Horner Pour calculer la valeur décimale N de : « a n a n-1...a 1 a 0 » codé en base B P n = a n B + a n-1 P n-1 = P n B + a n-2 P n-2 = P n-1 B + a n-3... P 1 = P 2 B + a 0 = N Exemple : pour (1234) 10, B=10, n=3 p 3 = a 3 x B + a 2 = 1 x = 12 p 2 = p 3 x B + a 1 = 12 x = 123 p 1 = p 2 x B + a 0 = 123 x = 1234

13 Powerpoint Templates Page 13 Schéma de Horner Exemples : (11001)2, B=2, n=4 p 4 = 1 x = 3 p 3 = 3 x = 6 p 2 = 6 x = 12 p 1 = 12 x = 25 (1C04)16, B=16, n=3 p 3 = 1 x = 28 p 2 = 28 x = 448 p 1 = 448 x = 7172

14 Powerpoint Templates Page 14 Décimal base B Exemple : (1234) 10 en décimal 1234 / 10 = 123 reste / 10 = 12 reste 3 12 / 10 = 1 reste 2 1 < 10 donc on arrête Résultat : 1234

15 Powerpoint Templates Page 15 Décimal base B Exemple : (25) 10 en binaire 25 / 2 = 12 reste 1 12 / 2 = 6 reste 0 6 / 3 = 2 reste 0 3 / 2 = 1 reste 1 1 < 2 donc on arrête Résultat : (11001) 2

16 Powerpoint Templates Page 16 Décimal base B Cas Particuliers Conversion du binaire à l'octal/hexadécimal ou inverse 1 chiffre octal = un groupe de 3 chiffres binaires 1 chiffre hexadécimal = un groupe de 4 chiffres binaires (000) 2 = 0, (001) 2 = (110) 2 = 6, (111) 2 = 7 Avec 3 bits, on code les 8 chiffres de la base octale (0000) 2 = 0, (0001) 2 = (1110) 2 = 14 = (E) 16, (1111) 2 = 15 = (F) 16 Avec 4 bits, on code les 16 chiffres de la base hexadécimale

17 Powerpoint Templates Page 17 Décimal base B Cas Particuliers Conversion du binaire à l'octal/hexadécimal ou inverse Exemple : ( ) 2 en octal On regroupe par groupes de 3 bits : On rajoute des zéros au début au besoin (010) 2 = 2, (110) 2 = 6, (001) 2 = 1, (101) 2 = 5 ( ) 2 = (2615) 8

18 Powerpoint Templates Page 18 Décimal base B Cas Particuliers Conversion du binaire à l'octal/hexadécimal ou inverse Exemple : ( ) 2 en hexadécimal On regroupe par groupes de 4 bits : (0011) 2 = 5, (1000) 2 = 8, (1101) 2 = 13 ( ) 2 = (58D) 16

19 Powerpoint Templates Page 19 On a vu le codage des nombres entiers positifs dans différentes bases. Mais on doit aussi pouvoir manipuler des : Nombres réels Nombres négatifs Le signe … Représentation en virgule fixe:, (N) B = a n a n-1... a 1 a 0, b 1 b 2... b m-1 b m = a n B n + a n-1 B n a 1 B + a 0 + b 1 B -1 + b 2 B b m-1 B -m+1 + b m B -m

20 Powerpoint Templates Page 20 flottante Représentation en virgule flottante Principe et intérêts Avoir une virgule flottante et une précision limitée Ne coder que des chiffres significatifs N = +/- M x BE N = nombre codé M = mantisse : nombre de X chiffres de la base B E = exposant : nombre de Y chiffres de la base B +/- = codage du signe : positif ou négatif Le nombre est présenté sous forme normalisée pour déterminer la mantisse et exp. Pas de chiffre avant la virgule : 0,XXXXX x BE

21 Powerpoint Templates Page 21 flottante Représentation en virgule flottante Exemples 1234,5 en base 10 On normalise pour n'avoir que des chiffres après la virgule : 0,12345 x 10 4 Mantisse codée = 12345, exposant = 4, signe = + IEEE 754 Standard IEEE 754 : codage binaire de réels en virgule flottante Précision simple : 32 bits 1 bit de signe, 8 bits exposant, 23 bits mantisse Précision double : 64 bits 1 bit de signe, 11 bits exposant, 52 bits mantisse

22 Powerpoint Templates Page 22 Les Entiers Principe : considérer que le bit de poids fort code le signe 0 = entier positif, 1 = entier négatif Bit de poids fort : le plus à gauche Bit de poids faible : le plus à droite Les autres bits codent le nombre en valeur absolue Nécessité de savoir sur combien de bits on code le nombre pour déterminer quel bit code quoi Exemples si codage sur 4 bits (0111) 2 = 7 car bit de poids fort à 0 (1111) 2 = -7 car bit de poids fort à 1

23 Powerpoint Templates Page 23 Les Entiers Un ordinateur manipule des nombres binaires sous forme de 8 bits = un Octet = 1 Byte Données codées sur un ou plusieurs octets : 8 bits, 16 bits, 32 bits, 64 bits... p2 p - 1 Avec p bits, on code N valeurs avec 0 N 2 p - 1 Avec 16 bits, on peut coder 2 16 = valeurs différentes Soit les entiers de 0 à pour les entiers positifs

24 Powerpoint Templates Page 24 Les Entiers Pour un entier signé sur 16 bits : Nombres positifs : 0XXXXXXXXXXXXXXX Nombres négatifs : 1XXXXXXXXXXXXXXX On a 15 bits pour coder la valeur absolue du nombre soit 2 15 = valeurs possibles Pour le positif : de 0 à Pour le négatif : de -0 à Pour p bits : -(2 p-1 - 1) N 2 p code 2 fois le 0 Inconvénient : on code 2 fois le 0

25 Powerpoint Templates Page 25 besoin de stocker Dans un programme informatique, on va avoir en permanence besoin de stocker provisoirement des valeurs de types différents: utilisation de variables boîte étiquette Une variable est une boîte, que le programme (lordinateur) va repérer par une étiquette. accès Pour avoir accès au contenu de la boîte, il suffit de la désigner par son étiquette. Déclaration des variables => créer la boîte et de lui coller une étiquette. Le nom de la variable (létiquette de la boîte) obéit à des impératifs changeant selon les langages: commence impérativement par une lettre Un nom de variable correct commence impérativement par une lettre. exclut la plupart des signes de ponctuation Comporte des lettres et des chiffres, mais qui exclut la plupart des signes de ponctuation, en particulier les espaces.

26 Powerpoint Templates Page 26 Le type de la boite précise ce que lon voudra mettre dedans, car de cela dépendent la taille de la boîte Les principaux types de base sont : Types numériques Type alphanumérique Type booléen Le type est défini en fonction des besoins booléentrès économique Le type booléen est très économique en termes de place mémoire occupée, puisque pour stocker une telle information binaire, un seul bit suffit Les autres types sont généralement composés à partir des types de base.

27 Powerpoint Templates Page 27 Affecter une variable cest lui attribuer une valeur => mettre un contenu dans la boite. En pseudo-code, l'instruction d'affectation se note avec le signe maVariable 24 // Attribue la valeur 24 à la variable maVariable Il faut vérifier : La comptabilité entre le contenant et le contenu La variable désigné doit être au préalable déclarée

28 Powerpoint Templates Page 28 Différence avec le = mathématiques toujours Quand on dit qu'une variable prend pour valeur une autre variable, ça ne veut pas dire qu'elles seront toujours égales ! Cela veut seulement dire que la première variable va prendre la valeur de la seconde contenu Le contenu de la première boite sera le même celui de la seconde boite… ça na pas dimpact Mais si on modifie le contenu de la seconde boite après, ça na pas dimpact sur le contenu de la première boite !

29 Powerpoint Templates Page 29 Différence avec le = mathématiques Exemples Algo : x <- y différend de y <- x Maths : x = y équivaut à y = x Algo : x + 12 <- y impossible ! Maths : x + 12 = y a un sens Algo : x <- x + 7 a un sens Maths : x = x + 7 impossible

30 Powerpoint Templates Page 30 Identificateur : X Type : entier Valeur : 25 Identificateur : Y Type : réel Valeur : 3,7 Mémoire centrale (mémoire vive) 25X 3,7Y

31 Powerpoint Templates Page 31 Les opérations possibles sur les variables dépendent de leur type On ne peux pas par exemple multiplier des mots… Pour le Type Réel

32 Powerpoint Templates Page 32 Pour le Type Entier

33 Powerpoint Templates Page 33 Pour le Type Caractère Pour le Type Chaîne de caractères

34 Powerpoint Templates Page 34 Pour le Type Booléen

35 Powerpoint Templates Page 35 Quelles seront les valeurs des variables A et B après exécution des instructions suivantes ? Variables A, B en Entier Début A 5 B 2 A B B A Fin déchanger Moralité : les deux dernières instructions permettent- elles déchanger les deux valeurs de B et A ? Si lon inverse les deux dernières instructions, cela change-t-il quelque chose ?

36 Powerpoint Templates Page 36 Instruction Etat des Variables A 5 A = 5 B = ? B 2 A = 5 B = 2 A B A = 2 B = 2 B A A = 2 B = 2 écrasée Les deux dernières instructions ne permettent donc pas déchanger les deux valeurs de B et A, puisque lune des deux valeurs (celle de A) est ici écrasée. Si lon inverse les deux dernières instructions, cela ne changera rien du tout, hormis le fait que cette fois cest la valeur de B qui sera écrasée. Début A 5 B 2 A B B A Fin Début A 5 B 2 A B B A Fin

37 Powerpoint Templates Page 37 Un classique absolu, quil faut absolument maîtriser : écrire un algorithme permettant déchanger les valeurs de deux variables A et B, et ce quel que soit leur contenu préalable. Solution Début … C A A B B C Fin Remarque On est obligé de passer par une variable dite temporaire (la variable C).

38 Powerpoint Templates Page 38 On dispose de trois variables A, B et C. Ecrivez un algorithme transférant à B la valeur de A, à C la valeur de B et à A la valeur de C (toujours quels que soient les contenus préalables de ces variables). Solution Début … D C C B B A A D Fin Remarque En fait, quel que soit le nombre de variables, une seule variable temporaire suffit…

39 Powerpoint Templates Page 39 Les Branchements Le test booléen Si condition alors Instruction(s) Sinon Instruction(s) Fin si (fsi)

40 Powerpoint Templates Page 40 Les Branchements Sélection de cas Cas [variable] 1 er cas: Instruction(s) 2 ème cas: Instruction(s) … Cas échéant: Instruction(s) Fin cas

41 Powerpoint Templates Page 41 Les Boucles La boucle pour Pour [variable] de v_début à v_fin faire Instruction(s) Fin Pour (fpour)

42 Powerpoint Templates Page 42 Les Boucles La boucle tant que (while … do) Tant que condition(s) vérifiée faire Instruction(s) Fin tant que (ftq) Autre forme (do … while) Faire Instruction(s) Tant que condition(s) vérifiée

43 Powerpoint Templates Page 43 Les Boucles La boucle répéter (repeat … until) Répéter Instruction(s) Jusquà condition de sortie

44 Powerpoint Templates Page 44 Les Boucles Choix de la boucle La règle est simple : connu à priori Si le nombre ditérations est connu à priori, alors on utilise une boucle Pour. au moins Sinon Si linstruction est exécutée au moins une seule fois, on utilise Répéter…jusquà (ou sa version faire…tant que) Sinon on utilise la boucle Tant que … faire

45 Powerpoint Templates Page 45 Une procédure est un sous-programme Sert à découper un programme en plusieurs morceaux réutilisation Chaque procédure définit une nouvelle instruction quon peut appeler en tout endroit du programme réutilisation de code Découpage de programme analyse descendante du plus général au détailSyntaxe Procédure nom_procédure([Paramètres]) Début Instruction(s) Fin

46 Powerpoint Templates Page 46 Une fonction est une procédure qui renvoie un résultat, de manière à ce quon puisse lappeler dans une expression : y cos(x)+1Syntaxe Fonction nom_fonction([Paramètres]) Début Instruction(s) Retourner(résultat) Fin

47 Powerpoint Templates Page 47 coût Lexécution dun programme a un coût Le temps dexécution Lespace mémoire requi temps Aujourdhui, point sensible temps l'estimation l'efficacité La théorie de la complexité algorithmique s'intéresse à l'estimation de l'efficacité des algorithmes. le plus rapide Elle s'attache à la question : entre différents algorithmes réalisant une même tâche, quel est le plus rapide et dans quelles conditions ? Illustration : Etude de la complexité et mesure des performances de quelques algorithmes bien connus Tri par sélection Tri par insertion Tri par bulles Tri rapide

48 Powerpoint Templates Page 48 Domination La notation grand O de Landau dénote le caractère dominé d'une fonction par rapport à une autre. Définition Soient f et g deux fonctions de la variable réelle x. On dit que f est dominée par g en +, ou que g domine f en +, et on note Lorsqu'il existe des constantes N et C telles que Intuitivement, cela signifie que f ne croît pas plus vite que g.

49 Powerpoint Templates Page 49 Voici une liste de catégories de fonctions couramment utilisées en analyse. notationcroissance O(1)constante O(log(n))logarithmique O((log(n)) c )polylogarithmique O(n)linéaire O(n log(n)) parfois appelée « linéarithmique », ou « quasi-linéaire » O(n 2 )quadratique O(n c )polynomiale O(c n )exponentielle, parfois « géométrique » O(n!)factorielle

50 Powerpoint Templates Page 50 Règles utiles Règle 1: La complexité dun semble dinstructions est la somme des complexités de chacune delles. Règle 2: Les opérations élémentaires telle que laffectation, test, accès à un tableau, opérations logiques et arithmétiques, lecture ou écriture dune variable simple... etc, sont en O(1) Règle 3: Instruction if : maximum entre le then et le else Le switch : maximum parmi les différents cas

51 Powerpoint Templates Page 51 Règles utiles Règle 4: Instructions de répétition 1.La complexité de la boucle for est calculée par la complexité du corps de cette boucle multipliée par le nombre de fois quelle est répétée. 2.En règle générale, pour déterminer la complexité dune boucle while, il faudra avant tout déterminer le nombre de fois que cette boucle est répétée, ensuite le multiplier par la complexité du corps de cette boucle. Règle 5: Procédure et fonction Leur complexité est déterminée par celle de leur corps. Lappel à une fonction est supposé prendre un temps constant en O(1) Notons quon fait la distinction entre les fonctions récursive et celles qui ne le sont pas Dans le cas de la récursivité, le temps de calcul est exprimé comme une relation de récurrence.

52 Powerpoint Templates Page 52

53 Powerpoint Templates Page 53 Définition: Une fonction est récursive si elle fait appel à elle-même dune manière directe ou indirecte La récursivité est une technique de programmation très utile qui permet de trouver des solutions dune grande élégance à un certain nombre de problèmes. Attention! Lorsquelle mal utilisée, cette subtilité informatique peut créer un code totalement inefficace. Propriétés La récursivité (appels de la fonction à elle-même) doit sarrêter à un moment donné (test darrêt). Autrement, lexécution va continuer indéfiniment Un processus de réduction: à chaque appel, on doit se rapprocher de la condition darrêt.

54 Powerpoint Templates Page 54 Exemple Vision itérative: Un escalier de hauteur h cest : une séquence de h marches Vision récursive: Un escalier de hauteur h cest : une marche suivie dun escalier de hauteur h1

55 Powerpoint Templates Page 55 Recette de récursivité Sassurer que le problème peut se décomposer en un ou plusieurs sous-problèmes de même nature Identifier le cas de base qui est le plus petit problème qui ne se décompose pas en sous-problèmes Résoudre(P) = si P est un cas de base, le résoudre directement sinon décomposer P en sous-problèmes P1, P2,... résoudre récursivement P1, P2,... combiner les résultats obtenus pour P1, P2, …, pour obtenir la solution et avoir la solution au problème de départ.

56 Powerpoint Templates Page 56 Fonctionnement Création dune pile pour la sauvegarde entre autres des paramètres dappels de la procédure et la ladresse de retour. Exemple Calculer le factoriel de n, noté n! Le problème est: Calculer le factoriel d'un nombre entier donné en entrée. En entrée: Nous avons n nombre entiers qui sont plus grands ou égaux à 0. Sortie: Nous avons un nombre entier qui représente le factoriel de n.

57 Powerpoint Templates Page 57 Factoriel fonction fact (n : Naturel) : Naturel Debut si n=0 ou n=1 alors retourner 1 sinon retourner n*fact(n-1) Finsi Fin Exemple Fact(4)=4*Fact(3) Fact(3)=3*Fact(2) Fact(2)=2*Fact(1) Fact(1)=1 4*6=24 3*2=6 2*1=2 1

58 Powerpoint Templates Page 58 Empilage du contexte local Chaque procédure stocke dans une zone mémoire les paramètres les paramètres les variables locales les variables locales Cette zone sappelle la pile car les données sont empilées lors de l appel dune procédure empilées lors de l appel dune procédure désempilées à la fin de la procédure désempilées à la fin de la procédure A chaque appel récursif, l ordinateur empile donc les variables locales les variables locales les paramètres qui doivent changer à chaque appel les paramètres qui doivent changer à chaque appel

59 Powerpoint Templates Page 59 Inverser une chaîne Fonction inverse(ch : chaîne) début l= Longueur(ch); Si (l<=1) retourner ch; Sinon retourner inverse(Sous-Chaîne(ch,2,l))& Ch(1); Fin Si Fin Exemple inverse(abcd)-> inverse(abcd)-> inverse(bcd)&a -> inverse(bcd)-> inverse(cd)&b -> inverse(cd)-> inverse(d)&c dc dcb dcba

60 Powerpoint Templates Page 60 Récursivité terminale Définition : L'appel récursif est la dernière instruction et elle est isolée. Exemple : fonction plus (a,b : Naturel) : natuel début si b=0 alors retourner a sinon retourner plus(a+1,b-1) Finsi Fin Exécution plus(4,2)=plus(5,1)=plus(6,0)=6

61 Powerpoint Templates Page 61 Récursivité non terminale Définition : L'appel récursif n'est pas la dernière instruction et/ou elle n'est pas isolée (fait partie d'une expression) Exemple : fonction plus (a,b : Naturel) : natuel début si b=0 alors retourner a sinon retourner 1+plus(a,b-1) Finsi Fin Exécution plus(4,2)=1+plus(4,1)=1+1+plus(4,0)=1+1+4=6

62 Powerpoint Templates Page 62 Les Tours de Hanoï Les tours de Hanoï est un jeu solitaire dont l'objectif est de déplacer les disques qui se trouvent sur une tour (par exemple ici la première tour, celle la plus a gauche) vers une autre tour (par exemple la dernière, celle la plus a droite) en suivant les règles suivantes : on ne peut déplacer que le disque se trouvant au sommet d'une tour ; on ne peut déplacer qu'un seul disque a la fois ; un disque ne peut pas être posé sur un disque plus petit.

63 Powerpoint Templates Page 63 Les Tours de Hanoï Etude du problème Un peu de jeu Pilier 1 Pilier 2 Pilier 3 Pilier 1Pilier 2 Pilier 3 Pilier 1 Pilier 2 Pilier 3 Pilier 1Pilier 2 Pilier 3

64 Powerpoint Templates Page 64 Les Tours de Hanoï Etude du problème Ceci correspond à Hanoï avec n-1 disques Reformulation du problème n Si on a "n" disques à déplacer alors : on déplace "n-1" disques vers le pilier intermédiaire on déplace le disque "n" du pilier initial vers le pilier final on déplace les "n-1" disques du pilier intermédiaire vers le pilier final Pilier 1 Pilier 2 Pilier 3 Pilier 1Pilier 2 Pilier 3

65 Powerpoint Templates Page 65 Les Tours de Hanoï Algorithme Procedure hanoi(nbdisk, source, destination: Naturels) Début intermediaire = 6-(source+destination); Si (nbdisk > 0) Alors hanoi(nbdisk -1, source, intermediaire); Afficher("disque & nbdisk &" de &Source & "- >" & destination); hanoi(nbdisk-1, intermediaire, destination); Fin Si Fin Voir le programme en PHP par exemplePHP

66 Powerpoint Templates Page 66 Hanoï - Complexité En général, on a 2 n -1 déplacements pour n disques O(2 n ) Soit O(2 n ) : complexité exponentielle Si par exemple un déplacement coûte 1 seconde Pour 64 disques, on a : = secondes 585 milliard Cest soit 585 milliard années disques12345… déplacements …

67 Powerpoint Templates Page 67 Efficacité de la Récursivité Un algorithme récursif est légèrement moins rapide quun algorithme itératif équivalent Temps nécessaire à l empilage et au dépilage des données La récursivité utilise plus de ressources mémoire pour empiler les contextes La récursivité est plus « élégante » Les algorithmes récursifs sont souvent plus faciles à écrire

68 Powerpoint Templates Page 68 Structures de données En informatique, une structure de données est une structure logique destinée à contenir des données, afin de leur donner une organisation permettant de simplifier leur traitement. Une structure de données implémente concrètement un type abstrait. Différentes structures de données existent : Structures finies constantes variables enregistrements structures composées finies Structures indexées tableaux sur [1..n] tableaux sur [1..n][1..m] tableaux associatifs Structures récursives listes arbres graphes

69 Powerpoint Templates Page 69 Les Tableaux Un tableau de taille n est une structure très simple constituée de emplacements consécutifs en mémoire. Il est donc possible d'accéder à un élément d'un tableau en temps constant O(1) pourvu que l'on connaisse sa position (ou indice). Un tableau est donc une structure très simple et très efficace. Il n'est cependant pas possible de modifier la taille d'un tableau, ce qui est gênant pour un certain nombre d'algorithmes. On dit cette structure est statique. Le nombre d'éléments qu'elle contient ne peut pas varier. Le principe d'un tableau est donc très simple : on stocke les éléments dans des cases, chaque case étant étiquetée d'un numéro (généralement appelé indice). Pour accéder à un élément particulier d'un tableau, on donne son indice.

70 Powerpoint Templates Page 70 Les Listes Chaînées accès séquentiel référence à l'élément suivant Une liste chaînée est une liste à accès séquentiel, où chaque élément contient une valeur et une référence à l'élément suivant. sa taille peut varier L'intérêt d'une telle liste est que sa taille peut varier dynamiquement sans soucis de la fragmentation de son stockage mémoire. contiguë S'il est vrai que les tableaux sont stockés de manière contiguë en mémoire, il n'en va pas de même pour la liste chaînée, d'où sa plus grande souplesse d'emploi. le lier Agrandir la liste revient à créer un nouvel élément en mémoire et à le lier à la liste chaînée par une référence vers son emplacement mémoire. A une liste chaînée sont associée les primitives ou fonctions de service suivantes: Insérer Supprimer La liste est-elle vide ? Nombre d'éléments dans la liste

71 Powerpoint Templates Page 71 Les Listes Chaînées Liste simplement chaînée cléréférence Un élément d'une liste simplement chaînée est constitué d'une clé (la valeur de l'élément) et d'une référence à l'élément suivant (pointeur vers élément). Par convention, l'accès à une liste simplement chaînée est simplement un pointeur vers le premier élément de cette liste. Primitives Primitives tete[L] qui a une liste L renvoie l'adresse de son premier élément. succ[x] qui a un élément x renvoie l'adresse de son successeur. cle[x] qui a un élément x renvoie sa valeur.

72 Powerpoint Templates Page 72 Les Listes Chaînées Liste simplement chaînée Insertion: Attention à lordre Suppression: Noubliez pas de supprimer lélément de la mémoire.

73 Powerpoint Templates Page 73 Les Listes Chaînées Liste doublement chaînée suivant précédent Un élément d'une liste doublement chaînée est constitué d'une clé, d'une référence à l'élément suivant et d'une référence arrière vers l'élément précédent. Par convention l'accès à une liste doublement chaînée est simplement un pointeur vers le premier élément de cette liste.

74 Powerpoint Templates Page 74 Les Piles LIFO En informatique, une pile (stack) est une structure de données de type LIFO (Last In, First Out), c'est à dire fonctionnant sur le principe «dernier arrivé, premier sorti». Les derniers éléments ajoutés à la pile seront les premiers à être récupérés. On peut représenter une pile par une liste chaînée. Les insertions et suppressions sont faites seulement dans la queue de la liste. Empiler/Dépiler sont les fonctions de base.

75 Powerpoint Templates Page 75 Les Files FIFO En informatique, une file (queue) est une structure de données de type FIFO (First In, First Out), c'est à dire fondée sur le principe «premier arrivé, premier sorti ». Les premiers éléments ajoutés à la file seront les premiers à être récupérés.. On peut représenter une file par une liste chaînée. Les insertions sont en queue et les suppressions sont faites dans la tête de la liste. Enfiler/Défiler sont les fonctions de base.

76 Powerpoint Templates Page 76 Les Arbres Définition : un arbre est une structure de données composée dun ensemble de nœuds. Chaque nœud contient linformation spécique de lapplication et des pointeurs vers dautres nœuds (dautres sous-arbres). Définition récursive d'un arbre : Arbre vide Un seul noeud = racine Si on dispose d'un certain nombre d'arbres, on peut les "raccrocher" à un nouveau nœud, qui devient racine. A1A2A3 R Sous arbre

77 Powerpoint Templates Page 77 Notions Racine : C'est le noeud qui n'a pas de prédécesseur. La racine constitue la caractéristique d'un arbre. Dans l'exemple c'est a Feuille : c'est le noeud qui n'a pas de successeur. Une feuille est aussi appelée un noeud externe. Dans l'exemple, les feuilles sont : c, i, j, e, g et h. Nœud interne : c'est tout noeud qui admet au moins un successeur. Dans l'exemple, les noeuds internes sont : a, b, f et d. Fils : cest le successeur. Dans l'exemple, c, d et e sont les fils du noeud b. a fb dce gh i j

78 Powerpoint Templates Page 78 Notions Frères : ce sont les successeurs issus d'un même nœud. Dans l'exemple, c, d et e sont des frères. Père : c'est un nœud qui admet au moins un successeur. Dans l'exemple, b est le père des nœuds c, d et e. Sous arbre : C'est une portion de l'arbre. Dans l'exemple, le noeud f avec ces deux fils g et h constituent un sous arbre. Descendants dun nœud : ce sont tous les noeuds du sous arbre de racine noeud. Dans l'exemple, les descendants de h sont h, c, d, e, i et j. a fb dce gh i j

79 Powerpoint Templates Page 79 Ascendants dun nœud : ce sont tous les nœuds se trouvant sur la branche de la racine vers ce nœud. Dans l'exemple, les ascendants de d sont d, b et a. Les ascendants de g sont f et a. Branche : Les ascendants d'une feuille constituent une branche de l'arbre. Dans l'exemple, les branches de l'arbre sont a-b-c, a-b-d-i, a-b-d-j, a-b-e, a-f-g et a-f-h. Degré dun nœud : C'est le nombre de ses fils. Dans l'exemple, le degré de b est 3. Niveau dun nœud : On dit que la racine a le niveau 0, ses fils ont le niveau 1, les fils des fils ont le niveau 2. etc... Dans l'exemple, a est de niveau 0, d est de niveau 2 et j est de niveau 3. a fb dce gh i j

80 Powerpoint Templates Page 80 Notions Profondeur de larbre : C'est le niveau maximal des feuilles de l'arbre. L'arbre de l'exemple est de profondeur 3. Arité ou degré dun arbre : cest le maximum de fils quun nœud peut avoir (arité 3 dans lexemple). Arbre binaire : Un arbre binaire est un arbre tel que chaque nœud a au plus deux fils (ou successeurs). On parle de fils gauche et fils droit. Dans la suite, on va étudier que les arbres binaires. a fb dce gh i j

81 Powerpoint Templates Page 81 Représentation en mémoire On peut représenter un arbre binaire par une liste chaînée A CD E NULL

82 Powerpoint Templates Page 82 Stratégies de parcours Il existe 2 méthodes classiques de parcours d'arbre : Parcours en Profondeur, on part de la racine et on descend jusqu'à une première feuille avant de passer aux nœuds suivant puis remonter. Dans cette représentation, les feuilles apparaissent aux côtés de leur arborescence. Parcours en Largeur, lélément du niveau courant est noté puis on passe au fils de chacun d'eux. Cela peut s'apparenter à la vue dans un navigateur de fichier (Explorer Windows, Nautilus...). Pour les parcours en profondeur, on a : La notation préfixée La notation infixée La notation post-fixée

83 Powerpoint Templates Page 83 Algorithmes de parcours Parcours Préfixé Procédure Préfixé(racine) Début Afficher(Racine); Préfixé(Racine->Gauche); Préfixé(Racine->Droite); Fin Parcours Post-fixé Procédure Postfixé(racine) Début Postfixé(racine->Gauche); Postfixé(racine->Droite); Afficher(Racine); Fin

84 Powerpoint Templates Page 84 Algorithmes de parcours Parcours Infixé Procédure Infixé(racine) Début Infixé(Racine->Gauche); Afficher(Racine); Infixé(Racine->Droite); Fin


Télécharger ppt "Powerpoint Templates Page 1 Powerpoint Templates Partie Informatique Algorithmique A. LOTFI Introduction Introduction."

Présentations similaires


Annonces Google