Vous êtes sur la page 1sur 85

Algorithmique Avance et Complexit

Cours du Master Rseaux et Systmes Distribus 1re anne

Dr Amar ISLI
Dpartement dInformatique
Facult dElectronique et dInformatique
Universit des Sciences et de la Technologie Houari Boumedine
BP 32, El-Alia, Bab Ezzouar
DZ-16111 ALGER
Nouvelle page :
http://www.usthb.dz/perso/info/aisli
Ancienne page :
http://www.usthb.dz/fei-deptinfo/perso/aisli/amarisli.htm

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Problme et instance dun problme

Dfinition dun problme

Un problme est une description abstraite


laquelle est associe une question
ncessitant une rponse.

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Problme et instance dun problme

Exemple :

le problme du voyageur de commerce


ou TSP (Traveling Salesman Problem)

Description : un graphe (non orient)


G=<V,E> dont les artes sont tiquetes par
des cots. Les nuds correspondent aux
villes visiter, et le cot dune arte peut,
par exemple, correspondre la distance
sparant les deux villes quelle relie
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Problme et instance dun problme

Exemple :

06/01/2011

le problme du voyageur de commerce


Question : calcul dun cycle (i1,,in,i1) de cot minimal,
partant dune ville i1 et visitant chacune des autres
villes exactement une fois avant de revenir la ville de
dpart i1.

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Problme et instance dun problme
Instance dun problme

Une instance dun problme est une spcialisation du


problme obtenue en donnant une spcification exacte
des donnes

Exemple : une instance du TSP

G=<V,E> avec

06/01/2011

V={A,B,C,D}
E={(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)}
c(A,B)=2; c(A,C)=3; c(A,D)=5; c(B,C)=3; c(B,D)=1;
c(C,D)=1
Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Remarque

Un programme, qui est une implmentation dun


algorithme, est conu pour un problme donn
Une excution dun programme ncessite comme
entre une instance du problme associ ; en
sortie, lexcution fournit une rponse la
question associe au problme adapte
linstance en question

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Taille dun problme
La taille dun problme est la taille de lespace
mmoire ncessaire sa reprsentation ; elle est
mesure en fonction des donnes du problme

Exemple : dans le cas du TSP, les donnes sont

06/01/2011

Le nombre de villes visiter


Le nombre dartes
Les cots des diffrentes artes

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Taille dun problme

Une instance du TSP peut, par exemple, tre


reprsente par une matrice nxn, n tant le
nombre de villes visiter
Les lments dune telle matrice seront les cots
des diffrentes artes

06/01/2011

La matrice est symtrique : les lments (i,j) et (j,i) sont gaux


La diagonale de la matrice est 0 : les lments (i,i) valent 0
Si deux villes i et j ne sont pas relies par une arte, les
lments (i,j) et (j,i) seront mis +
Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Algorithme et complexit
Algorithme
Un algorithme est une suite finie
doprations lmentaires constituant
un schma de calcul ou de rsolution
dun problme

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

CHAPITRE I
Introduction
Algorithme et complexit
Complexit

06/01/2011

La complexit dun algorithme est la mesure du


nombre doprations lmentaires quil effectue
sur le problme pour lequel il a t conu
La complexit est mesure en fonction de la
taille du problme ; la taille tant elle-mme
mesure en fonction des donnes du problme
La complexit est par consquent mesure en
fonction des donnes du problme
Master1RSD->Algorithmique
Avance et Complexit

10

CHAPITRE I
Introduction
Complexit

Exemple :
dans le cas du TSP, la complexit va tre mesure
en fonction des donnes du problme, qui sont

06/01/2011

Le nombre de villes visiter


Le nombre dartes
Lespace ncessaire (en termes de bits par exemple)
pour la reprsentation du cot dune arte

Master1RSD->Algorithmique
Avance et Complexit

11

CHAPITRE I
Introduction
Complexit

Complexit au meilleur

Complexit en moyenne

Best-case complexity
Average-case complexity

Complexit au pire

06/01/2011

Worst-case complexity

Master1RSD->Algorithmique
Avance et Complexit

12

CHAPITRE I
Introduction
Notations de Landau

On ne mesure gnralement pas la


complexit exacte dun algorithme
On mesure son ordre de grandeur qui
reflte son comportement asymptotique,
cest-a-dire son comportement sur les
instances de grande taille

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

13

CHAPITRE I
Introduction
Notations de Landau
Besoin des notations asymptotiques de
Landau :

f=O(g) ssi il existe n0, il existe c0,


pour tout nn0, f(n)cxg(n)
f=W(g) ssi g=O(f)
f=o(g) ssi pour tout c0, il existe n0,
pour tout nn0, f(n)cxg(n)
f=Q(g) ssi f=O(g) et g=O(f)

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

14

CHAPITRE I
Introduction
Illustration

tri par insertion

06/01/2011

Entre : Un tableau de n nombres


Sortie : Le tableau tri par ordre croissant

Master1RSD->Algorithmique
Avance et Complexit

15

CHAPITRE I
Introduction
Illustration : tri par insertion
TRI-INSERTION{
Pour j=2 n{
cl= A[j]
i=j-1
Tant que i>0 et A[i]>cl{
A[i+1]=A[i]
i=i-1
}
A[i+1]=cl
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

16

CHAPITRE II
Conception dalgorithmes efficaces
A. Piles et files
Dfinition (pile) :

06/01/2011

Une pile est une structure de donnes


mettant en uvre le principe dernier entr
premier sorti
LIFO : Last In First Out

Master1RSD->Algorithmique
Avance et Complexit

17

CHAPITRE II
Conception dalgorithmes efficaces
Une pile P peut tre implmente par un tableau, et elle est caractrise par :

Un sommet not sommet(P) indiquant lindice de llment le plus


rcemment insr dans la pile

Un caractre spcial, comme $, initialisant la pile

Une procdure EMPILER(P,x)

Une fonction DEPILER(P)

Une fonction boolenne PILE-VIDE(P) retournant VRAI si et seulement


si P est vide
PILE-VIDE(P){
Si sommet(P)=$
alors retourner VRAI
sinon retourner FAUX
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

18

CHAPITRE II
Conception dalgorithmes efficaces
EMPILER(P,x){
Si sommet(P)=longueur(P)
alors erreur (dbordement positif)
sinon{
sommet(P)=sommet(P)+1
P[sommet(P)]=x
}
}
DEPILER(P){
Si PILE-VIDE(P)
alors erreur (dbordement ngatif)
sinon{
sommet(P)=sommet(P)-1
retourner P[sommet(P)+1]
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

19

CHAPITRE II
Conception dalgorithmes efficaces
A. Piles et files
Dfinition (file) :

06/01/2011

Une file est une structure de donnes mettant


en uvre le principe premier entr premier
sorti
FIFO : First In First Out

Master1RSD->Algorithmique
Avance et Complexit

20

CHAPITRE II
Conception dalgorithmes efficaces
Une file F peut tre implmente par un tableau, et elle est caractrise par :

Un pointeur tte(F) qui pointe vers la tte de la file (llment le plus


anciennement insr)

Un pointeur queue(F) qui pointe vers la premire place libre, o se fera


la prochaine insertion ventuelle dun lment

Initialement : tte(F)=NIL et queue(F)=1

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

21

CHAPITRE II
Conception dalgorithmes efficaces
FILE-VIDE(F){
si tte(F)=NIL
alors retourner VRAI
sinon retourner FAUX
}
INSERTION(F,x){
si [tte(F)NIL et queue(F)=tte(F)]
alors erreur (dbordement positif)
sinon{
F[queue(F)]=x
queue(F)=[queue(F)+1](modulo n)
si[tte(F)=NIL] alors tte(F)=1
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

22

CHAPITRE II
Conception dalgorithmes efficaces
SUPPRESSION(F){
si FILE-VIDE(F)
alors erreur (dbordement ngatif)
sinon{
temp=F(tte(F));
tte(F)=[tte(F)+1](modulo n);
si[tte(F)=queue(F)]{
tte(F)=NIL ;
queue(F)=1;
}
retourner temp;
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

23

CHAPITRE II
Conception dalgorithmes efficaces
A. Piles et files
EXEMPLES

06/01/2011

Pile dexcution
Automate pile : ancbn
Simulation de la file dattente dun magasin

Master1RSD->Algorithmique
Avance et Complexit

24

CHAPITRE II
Conception dalgorithmes efficaces
B. Listes chanes
Dfinition (liste chane) :

Une liste chane est une structure de donnes dont les lments sont
arrangs linairement, lordre linaire tant donn par des pointeurs sur les
lments

Un lment dune liste chane est un enregistrement contenant un champ


cl, un champ successeur consistant en un pointeur sur llment suivant
dans la liste

Si le champ successeur dun lment vaut NIL, llment est le dernier


lment de la liste, appel galement queue de la liste

Un pointeur TETE(L) est associ une liste chane L : il pointe sur le


premier lment de la liste

Si une liste chane L est telle que TETE(L)=NIL alors la liste est vide

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

25

CHAPITRE II
Conception dalgorithmes efficaces
B. Listes chanes
Exemple

Liste chane contenant initialement 20, 7 et 10

INSERTION(30)
SUPPRESSION(7)

Liste doublement chane


Liste chane trie
Liste chane circulaire (anneau)

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

26

CHAPITRE II
Conception dalgorithmes efficaces
B. Listes chanes

Algorithmes de manipulation de listes simplement


chanes

RECHERCHE-LISTE(L,k){
x=TETE(L);
tant que(x!=NIL et cl(x)!=k)x=successeur(x);
retourner x;
}
INSERTION-LISTE(L,X){
successeur(x)=TETE(L);
TETE(L)=x;
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

27

CHAPITRE II
Conception dalgorithmes efficaces
B. Listes chanes

Algorithmes de manipulation de listes simplement


chanes

SUPPRESSION-LISTE(L,X){
Si x=TETE(L) alors TETE(L)=successeur(x)
sinon{
y=TETE(L);
tant que successeur(y)<>x faire y=successeur(y);
successeur(y)=successeur(x);
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

28

CHAPITRE II
Conception dalgorithmes efficaces
C. Graphes

Graphe orient : couple (S,A), S ensemble fini (sommets) et A relation


binaire sur S (arcs)

06/01/2011

Boucle (arc reliant un sommet lui-mme)


Un arc (u,v) part du sommet u et arrive au sommet v
Degr sortant dun sommet : nombre darcs en partant
Degr entrant dun sommet : nombre darcs y arrivant
Degr=degr sortant+degr entrant
Chemin de degr k dun sommet u un sommet v : (u0,u1,,uk) u=u0 et v=uk
Chemin lmentaire
Circuit et circuit lmentaire
Graphe fortement connexe : tout sommet est accessible partir de tout autre sommet (par un
chemin)
Composantes fortement connexes dun graphe : classes dquivalence de la relation dfinie
comme suit sur lensemble des sommets : R(s1,s2) si et seulement si il existe un chemin de s1
vers s2 et un chemin de s2 vers s1

Master1RSD->Algorithmique
Avance et Complexit

29

CHAPITRE II
Conception dalgorithmes efficaces
C. Graphes

Graphe non orient :

06/01/2011

artes
Boucles interdites
Une arte (u,v) est incidente aux sommets u et v
Degr dun sommet : nombre dartes qui lui sont incidentes
Chane et chane lmentaire
Cycle et cycle lmentaire
Graphe acyclique
Graphe connexe : chaque paire de sommets est relie par une chane
Composantes connexes dun graphe : classes dquivalence de la relation dfinie comme suit
sur lensemble des sommets : R(s1,s2) si et seulement si il existe une chane de s1 vers s2

Master1RSD->Algorithmique
Avance et Complexit

30

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Fort :

graphe non orient acyclique

Arbre :

graphe non orient acyclique connexe (fort connexe)

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

31

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

G=(S,A) graphe non orient :


G arbre
G connexe et |A|=|S|-1
G acyclique et |A|=|S|-1
Deux sommets quelconques sont relis par
une une unique chane lmentaire

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

32

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Arbre enracin (rooted tree) :

un sommet se distingue des autres (la racine de larbre)


La racine dun arbre enracin impose un sens de parcours de
larbre
Pour un arbre enracin : sommets ou nuds
Anctre, pre, fils, descendant
Lunique nud sans pre : la racine
Nuds sans fils : nuds externes ou feuilles

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

33

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Nuds avec fils : nuds internes


Sous-arbre de racine x : larbre compos des
descendants de x, enracin en x
Degr dun nud : nombre de fils
Profondeur dun nud x : longueur du chemin entre
la racine et le nud
Hauteur dun arbre
Arbre ordonn

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

34

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Arbre binaire (description rcursive) :

Ne contient aucun nud (arbre vide)


Est form de trois ensembles disjoints de nuds : la racine ;
le sous-arbre gauche (arbre binaire) ; le sous-arbre droit
(arbre binaire)

Un arbre binaire est plus quun arbre ordonn


Arbre binaire complet
Arbre n-aire : degr dun nudn

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

35

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Parcours dun arbre ordonn

Parcours en profondeur dabord

06/01/2011

Descendre le plus profondment possible dans larbre


Une fois une feuille atteinte, remonter pour explorer les
branches non encore explores, en commenant par la
branche la plus basse
Les fils dun nud sont parcourus suivant lordre dfini
sur larbre
Master1RSD->Algorithmique
Avance et Complexit

36

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Parcours dun arbre ordonn

Parcours en profondeur dabord

PP(A){
Si Arbre(A) nest pas rduit larbre vide{
Pour tous les fils u de racine(A) faire dans lordre
PP(u)
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

37

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Parcours dun arbre ordonn

Arbre binaire

06/01/2011

Structure de donnes rcursive permettant


reprsentation
Type arbre-b{
valeur : entier;
sa-gauche : pointeur sur type arbre-b;
sa-droit : pointeur sur type arbre-b;
}
Master1RSD->Algorithmique
Avance et Complexit

sa

38

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Parcours dun arbre ordonn

Arbre binaire

Dclarer une variable pointeur sur type arbre-b,


qui va tre la racine de larbre :

Variable racine : pointeur sur type arbre-b;

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

39

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours en profondeur dabord dun arbre ordonn


Arbre binaire
PP(A){
Si ANIL{
PP(A.sa-gauche);
PP(A.sa-droit);
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

40

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours en profondeur dabord dun arbre ordonn


Arbre binaire
Prfixe(A){
Si ANIL{
Afficher(A.valeur);
Prfixe(A.sa-gauche);
Prfixe(A.sa-droit);
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

41

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours en profondeur dabord dun arbre ordonn


Arbre binaire
Infixe(A){
Si ANIL{
Infixe(A.sa-gauche);
Afficher(A.valeur);
Infixe(A.sa-droit);
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

42

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours en profondeur dabord dun arbre ordonn


Arbre binaire
Postfixe(A){
Si ANIL{
Postfixe(A.sa-gauche);
Postfixe(A.sa-droit);
Afficher(A.valeur);
}
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

43

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours en profondeur dabord dun arbre ordonn


Exemple

Utilisation dun arbre binaire pour le tri dun tableau par


ordre croissant : 50; 40; 45; 60; 30; 55; 44; 100

06/01/2011

A gauche si ; droite sinon


Parcours infixe de larbre pour laffichage du rsultat du tri

Master1RSD->Algorithmique
Avance et Complexit

44

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres
Parcours dun arbre ordonn

Parcours en largeur dabord

06/01/2011

Visiter tous les nuds de profondeur i avant de


passer la visite des nuds de profondeur i+1
Utilisation dune file

Master1RSD->Algorithmique
Avance et Complexit

45

CHAPITRE II
Conception dalgorithmes efficaces
D. Arbres

Parcours dun arbre ordonn

Parcours en largeur dabord

PL(A){
Si ANIL{
F=racine(A);
Tant que (non FILE-VIDE(F)){
u=SUPPRESSION(F);
//visiter le noeud
Pour tous les fils v de u (dans lordre) faire
INSERTION(F,v); //faire attendre le noeud
}
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

46

CHAPITRE II
Conception dalgorithmes efficaces
E. Parcours dun graphe

Initialement, tous les sommets sont blancs


Lorsquun sommet est rencontr pour la
premire fois, il est colori en gris
Lorsque tous les successeurs dun sommet,
dans lordre de parcours, ont t visits, le
sommet est colori en noir

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

47

CHAPITRE II
Conception dalgorithmes efficaces
E. Parcours dun graphe

Parcours en profondeur dabord


PP(G){
Pour chaque sommet u de G{
couleur[u]=BLANC;
}
Tant que G a des sommets blancs{
prendre un sommet blanc u;
VISITER-PP(G,u,couleur);
}
}

VISITER-PP(G,s,couleur){
couleur[s]=GRIS;
Pour chaque voisin v de s{si couleur[v]=BLANC{VISITER-PP(G,v,couleur);}}
couleur[s]=NOIR;
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

48

CHAPITRE II
Conception dalgorithmes efficaces
E. Parcours dun graphe

Parcours en largeur dabord dun graphe


PL(G,s){
couleur[s]=GRIS;
Pour chaque sommet us de G{couleur[u]=BLANC;}
F={s};
Tant que FF{
u=SUPPRESSION(F);
Tant que u a des voisins blancs{
prendre un voisin blanc v de u;
couleur[v]=GRIS;
INSERTION(F,v);
}
couleur[u]=NOIR;
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

49

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit

Rcursivit simple

La fonction puissance :
1

si n=0

x*xn-1

sinon

Xn =

Rcursivit multiple

Relation de Pascal donnant les combinaisons C(n,p) :


1

si p=0 ou p=n

C(n-1,p)+C(n-1,p-1)

sinon

C(n,p)=

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

50

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit

Rcursivit mutuelle
VRAI

si n=0

Pair(n)=
impair(n-1) sinon

FAUX

si n=0

impair(n)=
pair(n-1)

sinon

Rcursivit imbrique (la fonction dAckermann)


A(m,n)=

06/01/2011

n+1
A(m-1,1)
A(m-1,A(m,n-1))

si m=0
si m>0 et n=0
sinon

Master1RSD->Algorithmique
Avance et Complexit

51

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit
Exemple : les tours de Hano

Trois tiges A, B et C sur lesquelles sont enfils des


disques de diamtres tous diffrents
On peut dplacer un seul disque la fois
Il est interdit de poser un disque sur un autre
disque plus petit
Initialement, tous les disques sont sur la tige A
A la fin, tous sont sur la tige C

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

52

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit

Exemple : les tours de Hano


HANOI(n,x,y,z){//x, y et z : dpart, intermdiaire, destination
si n=1 alors dplacer topx vers z
sinon{ HANOI(n-1,x,z,y);
dplacer topx vers z;
HANOI(n-1,y,x,z);
}
fin-si
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

53

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit

Exemple : les tours de Hano

Complexit de lalgorithme en nombre de dplacements de disques :


1
si n=1

h(n) =
h(n-1)+1+h(n-1)
sinon

h(n)

si n=1

1+2xh(n-1)

sinon

h(n)=2n-1

h(n)=O(2n)=Q(2n)
Complexit exponentielle

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

54

CHAPITRE II
Conception dalgorithmes efficaces
F. Itrativit versus rcursivit

Il est toujours possible de drcursiver un algorithme (rcursif),


cest--dire de transformer un algorithme rcursif en un
algorithme itratif quivalent

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

55

CHAPITRE II
Conception dalgorithmes efficaces
G. Technique diviser pour rgner

Diviser le problme rsoudre en un certain nombre


de sous-problmes (plus petits)
Rgner sur les sous-problmes en les rsolvant
rcursivement :

Si un sous-problme est lmentaire (indcomposable), le


rsoudre directement
Sinon, le diviser son tour en sous-problmes

Combiner les solutions des sous-problmes pour


construire une solution du problme initial

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

56

CHAPITRE II
Conception dalgorithmes efficaces
G. Technique diviser pour rgner

Tri par fusion dun tableau


TRI-FUSION(A,p,r){
si p<r{
q=(p+r)/2;
TRI-FUSION(A,p,q);
TRI-FUSION(A,q+1,r);
FUSIONNER(A,p,q,r);
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

57

CHAPITRE II
Conception dalgorithmes efficaces
G. Technique diviser pour rgner
Tri par fusion dun tableau
FUSIONNER(A,p,q,r){
i=p;j=q+1;k=1;
tant que iq et jr{
si A[i]<A[j]

alors{C[k]=A[i];i=i+1;}
sinon{C[k]=A[j];j=j+1;}fsi

k=k+1;
}
tant que iq{C[k]=A[i];i=i+1;k=k+1;}
tant que jr{C[k]=A[j];j=j+1;k=k+1;}
Pour k=1 r-p+1{A[p+k-1]=C[k];}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

58

CHAPITRE II
Conception dalgorithmes efficaces
G. Technique diviser pour rgner
Tri par fusion dun tableau : complexit
Q(1) si n=1
T(n)=

2T(n/2)+ Q(n) sinon

T(n)=Q(n log n)

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

59

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Dfinition : Un arbre binaire de recherche est un arbre binaire
tel que pour tout nud x :
Tous les nuds y du sous-arbre gauche de x vrifient
clef(y)clef(x)
Tous les nuds y du sous-arbre droit de x vrifient
clef(y)>clef(x)

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

60

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Proprit : le parcours (en profondeur dabord) infixe dun arbre
binaire de recherche permet laffichage des cls des nuds par
ordre croissant
Infixe(A){
Si ANIL{
Infixe(A.sa-gauche);
Afficher(A.clef);
Infixe(A.sa-droit);
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

61

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Recherche dun lment :

la fonction rechercher(A,k) ci-dessous retourne le pointeur sur un nud


dont la cl est k, si un tel nud existe
elle retourne le pointeur NIL sinon

rechercher(A,k){
si (A=NIL ou A.clef=k) retourner A
sinon
si (kA.clef) rechercher(A.sa-gauche,k)
sinon rechercher(A.sa-droit,k)
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

62

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Minimum :

la fonction minimum(A) retourne le pointeur NIL si larbre dont la


racine est pointe par A est vide
sinon, elle retourne le pointeur sur un nud contenant la cl
minimale de larbre

minimum(A){
si (A=NIL) retourner A
sinon{
x=A;
tant que (x.sa-gaucheNIL) x=x.sa-gauche;
retourner x;
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

63

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Maximum :

la fonction maximum(A) retourne le pointeur NIL si larbre dont la


racine est pointe par A est vide
sinon, elle retourne le pointeur sur un nud contenant la cl
maximale de larbre

maximum(A){
si (A=NIL) retourner A
sinon{
x=A;
tant que (x.sa-droitNIL) x=x.sa-droit;
retourner x;
}
}
06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

64

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche
Insertion dun lment :

la fonction insertion(A,k) insre un nud de cl k dans larbre dont


la racine est pointe par A

Insertion(A,k){
crer nud z;z.clef=k;z.sa-gauche=NIL;z.sa-droit=NIL;
x=A;pre_de_x=NIL;
tant que (xNIL){
pre_de_x=x;
si (kx.clef) x=x.sa-gauche
sinon x=x.sa-droit
}
si (pre_de_x=NIL) A=z
sinon
si (kpre_de_x.clef) pre_de_x.sa-gauche=z
sinon pre_de_x.sa-droit=z
}

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

65

CHAPITRE III
Structures de donnes avances
A. Arbres binaires de recherche

Complexit des diffrentes fonctions :

rechercher(A,k), minimum(A), maximum(A), Insertion(A,k)

06/01/2011

Chacune des fonctions ncessite, dans le pire des cas, une et une seule
descente complte (sans retour arrire) dans larbre de recherche
En dautres termes, les nuds visits par chacune des fonctions sont
tous sur une unique branche allant de la racine vers une feuille
La complexit de chacune des fonctions est donc en O(h), h tant la
hauteur de larbre de recherche
Comme la hauteur est borne par n-1, la complexit est en O(n)

Master1RSD->Algorithmique
Avance et Complexit

66

CHAPITRE IV
NP-compltude
Problme

Description
Question

Instance dun problme

Une instance dun problme est une


spcialisation du problme obtenue en
donnant une spcification exacte des
donnes

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

67

CHAPITRE IV
NP-compltude
Le problme SAT

Description : une conjonction de m


clauses construites partir de n
propositions atomiques
Question : la conjonction est-elle
satisfiable ?

Instance du problme SAT

La conjonction pqprpqr

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

68

CHAPITRE IV
NP-compltude
Le problme PLUS-COURT-CHEMIN

Description : un graphe tiquet et deux sommets u et v


du graphe
Question : trouver le plus court chemin entre les sommets
u et v

Instance du problme PLUS-COURT-CHEMIN

Le graphe tiquet G=<V,E,c> avec

V={A,B,C,D}
E={(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)}
c(A,B)=2; c(A,C)=3; c(A,D)=5; c(B,C)=3; c(B,D)=1; c(C,D)=1

Les sommets A et C

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

69

CHAPITRE IV
NP-compltude
Problme abstrait

A un problme donn, on associe un autre


problme appel problme abstrait
Un problme abstrait associ un problme P
est dfini comme suit :

Entre : une instance du problme P


Sortie :

06/01/2011

une ou plusieurs solutions de linstance, si solution il y a


Inexistence de solution sinon

Master1RSD->Algorithmique
Avance et Complexit

70

CHAPITRE IV
NP-compltude
Problme de dcision

06/01/2011

La thorie de la NP-compltude se restreint aux


problmes dits de dcision
Un problme de dcision est un problme dont
chaque instance admet une unique solution, OUI
ou NON

Master1RSD->Algorithmique
Avance et Complexit

71

CHAPITRE IV
NP-compltude
Le problme SAT est un problme de
dcision

Description : une conjonction de m clauses


construites partir de n propositions atomiques
Question : la conjonction est-elle satisfiable ?

Instance du problme SAT

La conjonction pqprpqr

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

72

CHAPITRE IV
NP-compltude
Le problme CHEMIN est un problme de dcision

Description : un graphe tiquet, deux sommets u et v du


graphe, et un entier k
Question : existe-t-il un chemin du graphe reliant u v, de
longueur infrieure ou gale k ?

Instance du problme de dcision CHEMIN

Le graphe tiquet G=<V,E,c> avec

V={A,B,C,D}
E={(A,B),(A,C),(A,D),(B,C),(B,D),(C,D)}
c(A,B)=2; c(A,C)=3; c(A,D)=5; c(B,C)=3; c(B,D)=1; c(C,D)=1

Les sommets A et C
Lentier k=2

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

73

CHAPITRE IV
NP-compltude
Problmes doptimisation

Un problme doptimisation nest gnralement pas un


problme de dcision

Un problme doptimisation admet gnralement plus dune


solution

Mais on peut toujours associer un problme de dcision


un problme doptimisation

Exemple :

06/01/2011

Le problme doptimisation PLUS-COURT-CHEMIN


Le problme de dcision associ est le problme CHEMIN

Master1RSD->Algorithmique
Avance et Complexit

74

CHAPITRE IV :
NP-compltude
Codage

Codage dun ensemble S dobjets abstraits

Application e de S dans lensemble des chanes binaires


Ou, de faon gnrale, application de S dans lensemble des chanes
dun alphabet fini

Exemple :

06/01/2011

Codage des entiers sous forme binaire

Un algorithme conu pour rsoudre un problme de


dcision P prend en entre un codage dune instance de P

Master1RSD->Algorithmique
Avance et Complexit

75

CHAPITRE IV
NP-compltude
Problme concret

Problme dont les instances forment lensemble des


chanes dun alphabet binaire
Un algorithme rsout un problme concret en O(f(n)) si,
pour une instance i de taille n, lalgorithme fournit la
solution en O(f(n))
En dautres termes, un algorithme rsout un problme
concret en O(f(n)) sil existe un entier n01 et une
constante c 0 tels que :

pour toute instance i de taille n n0, le nombre T(n) doprations


lmentaires ncessaires lalgorithme pour fournir la solution de
linstance est born par c*T(n) :

06/01/2011

T(n)c*f(n)

Master1RSD->Algorithmique
Avance et Complexit

76

CHAPITRE IV
NP-compltude
La classe de complexit P

06/01/2011

La classe de complexit P est lensemble des problmes


concrets de dcision qui sont rsolubles en un temps
polynomial
Un problme concret est rsoluble en un temps
polynomial sil existe un algorithme permettant de le
rsoudre en O(nk), pour une certaine constante k

Master1RSD->Algorithmique
Avance et Complexit

77

CHAPITRE IV
NP-compltude
Fonction calculable en temps polynomial

06/01/2011

Une fonction f:{0,1}*{0,1}* est calculable en temps


polynomial sil existe un algorithme polynomial la
calculant, cest--dire produisant f(x), pour tout x{0,1}*.
Deux codages e1 et e2 dfinis sur un mme ensemble S
sont relis polynomialement sil existe deux fonctions
calculables en temps polynomial, f12 et f21, telles que pour
tout sS, f12(e1(s))=e2(s) et f21(e2(s))=e1(s)

Master1RSD->Algorithmique
Avance et Complexit

78

CHAPITRE IV
NP-compltude
La classe de complexit NP

Algorithme de validation :

Considrons linstance suivante de SAT :

pqprpqr
Si on considre une instanciation (b1,b2,b3) du triplet (p,q,r) de
propositions atomiques, on peut facilement vrifier si oui ou non elle
satisfait linstance. Et si elle la satisfait, linstanciation peut tre vue
comme un certificat que linstance du problme SAT est satisfiable
Soit Q un problme concret de dcision. Un algorithme de validation
pour Q est un algorithme de dcision A deux arguments, une
instance du problme Q, et un certificat y. Lalgorithme A valide
linstance x si et seulement si il existe un certificat y tel que
A(x,y)=vrai :

06/01/2011

A valide une instance x de Q si et seulement si la solution de x est OUI

Master1RSD->Algorithmique
Avance et Complexit

79

CHAPITRE IV
NP-compltude
La classe de complexit NP

La classe de complexit NP est lensemble des problmes concrets de


dcision pour lesquels il existe un algorithme polynomial de validation
NP : Non-dterministe Polynomial

Rductibilit :
Soient Q1 et Q2 deux problmes concrets. Q1 est
rductible en temps polynomial Q2 (Q1PQ2) sil existe
une fonction calculable en temps polynomial
f:{0,1}*{0,1}* telle que pour tout x{0,1}*:

06/01/2011

La solution de linstance x de Q1 est OUI


si et seulement si
la solution de linstance f(x) de Q2 est OUI
Master1RSD->Algorithmique
Avance et Complexit

80

CHAPITRE IV
NP-compltude
Problme NP-complet
Un problme Q est NP-complet si

1.

2.

QNP
QNP, QPQ

On note NPC la classe des problmes NP-complets


Un problme concret qui vrifie la proprit 2 mais
pas ncessairement la proprit 1 est dit NPdifficile

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

81

CHAPITRE IV
NP-compltude

Exemples de problmes NP-complets

Le problme SAT
Le problme 3-SAT
CYCLE HAMILTONIEN :

VOYAGEUR DE COMMERCE :

Existence dans un graphe tiquet dun cycle hamiltonien de cot minimal

CLIQUE :

Existence dans un graphe dun cycle hamiltonien

Existence dans un graphe dune clique (sous-graphe complet) de taille k

3-COLORIAGE DUN GRAPHE :


PARTITION :

06/01/2011

Peut-on partitionner un ensemble dentiers en deux sous-ensembles de mme


somme ?

Master1RSD->Algorithmique
Avance et Complexit

82

CHAPITRE IV
NP-compltude

Preuve de NP-compltude

Comment dmontrer quun problme est NP-complet ?

Thorme

Si Q1 est un problme tel que Q2PQ1 pour un certain problme Q2NPC,


alors Q1 est NP-difficile
Si, de plus, Q1NP, alors Q1NPC.

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

83

CHAPITRE IV
NP-compltude

Mthode pour montrer la NP-compltude dun problme Q1

Prouver que Q1NP


Choisir un problme NP-complet Q2
Dcrire un algorithme polynomial capable de calculer une fonction f faisant
correspondre toute instance de Q2 une instance de Q1
Dmontrer que la fonction f satisfait la proprit :

Q2(x)=oui si et seulement si Q1(f(x)) = oui

Dmontrer que lalgorithme calculant f sexcute en temps polynomial

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

84

CHAPITRE IV
NP-compltude

Montrer que le problme de 3-coloriage dun graphe est NP-complet ?

06/01/2011

Master1RSD->Algorithmique
Avance et Complexit

85

Vous aimerez peut-être aussi