UE3 : Algorithmes et
Complexité
Michel Van Caneghem
Décembre 2002
UE3 : Algorithme et Complexité #1 – 2002
Objectifs du cours
Les progrès des matériels informatiques et la complexité
des problèmes posés maintenant à l’Informatique de-
mandent une nouvelle analyse. Il faut donc :
Fournir les outils mathématiques nécessaires à l’analyse
des performances d’un algorithme.
Avoir une idée de ce qui est faisable et infaisable actuel-
lement.
Améliorer les performances des problèmes faciles.
Savoir comment aborder les problèmes difficiles.
UE3 : Algorithme et Complexité #1 – 2002 1
Le programme
Lun. 9 Déc. Introduction et rappels mathématiques sur les
limites et récurrences.
Jeu. 12 Déc. Hash-code et dictionnaires. [DEVOIR 1] [14h-16h]
Lun.16 Déc. Diviser pour régner : Les Tris.
Jeu.19 Déc. Le voyageur de commerce : Séparation et éva-
luation, le recuit simulé, méthode tabou, les
algorithmes génétiques. [DEVOIR 2]
Lun. 6 Jan. Diviser pour régner (2) : autres algorithmes.
Recherche de motifs dans un texte.
Jeu. 9 Jan. Initiation à la BioInformatique – Alignements
de séquences biologiques. [DEVOIR 3]
Lun.13 Jan. Les n-reines et les heuristiques
27-31 Jan. Examen
UE3 : Algorithme et Complexité #1 – 2002 2
La Note
Ce cours représente la moitié du cours UE3 (Coeff 1.3 –
ECTS 7). La Note sur 20 va être composée de 3 parties :
Un examen écrit sur 8 points.
Un premier devoir : Etude minutieuse du hachage (4
points), par binôme.
Un deuxième devoir : Localisation d’entrepôt et méthode
tabou (4 points), par binôme.
Un troisième devoir : Alignement de séquence en biolo-
gie (4 points), par binôme.
Les devoirs qui représentent, en gros, chacun 10h de travail
sont à rendre impérativement aux dates prévues
UE3 : Algorithme et Complexité #1 – 2002 3
Devoir 1 : Etude minutieuse du hachage
Ce devoir s’intéresse aux problèmes de consultation de dic-
tionnaire. On vous a beaucoup parlé des arbres, mais les
méthodes basées sur les tables de hachage (hash-code)
sont beaucoup plus performantes (c’est ce que je vous de-
mande de montrer), cependant elles utilisent beaucoup de
mémoire.
Cela va nous obliger à regarder de près certaines lois de
probabilité, qui justifient ces algorithmes.
Tout cela sera appliqué à la correction de l’orthographe d’un
texte de Proust avec un dictionnaire du français.
UE3 : Algorithme et Complexité #1 – 2002 4
Devoir 2 : Localisation d’entrepôt et méthode
tabou
Ce devoir concerne la résolution d’un problème difficile
(bien sûr NP-complet) : la localisation d’entrepôt.
Le problème posé est de choisir a quels endroits on doit ef-
fectivement construire les entrepôts pour minimiser le coût.
Je vous propose d’utiliser une méthode tabou pour ré-
soudre de manière approchée ce problème. Cela permet de
résoudre des problèmes réalistes : Une centaine de locali-
sation possible pour les entrepôts et un millier de clients,
en quelques secondes.
UE3 : Algorithme et Complexité #1 – 2002 5
Devoir 3 : Alignements de séquences en biologie
Ce devoir a pour but de programmer un algorithme qui
permet de comparer des séquences de lettre. Cet algo-
rithme est très utilisé pour comparer des séquences "bio-
logiques" : séquences d’ADN ou de protéines.
La programmation de cet algorithme demande un certain
soin.
On peut aussi utiliser cette méthode pour comparer deux
programmes : je me suis toujours dit que cela serait utile
pour comparer deux programmes faits par des binômes dif-
férents pour voir si ils ont copiés!!
UE3 : Algorithme et Complexité #1 – 2002 6
Les sujets de TER
A partir de sujets décrits dans ce cours je vais vous propo-
ser 3 sujets de TER (UE8). C’est un travail personnel (par
binôme) qui se fait du 12 Mai au 27 Juin 2003 (Coeff 2 –
ECTS 11).
TER 1 :
TER 2 :
TER 3 :
Ces TER vont se situer dans le domaine de la BioInforma-
tique
UE3 : Algorithme et Complexité #1 – 2002 7
La page Web du cours
Une page Web est consacré à ce cours elle contient :
le texte des transparents
le texte des TD
la description des devoirs
la description des TER et autre matériel
l’emploi du temps et ses modifications
Consultez la régulièrement
http ://www.dil.univ-mrs.fr/~vancan/mait
UE3 : Algorithme et Complexité #1 – 2002 8
Quelques Livres
Algorithms in C (Java) : Fundamentals, Data Structures, Sor-
ting, Searching de Robert Sedgewick (EUR 52,64)
The Art of Computer Programming de Donald Ervin Knuth
(EUR 142,14) – 3 volumes - Prochaine édition 2004.
Introduction à l’analyse des algorithmes de Robert Sedge-
wick, Philippe Flajolet (EUR 43,16)
Introduction to Computational Molecular Biology de Joao
Meidanis, Joao Carlos Setubal (EUR 111,31)
UE3 : Algorithme et Complexité #1 – 2002 9
Quelques rappels mathématiques
Le but est d’exprimer les performances d’un programme,
en quantité de mémoire et en temps d’exécution, à l’aide de
fonctions qui dépendent de la taille des données.
Notion de limites : quand nest grand.
Relations de récurrences.
Notions de combinatoire.
Eléments de théorie des graphes.
UE3 : Algorithme et Complexité #1 – 2002 10
Limites
Il faut comparer les taux d’accroissement de différentes
fonctions qui mesurent les performances d’un programme.
Notation “o” : On dit que f(x) = o(g(x)) pour x→ ∞ si
lim
x→∞
f(x)
g(x)= 0
Ce qui veut dire que fcroît plus lentement que gquand x
est très grand. Par exemple :
x2=o(x5) sin x=o(x)
14.709x=o(x/2 + 7 cos x) 23 log x=o(x0.002)
UE3 : Algorithme et Complexité #1 – 2002 11
Limites (2)
Règle de l’Hôpital : Si on a une forme indeterminée /
alors :
lim
x→∞
f(x)
g(x)= lim
x→∞
f0(x)
g0(x)
Notation “O” : On dit que f(x) = O(g(x)) s’il existe ket x0
tels que :
x > x0f(x)< kg(x)
La notation oest plus précise que O, mais Oest plus facile
à calculer et suffisant. Par exemple :
sin x=O(x) sin x=O(1)
UE3 : Algorithme et Complexité #1 – 2002 12
Limites (3)
Notation “” : On dit que f(x)g(x)si :
lim
x→∞
f(x)
g(x)= 1
Par exemple :
(3x+ 1)481x42x+ 7 log x+ cos x2x
UE3 : Algorithme et Complexité #1 – 2002 13
Un classement des fonctions
Groupe 1 : log log x, log x, log2x
Groupe 2 : x0.2, x, , x2, x15 log x
Groupe 3 : ex,1.03x,2x
Groupe 4 : n!, nn,2x2
RAPPELS :
axay=ax+y,(ax)y=axy, ax=exlog a
UE3 : Algorithme et Complexité #1 – 2002 14
Remarque
2 16 64 256
log log n0 2 2.58 3
log n1 4 6 8
n2 16 64 256
nlog n2 64 384 2048
n24 256 4096 65536
2n4 65536 1.84467e+19 1.15792e+77
n!2 2.0923e+13 1.26887e+89 8.57539e+506
UE3 : Algorithme et Complexité #1 – 2002 15
Calcul de sommes
Pour calculer la limite de :
F(n) =
n
X
i=1
f(i)
On remplace ce calcul par celui des intégrales suivantes :
Zn
0
f(t)dt F(n)Zn+1
1
f(t)dt
Bien sur si fest une fonction croissante. Quelques
exemples :
F(n) =
n
X
i=1
ip
On trouve : np+1
p+ 1 F(n)(n+ 1)p+1 1
p+ 1
UE3 : Algorithme et Complexité #1 – 2002 16
Calcul de sommes (2)
Pour calculer n!:
n! =
n
Y
i=1
ilog n! =
n
X
i=1
log i
On sait que la primitive de log xest xlog xx. On a donc :
nlog nnlog n!(n+ 1) log(n+ 1) n
Ce qui donne :
(n
e)nn!(n+ 1)n+1
en
UE3 : Algorithme et Complexité #1 – 2002 17
Formulaire
Formule de Stirling :
n! = (n
e)n2πn(1 + 1
12n+23
288n2+. . . )
Quelques sommes connues :
1xn
1x=
n1
X
i=0
xiex=
X
i=0
xi
i!
mais aussi :
1
1x=
X
i=0
xilog 1
1x=
X
i=1
xi
i
UE3 : Algorithme et Complexité #1 – 2002 18
Formulaire (2)
Série harmonique :
Hn=
n
X
i=1
1
i= log n+γ+ 0(1
n)
ou γ= 0,57721.
Un excellent formulaire ou vous avez toutes les formules de
mathématiques dont vous avez besoin se trouve à l’adresse
suivante : http ://www.csc.lsu.edu/~seiden/cheat.pdf
UE3 : Algorithme et Complexité #1 – 2002 19
Relations de récurrence
Relations du premier ordre
La solution de : xn=bnxn1avec x0donné est :
xn=x0
n
Y
i=1
bi
de manière plus générale la solution de : xn=bnxn1+cn
avec x0donné est :
xn= (
n
Y
i=1
bi)(x0+
n
X
i=1
di)
avec : di=ci
Qi
k=1 bk
UE3 : Algorithme et Complexité #1 – 2002 20
Relations de récurrence (2)
Un exemple :
xn+1 = 3xn+n, x0= 0
On calcule : x1= 0,x2= 1,x3= 5. On pose : xn= 3nynet
cela donne :
yn+1 =yn+n
3n+1, y0= 0
et donc :
yn=
n1
X
i=0
i
3i+1 =1
3n
3n2n1
4
et finalement :
xn=3n2n1
4
On vérifie : x1= 0,x2= (9 5)/4 = 1,x3= (27 7)/4 = 5
UE3 : Algorithme et Complexité #1 – 2002 21
Récurrence du second ordre
Pour trouver les solutions de :
xn+1 =axn+bxn1, x0, x1
On calcule les racines α1et α2du polynôme caractéris-
tique : x2=ax +bet on a :
xn=C1αn
1+C2αn
2
On trouve les constantes en résolvant le système linéaire
suivant : x0=C1+C2
x1=C1α1+C2α2
Si la racine est doubles alors les solutions sont de la forme
suivante : xn=αn(C1 + C2n)
UE3 : Algorithme et Complexité #1 – 2002 22
Récurrences du second ordre (2)
Appliquons le travail précédent aux nombres de Fibonnaci :
Fn+1 =Fn+Fn1, F0=F1= 1
Soit φ1= (1 + 5)/2et φ2= (1 5)/2les racines de l’équa-
tion caractéristique x2=x+ 1. On trouve :
Fn=5
5(φn+1
1φn+1
2)
Quand nest grand, cela est équivalent à :
Fn=5
5φn+1
1= 0.724 ×1.618n
On trouve F100 = 6 ×1020
UE3 : Algorithme et Complexité #1 – 2002 23
Récurrences du second ordre (3)
Reprenons : xn+1 = 3xn+n, x0= 0. On peut écrire :
xn+1 = 3xn+n
xn+2 = 3xn+1 +n+ 1
d’ou : xn+2 4xn+1 + 3xn= 1
et : xn+3 5xn+2 + 7xn+1 3xn= 0
Le polynôme caractéristique est : x35x2+ 7x+3=0=
(x1)2(x3) et la solution générale est :
xn=C1+C2n+C33n
avec C1=1/4, C2=1/2, C3= 1/4.
UE3 : Algorithme et Complexité #1 – 2002 24
Les séries génératrices
Soit une suite : u0, u1, ..., un, ...
On lui fait correspondre la série formelle (dite génératrice) :
u() =
X
n=0
unn
un= 1 =1
1= 1 + +2+··· +n+. . .
un=cn=1
1c= 1 + c+c22+··· +cnn+. . .
un=n=
(1 )2=+ 22+··· +nn+. . .
UE3 : Algorithme et Complexité #1 – 2002 25
Les séries génératrices (2)
Méthode que nous allons voir sur un exemple :
un+3 = 5un+2 8un+1 + 4un, u0= 0, u1= 1, u2= 2
Considérons le polynôme réciproque du polynôme caracté-
ristique : B(X) = 1 5X+ 8X24X3
et calculons : u(X)B(X) =
(1 5X+ 8X24X3)(u0+u1X+u2X2+. . . ) = X3X2
UE3 : Algorithme et Complexité #1 – 2002 26
Les séries génératrices (3)
u(X) = X3X2
15X+ 8X24X3=2
1X+2.5
12X+0.5
(1 2X)2
2
1X=2(1 + X+X2+··· +Xn+. . . )
2.5
12X= 2.5(1 + 2X+ 4X2+··· + 2nXn+. . . )
0.5
(1 2X)2=0.5(1 + 4X+ 12X2+··· + (n+ 1)2nXn+. . . )
d’ou le total :
u(X) = X+ 2X2+··· + (2 + 2.5×2n0.5(n+ 1)2n)Xn+. . .
et enfin : un= 2n+1 n2n12
UE3 : Algorithme et Complexité #1 – 2002 27
Les séries génératrices (4)
Considérons la suite :
un+1 3un=n=vn, u0= 0
On a :
v(X) = 0 + 1X+ 2X2+··· +nXn+··· =X
(1 X)2
on en déduit : u(X)
X3u(X) = X
(1 X)2
et : u(X) = X2
(1 3X)(1 X)2
UE3 : Algorithme et Complexité #1 – 2002 28
Les séries génératrices (5)
X2
(1 3X)(1 X)2=1/4
(1 X)+1/2
(1 X)2+1/4
(1 3X)
d’ou :
un=1
41
2(n+ 1) + 1
43n
UE3 : Algorithme et Complexité #1 – 2002 29
Une inéquation de récurrence
Considérons la suite :
xn+1 xn+xn1+n2
On va montrer par récurrence que xnKαn. Pour tout t > 0
posons α2α1 = t(par exemple t= 0.01).
En considérant la récurrence :
xn+1 Kαn+Kαn1+n2=Kαn1(α+ 1) + n2
xn+1 Kαn+1 (tKαn1n2)
Il faut donc que K > max n2
n1
UE3 : Algorithme et Complexité #1 – 2002 30
Une inéquation de récurrence (2)
Avec t= 0.01, on trouve α= 1.622497216. Traçons alors la
courbe : f(x) = x2
x1.
0
50
100
150
200
250
300
350
10 20 30 40
x
d’ou xn=O(αn) = O((φ+)n), φ = 1.618033989
UE3 : Algorithme et Complexité #1 – 2002 31
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !