16
Structures de données et récursivité IPA – Catherine Faron Zucke et Anne Marie Deryr

Structures de données et récursivité

  • Upload
    orde

  • View
    22

  • Download
    0

Embed Size (px)

DESCRIPTION

Structures de données et récursivité. Vous avez vu les ArrayList . suite ordonnée d'éléments de taille variable ArrayList liste ; liste = new ArrayList (); Ne peuvent contenir que des objets premier élément : liste.get (0) - PowerPoint PPT Presentation

Citation preview

Page 1: Structures de données et  récursivité

Structures de données et récursivité

IPA – Catherine Faron Zucke et Anne Marie Deryr

Page 2: Structures de données et  récursivité

Vous avez vu les ArrayList...

suite ordonnée d'éléments de taille variableArrayList<Integer> liste;liste = new ArrayList<Integer>();

Ne peuvent contenir que des objets

premier élément : liste.get(0) dernier élément : liste.get(liste.size()-1) i ième élément : liste.get(i-1)

IPA – Catherine Faron Zucker 2

Page 3: Structures de données et  récursivité

ArrayList ajout d'un élt: liste.add(new Integer(3));

modif d'un élt: liste.set(i,new Integer(4));

suppression d'un élt: liste.remove(i);

› mêmes algos que sur les tableauxavec taille variable

IPA – Catherine Faron Zucker 3

Page 4: Structures de données et  récursivité

Piles et Files Ordonnancements particuliers des éléments d'une

collection - implémentation à partir d’un tableau ou d'une liste

Pile : LIFO Last In First Out› empiler/dépiler des éléments› Peut être implémentée par un tableau ou une liste

File : FIFO First In Fist Out› enfiler /défiler des éléments› implémentation par liste plus simple

IPA – Catherine Faron Zucker 4

Page 5: Structures de données et  récursivité

IPA – Catherine Faron Zucker

Soit la Pile contenant les valeurs : 1, 2, 5

Dessinez moi une Pile

Ajoutons l’élément 12 Dépilons un élément

Soit la File contenant les valeurs : 1, 2, 5

Dessinez moi une File

Ajoutons l’élémént 12 Sortons un élément de la file

Page 6: Structures de données et  récursivité

Exemples d’utilisation

Algorithmes d'évaluation d'expressions mathématiques

Algorithmes pour mémoriser des données en attente de traitement.

IPA – Catherine Faron Zucker 6

?

Page 7: Structures de données et  récursivité

Piles avec tableaupublic class Pile{

private Object[] table;private int hauteur;public void empiler(Object o){table[hauteur]=o; hauteur++;}

public Object depiler(){hauteur--; return table[hauteur];}

public Object sommet(){}public boolean vide(){}public boolean pleine(){}

}IPA – Catherine Faron Zucker 7

Page 8: Structures de données et  récursivité

Files avec ArrayListpublic class File{

private ArrayList<Object> liste;private int longueur;public void enfiler(Object o){liste.add(o); longueur++;}

public Object defiler(){longueur--; return liste.remove(0);}

public Object tete(){}public Object queue(){}public boolean vide(){}

}IPA – Catherine Faron Zucker 8

Page 9: Structures de données et  récursivité

Conception d'un algorithme Stratégie de résolution d'un problème

Approche incrémentale› itérer jusqu'à obtention du résultat souhaité

Approche récursive› diviser pour régner:

diviser en sous-problèmes régner sur les sous-problèmes combiner les solutions des sous-problèmes

IPA – Catherine Faron Zucker 9

Page 10: Structures de données et  récursivité

PGCD(a, b) récursif diviser: pgcd(a,b) = pgcd(b, a mod b)

semblable au problème initial de taille moindre

régner: pgcd(a,0) = a

combiner: pgcd(a,b)= pgcd(b,a mod b)=...

IPA – Catherine Faron Zucker 10

Page 11: Structures de données et  récursivité

PGCD(a, b) récursifSi b=0 Alors retourner a //terminaisonSinon retourner pgcd(a, a mod b)finSi

IPA – Catherine Faron Zucker 11

Page 12: Structures de données et  récursivité

PGCD(a, b) itératifn <- a; m <- b;TantQue m != 0 Faire r <- n mod m n <- m m <- rFinTantQueretourner n

IPA – Catherine Faron Zucker 12

Page 13: Structures de données et  récursivité

Fac(n) Relation de récurence

fac(n) = n * fac(n-1), n>0fac(0) = 1

AlgorithmeSi n = 0 Alors retourner 1Sinon retourner n * fac(n-1)FinSi

IPA – Catherine Faron Zucker 13

Page 14: Structures de données et  récursivité

Fac(n)Complexité

› opération élémentaire : *› nbre de fois où elle est effectuée

fonction de n: M(n) relation de récurence: M(n) = 1 + M(n-1) pour n>0 et M(0) = 0 en développant, on a M(n) = M(n-i) + i pour tout i pour i=n, on obtient M(n) = M(O) + n = n

cf. module Maths discrètes

IPA – Catherine Faron Zucker 14

Page 15: Structures de données et  récursivité

Manipulation d’une structure recursive !

Ajout d’un élément en position i Suppresssion d’un élément en position i Recherche d’un élément de valeur z Calcul de la somme des éléments

IPA – Catherine Faron Zucker 15

?

Page 16: Structures de données et  récursivité

A suivre...Structures de données

Maps et Sets listes chaînées : cf. td

› simplement, doublement arbres arbres binaires arbres binaires de recherche graphes

IPA – Catherine Faron Zucker 16