• Aucun résultat trouvé

corrigé

N/A
N/A
Protected

Academic year: 2022

Partager "corrigé"

Copied!
4
0
0

Texte intégral

(1)

Preuve et Analyse des Algorithmes corrig´e

12 juin 2013

1. Temps de calcul. Une implantation d’un algorithme de temps de calculn√

n traite une instance de taille n = 64 en 8 micro-secondes.

1. Quel sera le temps de calcul pour une instance de taille 512 ? T(512) =T(8×64) = 8√

8T(64) = 128√

2∼180µsec 2. Donner un exemple d’algorithme ayant cette complexit´e.

Nous en avons vu un seul : algorithme de Karatsuba.

2. Comparaison des algorithmes de tris. Pour un entier n, et algorithme de tri X, on note :

tX(n) = T¯X(2n)

X(n) , vX(n) = V¯X(2n) V¯X(n)

o`u ¯TX(n) (respectivement ¯VX(n)) d´esigne la moyenne du temps de calcul (respectivement du volume de m´emoire auxiliaire) utilis´e pour le traitement parX d’une instance de taille n.

Attention, l’espace occup´e par le tableau `a trier ne doit pas ˆetre comptabilis´e dans le calcul du volume de m´emoire.

1. D´eterminer tL(n), tR(n), tS(n) pour les algortihmes de tri : lin´eaire, rapide (quick- sort), et s´election.

tL(n) = 2n

n = 2, tR(n) = 2nlog(2n)

nlogn = 2 +2 log 2

logn , tS(n) = 4n2 n2 = 4.

2. D´eterminer les fonctions vX(n) pour les mˆemes algorithmes.

vL(n) = 2n

n = 2, vR(n) = log(2n)

logn = 1 + log 2

logn, vS(n) = 1 1 = 1.

3. Quelles conclusions tirer de ces petits calculs ?

Le tri rapide est le meilleur compromis temps/m´emoire.

1

(2)

typedef s tr u c t { double r e a l , img ; } cmp ;

cmp K prd ( cmp x , cmp y ) { cmp p ;

double r , i , t ;

t = ( x . img + x . r e a l )

∗ ( y . r e a l + y . im ) ; i = x . img ∗ y . img ; r = x . r e a l ∗ y . r e a l ; p . img = r − i ;

p . r e a l= s − r − i ; return p ;

}

3. Optimisation `a la Karatsuba.

1. Que calcule la fonction prd?

Elle calcule le produit de deux nombres complexes.

2. S’inspirer de la m´ethode de Karat- suba pour utiliser une multiplication de moins.

3. On suppose que pour deux double, le temps de multiplication estλ-fois plus important que celui d’une addition ou d’une soustraction. Comparer les per- formances en fonction de λ.

On n´eglige les temps d’affectation.

L’algorithme standard `a un coˆut de 4λ+ 2 additions. L’algorithme modifi´e a un coˆut de 3λ+ 5 additions, il est plus int´eressant d`esλ >3.

4. Implantation du tri lin´eaire.

On suppose une implanation du trilin´eaire en langage C typedef unsigned long long u l l o n g ;

void t r i l i n ( u l l o n g ∗t , u l l o n g n ) ; 1. Quelles sont les pr´econditions d’utilisation ?

Il faut utiliser un tableau auxiliaire de taille n, les valeurs du tableau `a trier sont inf´erieures `an.

2. Estimer le temps de calcul d’une instance de taille 220 sur la machine obelix.

Les op´erations mises en jeu sont simple, on peut estimer utiliser une centaine d’op´erations ´el´ementaires par it´eration. Vu la fr´equence d’horloge, je propose un temps de calcul de l’ordre de

220×27

3000×106 ∼ 227 231 = 1

16sec 3. pour la taille 224?

16 fois plus, soit 1 seconde.

4. pour la taille 226? 64 fois plus soit 1 minute. Notons que le programme utilisera 227×23 = 230 octets de m´emoire. Il y a un risque important de dysfonctionnement m´emoire (swap) !

2

(3)

[ drm@obelix exam−12] $ l s c p u

A r c h i t e c t u r e : i 6 8 6 Mode : 32−b i t V i t e s s e p r o c . en MHz: 3 0 0 0 . 0 0 0 [ drm@obelix exam−12] $ f r e e −b

t o t a l use d f r e e s h a r e d Mem: 1 5 8 2 9 3 1 9 6 8 8373 98528 745 533440 0

−/+ b u f f e r s / c a c h e : 389427200 1 1 9 3 5 0 4 7 6 8 Swap : 3 1 8 7 6 6 6 9 4 4 0 31 8 7 6 6 6 9 4 4

[ drm@obelix exam−12] $ e c h o ’ l ( 1 5 8 2 9 3 1 9 6 8 ) / l ( 2 ) ’ | bc −l 3 0 . 5 5 9 9 5 2 1 0 5 9 6 2 8 4 1 0 9 7 5 6

Fig. 1 – capacit´es de la machine obelix 5. Analyse d’une fonction r´ecursive.

On note K(n), le nombre de comparai- sons r´ealis´ees par la fonction r´ecursiveproc quand elle est appliqu´ee `a un tableau de n entiers.

1. Donner une formule r´ecursive du temps de calcul.

Il existe une constante K telle que, pour n >1,

K(n) = 2K(n/2) +K, 2. DonnerK(n) en fonction de n.

lin´eaire

3. M´ezaufait, que fait cete fonction ? recherche r´ecursive de minimum.

1 i n t p r o c ( i n t∗ t , i n t n )

{ i n t x , y , p ; 2

3 i f ( n > 1 ) {

4 p = n / 2 + ( n & 1 ) ;

5 x = p r o c ( t , n/2 ) ;

6 y = p r o c ( t + n / 2 , p ) ;

7 i f ( x > y ) x = y ;

} 8

9 e l s e x = ∗t ;

10 return x ;

} 11

6. Ordre d’une permutation. On consid`ere les permutations de l’ensemble{0,1, . . . , n−

1}. Une permutationπ est repr´esent´ee naturellement par un tableau de taillen. Pour un entier x < n, on d´efinit la suite d’entiers (xn)n≥0

x0 :=x, ∀n >0 xn=π(xn−1),

on note alors r(x) le plus petit entier strictement positif tel que x0 =xr(x). L’ordre de π est le ppcm des valeurs de r, un tel ppcm peut ˆetre calcul´e de mani`ere it´erative :

ppcm(a1, a2, a3, . . .) = ppcm(ppcm(ppcm(a1, a2), a3), . . .)

1. D´eterminer les valeurs der, puis l’ordre de la permutation, correspondant au tableau de taille 15 :

0 2 4 6 1 10 12 14 8 3 5 7 9 11 13

On calcule les images suc´essives : 0 → 0 i.e. r(0) = 1, 1 → 2 → 4 → 1 i.e.

r(1) = 3, 3 → 6 → 12 → 9 → 3 i.e. r(3) = 4, 5 → 10 → 5 i.e. r(5) = 2, 7→14→13→11→73 i.e. r(7) = 4, 8 →8 i.e.r(8) = 1. Le PPCM vaut 12.

2. L’entierr(x) est effectivement bien d´efini, pourquoi ?

La suite xn prend un nombre fini de valeurs, il existe i < j tels que xi = xj, et, commme π est une bijection, πj−i(x0) = x0.

3

(4)

3. Ecrire une fonction ordre(p, n) qui calcule l’ordre de la permutation p.

1 i n t o r d r e ( i n t∗ p , i n t n )

{ i n t r e s = 1 , r ; 2

3 i n t vu [ n ] ;

4 i n t x , y ;

5 f o r( x = 0 ; x < n ; x++ )

6 vu [ x ] = 0 ;

7 f o r( x = 0 ; x < n ; x++ )

8 i f ( ! vu [ x ] ) {

9 r = 0 ;

10 y = x ;

11 do {

12 y = p i [ y ] ;

13 vu [ y ] = 1 ;

14 r ++;

} while ( y!=x ) ; 15

16 r e s = ppcm ( r e s , r ) ;

} 17

18 return r e s ;

} 19

4

Références

Documents relatifs

On effectue l’addition (ou la soustraction) comme on le ferait avec des nombres entiers. Dans le résultat, on n’oublie pas de placer la virgule sous les autres virgules..  Dans

[r]

Multiplications : calcul et propriétés Explication entiers. Exemple

On suppose que pour deux double, le temps de multiplication est λ-fois plus important que celui d’une addition ou d’une soustraction2. Comparer les per- formances en fonction

questions flash du LMS95 a propos´ e en plusieurs fois ` a leurs ´ el` eves 6 s´ eries compos´ ees de 5 ou 6 questions chacune pour leur permettre de mettre en place la somme,

questions flash du LMS95 a propos´ e en plusieurs fois ` a leurs ´ el` eves 6 s´ eries compos´ ees de 5 ou 6 questions chacune pour leur permettre de mettre en place la somme,

 Le plus grand terme en haut (on ne peut pas déplacer les termes)..  Les virgules

En second : On place la virgule au résultat en comptant le nombre de chiffres au total après la virgule.. III) Comment effectuer un calcul mentalement ? 1) En