• Aucun résultat trouvé

Algorithmique IN102-01

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithmique IN102-01"

Copied!
4
0
0

Texte intégral

(1)

Algorithmique IN102-01

Michel Mauny

ENSTA

Pr´[email protected]

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 1 / 1

1 Pr´eliminaires Organisation

´Evaluation, supports de cours Objectifs

2 Cours 1 – Notions de complexit´e Algorithmes et mesures de complexit´e Suite de Fibonacci

Algorithmes de tri Efficacit´e

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 2 / 1

Groupes

Deux types de groupes : Groupes«A»et«B»

Mˆemes exigences, mˆeme ´evaluation Seuls les TD/PC diff`erent

Les groupes B1,2(resp. B3,4) dans des salles attenantes

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 3 / 1

Programme

02/12 Complexit´e [PC]

09/12 Structures de donn´ees simples 16/12 Recherche en table [PC]

— —

— — 06/01 Arbres 13/01 Graphes

20/01 Analyse syntaxique [PC]

27/01 Contrˆole

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 4 / 1

Evaluation, supports de cours ´

Contrˆole de 3 heures le 27 janvier 2006

petits exercices (fonctions de 10 lignes — voir `a la fin du poly) documents de cours autoris´es

Supports de cours

Poly de Guillaume Poupard Planches

Sujets de PC/TP

Page web `ahttp://www.mauny.net/cours/ensta/algo/

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 5 / 1

Objectifs

Motivation : prendre du recul par rapport `a la programmation identification du probl`eme

recherche d’un algorithme analyse de complexit´e mise en œuvre

D´efinition du terme«algorithme»

Suite d’op´erations ´el´ementaires constituant un sch´ema de calcul ou de r´esolution d’un probl`eme

(Petit Larousse)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 6 / 1

Complexit´ e d’algorithmes

But : mesurer l’efficacit´eintrins`equed’un algorithme en fonction de la taille des donn´ees `a traiter

par d´enombrement d’op´erations ´el´ementaires repr´esentatives mesure asymptotique

complexit´e dans le cas le pire ou en moyenne complexit´e temporelle ou spatiale

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 7 / 1

Exemple classique : le tri

But : trier un tableau denentiers d´enombrement des comparaisons

performance des algorithmes ´el´ementaires :«de l’ordre de»n2 comparaisons

algorithmes plus sophistiqu´es font passer den2`an×log(n)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 8 / 1

(2)

Notations de complexit´ e

D´efinitions :

f(n) =O(g(n))ssi0≤f(n)≤c×g(n) f(n) = Θ(g(n))ssic×g(n)≤f(n)≤c0×g(n) Exemples :

n2+ 3n+ 1 = Θ(n2) = Θ(50n2+ 12345) n/ln(n) =O(n)

50n10=O(n10,01) 2n=O(exp(n)) exp(n) =O(n!)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 9 / 1

Hi´ erarchie de fonctions

On peut ´etablir une hi´erarchie entre les fonctions usuelles : log(n)√

nnn2n32nexp(n)n!

log(n) 3,3 6,6 10

p(n) 3,1 10 32

n 10 100 1000

n×log(n) 33 664 104

n2 100 104 106

n3 103 106 109

2n 103 1030 10300

exp(n) 2×104 1043 10434

n! 3,6×106 10158 102568

Note : nombre de particules dans l’univers≈1080.

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 10 / 1

Suite de Fibonacci, version 1

F0=F1= 1

Fn=Fn−1+Fn−2sin >1 1, 1, 2, 3, 5, 8, 13, 21, 34, . . . Code r´ecursif en C

intfibo1(intn){ if (n≤1)

return1;

else

returnfibo1(n−1)+fibo1(n−2);

}

Complexit´e :Θ(((1 +√ 5)/2)n)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 11 / 1

Suite de Fibonacci, version 1

Calcul deF5

.....................

........

........

........

........

........

......

K F0

F1

F2

.....................

........

........

........

........

........

......

K

.....................

........

........

........

........

........

......

K

F0

F1

F2

F3

F1

@

@@ I

.....................

........

........

........

........

........

......

K

.....................

........

........

........

........

........

......

K *

H H H H Y F4

F1 F0

F2 F1

F5

F3

Complexit´e :Θ(((1 +√ 5)/2)n)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 12 / 1

Suite de Fibonacci, version 2

Calcul deF8

F0 F1 F2 F3 F4 F5 F6 F7 F8

1 1 2 3 5 8 13 21 34

Complexit´eΘ(n) Complexit´e spatialeΘ(n)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 13 / 1

Suite de Fibonacci, version 2

Code it´eratif en C, avec tableau auxiliaire

intfibo2(intn){ int∗t;inti,intres;

t=newint[n+1];

t[0] = 1;t[1] = 1;

for(i=2;i≤n;i++) t[i] =t[i−1]+t[i−2];

res=t[n];free(t);

returnres;

}

Complexit´eΘ(n) Complexit´e spatialeΘ(n)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 14 / 1

Suite de Fibonacci, version 3

Calcul deF8 -

- -

1 1 2

F2 F3 F4

2 3 5

1 2 3 F5 F6 F7 F8

8 13 21 34

3 5

F4

Complexit´eΘ(n)

Complexit´e spatialeΘ(1)(constante)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 15 / 1

Suite de Fibonacci, version 3

Code it´eratif en C, espace constant

intfibo3(intn){ intf1,f2,t,i;

f1=1;f2=1;

for(i=2;i≤n;i++){ t=f2;f2=f1+f2;f1=t;

} returnf2; }

Complexit´eΘ(n)

Complexit´e spatialeΘ(1)(constante)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 16 / 1

(3)

Suite de Fibonnacci, version 4

Fn+1 = 1×Fn+ 1×Fn−1 Fn = 1×Fn+ 0×Fn−1

Fn

Fn−1

= 1 1

1 0

× Fn−1

Fn−2

= 1 1

1 0 n−1

× F1

F0

On se ram`ene `a un probl`eme«d’exponentiation matricielle»(voir PC)

Complexit´e :Θ(log(n))

Complexit´e spatiale :Θ(1)(constante)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 17 / 1

Pratique et th´ eorie sont d’accord

Temps de calcul

n 40 5.107 2.108 2.109 fibo1(n) 31 s calcul irr´ealisable fibo2(n) 0 s 18 s erreur d’ex´ecution fibo3(n) 0 s 4 s 19 s 3 min 15 s fibo4(n) 0 s 0 s 0 s 0 s

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 18 / 1

Le tri

But : trier un tableau den´el´ements (entiers, par exemple) D´enombrement de comparaisons

Algorithmes ´el´ementaires enO(n2)

Algorithmes plus sophistiqu´es font passer deO(n2)`aO(n×log(n))

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 19 / 1

Tri par insertion

Tri du tableautabdenentiers

voidtriInsertion(int∗tab,intn){ inti,j,clef;

for(i=1;i<n;i++){ clef=tab[i];j=i−1;

while( (j≥0) && (tab[j]>clef) ){ tab[j+1] =tab[j];j=j−1;} tab[j+1]=clef;}

}

L’´el´ement au rangkest rang´e parmi sesk−1pr´ed´ecesseurs.

Complexit´eΘ(n2)dans le cas le pire : tableau inversement tri´e Complexit´eΘ(n2)en moyenne.

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 20 / 1

Le tri par fusion

Diviser,(diviser, (...), et fusionner), et fusionner

......

R

.. . .. .. . .. . .. . .. .. . .. .

.. . .. .. . .. . .. . .. .. . .. .......

R

@

@@R

.. .. . .. . .. .. . .. . .. .. .

.. .. . .. . .. .. . .. . .. .. ...... .

R

......

R

@

@ R

Tri r´ecursif ... ...

...

...

Fusion r (p+r)/2 p

p r

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 21 / 1

Tri par fusion

Tri du tableautabentre les indicespetr

voidtriFusion(int∗tab,intp,r){ if (p<r){

intq= (p+r)/2;

triFusion(tab,p,q);

triFusion(tab,q+1,r);

fusion(tab,p,q,r);

}

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 22 / 1

Tri rapide (quicksort)

Quicksort : tri r´ecursif bas´e sur un partitionnement.

Tri du tableautabentre les indicespetr

voidtriRapide(int∗tab,intp,r){ if (p<r){

intq=partitionner(tab,p,r);

triRapide(tab,p,q−1);

triRapide(tab,q+1,r);

}

Complexit´e dans le cas le pire :Θ(n2) Complexit´e en moyenne :Θ(n×log(n))

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 23 / 1

Complexit´ e compar´ ee

Algorithme Cas le pire En moyenne Tri par insertion

Tri `a bulle Θ(n2) Θ(n2)

Tri rapide Θ(n2) Θ(n×log(n)) Tri par fusion Θ(n×log(n)) Θ(n×log(n))

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 24 / 1

(4)

Th´ eorie et pratique sont d’accord

Temps de calcul :

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 25 / 1

Th´ eorie et pratique sont d’accord

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 26 / 1

Th´ eorie et pratique. . .

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 27 / 1

Th´ eorie et pratique. . .

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 28 / 1

Exemple : produit matriciel

But : multiplier 2 matricesn×n

D´enombrement des additions et multiplications entre ´el´ements de base Algorithmes ´el´ementaires enO(n3)

Algorithmes tr`es sophistiqu´es enO(n2,376)

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 29 / 1

Qu’est-ce qu’un algorithme efficace ?

Complexit´e en moyenne Complexit´e dans le pire des cas Facilit´e de mise en œuvre Efficacit´e en pratique Algorithmes hybrides

Michel Mauny (ENSTA) Algorithmique IN102-01 Pr´[email protected] 30 / 1

Références

Documents relatifs

Syntaxe.- Pour multiplier deux octets, l’un des op´erandes doit ˆetre plac´e dans le registre AL et l’autre op´erande doit dans un un registre de un octet ou un emplacement

[r]

[r]

[r]

VRAI ou FAUX ? Les applications suivantes sont des formes lin´ eaires sur un espace vectoriel :.. 1. Montrer que φ est

Pour chacun des items suivants, choisir la bonne r´eponse parmi celles qui sont propos´ees. Et puisque vous ˆetes d´esormais en pr´epa : v´erifiez que vous ˆetes capable de

[r]

Suite d’op´ erations ´ el´ ementaires constituant un sch´ ema de calcul ou de r´ esolution d’un probl` eme.