programmation avanc e - chapitre 1 : complexit et les abr … · 2011-11-14 · chapitre 1 :...

34
PROG CM1 Mickaël Foursov Introduction Complexité en temps d’un algo Diviser pour régner Divers Les ABR Recherche Ajout aux feuilles Ajout à la racine Suppression Analyse Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011

Upload: others

Post on 10-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Programmation avancéeChapitre 1 : Complexité et les ABR (arbres binaires de

recherche)

Mickaël Foursov1

1IFSICUniversité de Rennes-1

M2Crypto, octobre 2011

Page 2: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Plan du cours

1 Introduction

2 Complexité en temps d’un algo

3 Diviser pour régner

4 Divers

5 Les ABR

6 Recherche

7 Ajout aux feuilles

8 Ajout à la racine

9 Suppression

10 Analyse

Page 3: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Algorithmes

Définition

Algorithme : spécification bien définie d’un schéma decalcul sous forme d’une suite (finie) des opérationsélémentaires obéissant à un enchaînement déterminé

décrit par des spécifications

traduit par un programme dans un langage informatique

devant être exécuté sur une machine

(éventuellement) sur un jeu de données

Page 4: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Objectifs : quantifier

le temps d’exécution

la place mémoire nécessaire

pour exécuter le programme.

On s’intéresse donc au temps d’exécution et à la placemémoire de stockage des instructions et des données duprogramme et de manipulation des données.

But : comparer des algorithmes.

Page 5: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Résumé sur une machine donnée :On souhaite pouvoir dire l’algo A, implémenté par leprogramme P, sur l’ordinateur O, exécute sur les données Dutilise k secondes de calcul et j bits de mémoire.

Temps : nombre de cycles machine lors de l’exécution duprogramme en comptant le nombre d’opérations effectuéeset le temps pour chaque opération.

Place mémoire : nombre de mots mémoire.

Page 6: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Résultats plus généraux, indépendants de la machine, dulangage de programmation, des compilateurs, . . ., liés à lamachine donnée.

∀ la machine, ∀ le langage, A1 est “meilleur” que A2 pourdes données de grande taille (à partir de telle taille).

ou bien

A1 est “optimal” (en nombre de opérations) pour résoudrece problème.

Page 7: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Choix des mesures :recherche des opérations fondamentales tq le tempsd’exécution soit toujours proportionnel au nombre de cesopérations. Donc donne une mesure simplifiée du tempsd’exécution.

Exemples d’opérations fondamentales :

recherche d’un élément dans une liste : nombre decomparaisons entre 2 éléments

recherche d’un élément sur un disque ; nombre d’accèsà la mémoire secondaire

tri interne d’une liste d’éléments : nombre decomparaisons entre 2 élts + nombre de déplacementd’élts

multiplication de matrices : nombre de * et de +

Page 8: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Choix des mesures :recherche des opérations fondamentales tq le tempsd’exécution soit toujours proportionnel au nombre de cesopérations. Donc donne une mesure simplifiée du tempsd’exécution.

Exemples d’opérations fondamentales :

recherche d’un élément dans une liste : nombre decomparaisons entre 2 éléments

recherche d’un élément sur un disque ; nombre d’accèsà la mémoire secondaire

tri interne d’une liste d’éléments : nombre decomparaisons entre 2 élts + nombre de déplacementd’élts

multiplication de matrices : nombre de * et de +

Page 9: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Soit un algo A pour résoudre un problème P. Peut-ontrouver un algo B meilleur que A ou A est-il “optimal” pource problème P ?

Parfois on ne connaît qu’un ordre de grandeur de lacomplexité optimale de la classe de problèmes résolvant P.

Il est établi que la résolution de problème de multiplicationde 2 matrices n × n demande au moins n? multiplications. ∃un algo de nlg 7 (Strassen) et en n2,376. Mieux ?

Page 10: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

L’approche “Diviser pour régner”

Séparer le problème en plusieurs sous–problèmessimilaires au problème initial, mais de taille moindre,résoudre les sous–problèmes de façon récursive, puiscombiner ces solutions pour retrouver une solution auproblème initial.

Diviser le problème en un certain nombre desous–problèmes.

Régner sur les sous–problèmes en les résolvantrécursivement. Par ailleurs, si la taille d’unsous–problème est assez réduite, on peut le résoudredirectement.

Combiner les solutions aux sous–problèmes en unesolution complète pour le problème initial.

Page 11: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Tri fusion

Diviser : Diviser la séquence de n éléments à trier en 2sous–séquences de n/2 éléments.Régner : Trier les 2 sous–séquences récursivement àl’aide du tri fusion.Combiner : Fusionner les 2 sous–séquences triéespour produire la réponse triée.

void mergeSort(item[] a, int l, int r) {if (l < r){

int m = (l+r)/2;mergeSort(A,l,m);mergeSort(A,m+1,r);merge(A,l,m,r);

}}

Page 12: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Analyse du tri fusion

Diviser : Se fait en temps constant.

Régner : 2 pb de taille n/2, donc 2T(n/2).

Combiner : merge prend un temps Θ(n).

Donc

T (n) =

{

Θ(1), si n = 1

2T (n/2) + Θ(n), si n > 1

Mais comment trouver la solution sous forme close ?

Page 13: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Compromis temps–mémoire

L’algorithme de chiffrement DES a des clés de 56 bits.

La recheche exhaustive nécessite donc 2k−1

opérations de chiffrement en moyenne.

Considérons maintenant le chiffrement double : le textechiffré est chiffré une nouvelle fois avec une autre clé,indépendante de la première.

Naïvement, la recherche exhaustive nécessiterait 22k−1

opérations en moyenne.

Page 14: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Attaque par le milieu (meet–in–the–middle)

Une attaque dite par le milieu (meet-in-the-middle)réduit le temps à 2k opérations, au prix d’espacemémoire considérable 2k .

On effectue des chiffrements du texte clair par toutesles clés possibles et on les range dans une table.

Puis on effectue un déchiffrement du texte chiffré partoutes les clés possibles.

Enfin on compare ensuite les deux listes pour trouverdes textes identiques.

Une deuxième paire texte clair/texte chiffré permetd’éliminer les paires de clés incorrectes.

Donc, le chiffrement double n’est jamais utilisé.

Page 15: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Attaque d’anniversaires sur les fonctions dehachage

Une fonction de hachage cryptographique envoie desmots binaires de taille arbitraire sur des mots binairesde taille fixe n.

Cela sert par exemple dans la signature électronique.

Mais il faut que le signataire ne puissent pas prétendreà avoir signé un autre message.

Donc, il faut qu’il soit infaisable de trouver 2 messagesavec la même valeur de hachage.

Combien de tests faut-il effectuer (en prenant 2messages au hasard à chaque fois) pour trouver unecollision ?

Page 16: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Définition d’un ABR

Définition

Un arbre binaire de recherche (ABR) est un arbre binairet.q. les n nœuds de l’arbre représentent les n éléments del’ensemble, et

pour tout nœud n

tous les nœuds du sous–arbre gauche, s’il en existe,ont une valeur inférieure ou égale à celle de n

tous les nœuds du sous-arbre droit, s’il en existe, ontune valeur(strictement)supérieure ou égale à celle de n

Une lecture symétrique donne les éléments dans l’ordrecroissant.Les sous–arbres gauche et droit sont aussi des ABR.

Page 17: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Définition d’un ABR

Définition

Un arbre binaire de recherche (ABR) est un arbre binairet.q. les n nœuds de l’arbre représentent les n éléments del’ensemble, et

pour tout nœud n

tous les nœuds du sous–arbre gauche, s’il en existe,ont une valeur inférieure ou égale à celle de n

tous les nœuds du sous-arbre droit, s’il en existe, ontune valeur(strictement)supérieure ou égale à celle de n

Une lecture symétrique donne les éléments dans l’ordrecroissant.Les sous–arbres gauche et droit sont aussi des ABR.

Page 18: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Définition d’un ABR

On considère l’ABR repéré par un pointeur sur sa racine. (Sile sous–arbre dans lequel on cherche es vide, alors échec.)

type abr = noeud*;

struct noeud{

item val;abr g,d;

}

Page 19: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Recherche dans un ABR

Principe de la recherche dans un ABR : comparer l’élémentcherché x à la valeur de la racine de l’arbre.

si x = val(A), alors succès

si x > val(A), alors recherche dans le sous–arbredroite d(A)

si x < val(A), alors recherche dans le sous–arbregauche d(A)

Page 20: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction aux feuilles

On compare l’élément à la racine pour savoir si l’ajout seradans le sous–arbre gauche ou droit et on rappelle laprocédure récursivement. Le dernier appel récursif se faitsur un arbre vide et on a alors à cette place le nœudcontenant l’élément à ajouter.

Page 21: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

On peut ajouter un élément à n’importe quel niveau, enparticulier à la racine.

L’adjonction à la racine peut présenter un intérêt si on désireprivilégier l’accès au(x) dernier(s) élément(s).

2 étapes : on coupe l’arbre A en A1 et A2 t.q. A1 contienneles éléments inférieurs à x et A2 les éléments supérieurs, etpuis on construit l’arbre.

Remarque : on ne visite que les nœuds situés sur le cheminsuivi lors de la recherche de X à partir de la racine.

Page 22: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

On peut ajouter un élément à n’importe quel niveau, enparticulier à la racine.

L’adjonction à la racine peut présenter un intérêt si on désireprivilégier l’accès au(x) dernier(s) élément(s).

2 étapes : on coupe l’arbre A en A1 et A2 t.q. A1 contienneles éléments inférieurs à x et A2 les éléments supérieurs, etpuis on construit l’arbre.

Remarque : on ne visite que les nœuds situés sur le cheminsuivi lors de la recherche de X à partir de la racine.

Page 23: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

On peut ajouter un élément à n’importe quel niveau, enparticulier à la racine.

L’adjonction à la racine peut présenter un intérêt si on désireprivilégier l’accès au(x) dernier(s) élément(s).

2 étapes : on coupe l’arbre A en A1 et A2 t.q. A1 contienneles éléments inférieurs à x et A2 les éléments supérieurs, etpuis on construit l’arbre.

Remarque : on ne visite que les nœuds situés sur le cheminsuivi lors de la recherche de X à partir de la racine.

Page 24: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

On peut ajouter un élément à n’importe quel niveau, enparticulier à la racine.

L’adjonction à la racine peut présenter un intérêt si on désireprivilégier l’accès au(x) dernier(s) élément(s).

2 étapes : on coupe l’arbre A en A1 et A2 t.q. A1 contienneles éléments inférieurs à x et A2 les éléments supérieurs, etpuis on construit l’arbre.

Remarque : on ne visite que les nœuds situés sur le cheminsuivi lors de la recherche de X à partir de la racine.

Page 25: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

void coupure(item x, abr A, abr& G, abr& D){

abr X, Y;if (A == null) then {

G = null; D = null;}else if x >= val(A) then {

coupure(x, d(A), X, Y);d(A) = X; G = A; D = Y;

}else {

coupure(x, g(A), X, Y);g(A) = Y; G = X; D = A;

}}

Page 26: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

void coupure(item x, abr A, abr& G, abr& D){

if (A == null) then {G = null; D = null;

}else if (x >= val(A)) then {

G = A;coupure(x, d(A), d(G), D);

}else {

D = A;coupure(x, g(A), G, g(D));

}}

Page 27: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Adjonction à la racine

void ajout_racine(item x, abr A){

abr R = new abr();val(R) = x;coupure(x, A, g(R), d(R));A = R;

}

Page 28: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Suppression dans un ABR

suppression d’une feuille : cas simple

suppression d’un nœud n’ayant qu’un fils : remettre lefils à la place

suppression d’un nœud ayant 2 fils : il faut chercherl’élément immédiatement supérieur ou inférieur(SUPMIN ou SUPMAX), l’échanger avec le nœud àsupprimer, et supprimer le nœud SUPMIN ouSUPMAX.

Page 29: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Analyse recherche/adjonction/suppression

RechercheDans le cas d’un succès = 2 * profondeur(x) + 1Dans le cas d’un échec = 2 * (profondeur(y) + 1)

Ajout aux feuilles : profondeur(y) + 1

Ajout à la racine : profondeur(y) + 1

Suppression : même que la recherche de x dans l’arbre+ complexité de supmax

Page 30: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Profondeur d’un nœud dans un ABR

Profondeur des arbres : entre 0 et n-1 (arbresdégénérés). Donc θ(n), la même que pour les listes.

Profondeur des arbres bien équilibrés : θ(log n).

Page 31: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Profondeur dans les ABR aléatoires

On considère que toutes les permutations des valeurs sontéquiprobables.

Exemple : n = 3.

On peut montrer que la profondeur moyenne dans un ABRest de l’ordre de log2(n).

Pour les nœuds internes PI(n) = 1(1 + 1n )Hn − 4.

Pour les nœuds externes PE(n) = 2Hn+1 − 2, oùHn =

∑ni=1

1n .

Page 32: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Complexité dans les ABR

maxrech+(n) = maxsupp(n) = 2n − 1

maxrech−(n) = 2n

maxajout(n) = n

moyrech+(n) = moysupp(n) = θ(log n) = 2PIn + 1

moyrech−(n) = 2PEn

moyajout(n) = PEn

Conclusion :

en moyenne θ(log n)

en pire θ(n)

Page 33: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Complexité dans les ABR

maxrech+(n) = maxsupp(n) = 2n − 1

maxrech−(n) = 2n

maxajout(n) = n

moyrech+(n) = moysupp(n) = θ(log n) = 2PIn + 1

moyrech−(n) = 2PEn

moyajout(n) = PEn

Conclusion :

en moyenne θ(log n)

en pire θ(n)

Page 34: Programmation avanc e - Chapitre 1 : Complexit et les ABR … · 2011-11-14 · Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) Mickaël Foursov1 1IFSIC Université

PROGCM1

MickaëlFoursov

Introduction

Complexité entemps d’unalgo

Diviser pourrégner

Divers

Les ABR

Recherche

Ajout auxfeuilles

Ajout à laracine

Suppression

Analyse

Complexité dans les ABR

maxrech+(n) = maxsupp(n) = 2n − 1

maxrech−(n) = 2n

maxajout(n) = n

moyrech+(n) = moysupp(n) = θ(log n) = 2PIn + 1

moyrech−(n) = 2PEn

moyajout(n) = PEn

Conclusion :

en moyenne θ(log n)

en pire θ(n)