• Aucun résultat trouvé

Diviser pour r´ egner

N/A
N/A
Protected

Academic year: 2022

Partager "Diviser pour r´ egner"

Copied!
2
0
0

Texte intégral

(1)

Algorithmique et programmation L2 MIASHS-Math

TD 4 2020-2021

Diviser pour r´ egner

Exercice 1 Nombre d’inversions d’un tableau

Pour un tableau T index´e de 1 `a n, le nombre d’inversions deT est d´efini par inv(T) =|{16i < j6n : T[i]> T[j]}|.

1. Adapter l’algorithme de tri fusion pour concevoir un algorithme qui trie un tableau T donn´e en entr´ee et retourne inv(T).

Exercice 2 Multiplication rapide de matrices

Le but de cet exercice est de concevoir un algorithme de produit de deux matrices carr´ees, plus efficace que l’algorithme na¨ıf. L’id´ee est la mˆeme que pour le produit rapide de polynˆomes vu en cours.

1. Rappeler quelle est la complexit´e du produit na¨ıf de deux matrices de taillesn×n.

2. Comment calculer les quatre coefficients de la matrice a1,1 a1,2

a2,1 a2,2

b1,1 b1,2 b2,1 b2,2

avec seulement 7 multiplications (et sans faire commuter les ´el´ements) ?

Indication : Montrer que les ´el´ements cherch´es peuvent ˆetre obtenus comme combinaison lin´eaire des produits suivants :

— (a1,1+a2,2)(b1,1+b2,2),

— (a2,1+a2,2)b1,1,

— a1,1(b1,2−b2,2),

— a2,2(b2,1−b1,1),

— (a1,1+a1,2)b2,2,

— (a2,1−a1,1)(b1,1+b1,2),

— (a1,2−a2,2)(b2,1+b2,2).

3. En d´eduire un algorithme r´ecursif pour faire le produit de deux matrices de taille n×n, o`u nest une puissance de 2.

4. D´eterminer la complexit´e de l’algorithme d´ecrit ci-dessus. Comparer `a la m´ethode na¨ıve.

1

(2)

Exercice 3 Algorithme de s´election

Etant donn´´ e un tableau T[1. . . n], consid´erons π une permutation de {1, . . . , n} qui trie le tableau, c’est-`a-dire que

T[π(1)]6T[π(2)]6. . .6T[π(n)].

Le probl`eme de la s´election dui-`eme plus petit ´el´ement d’un tableau consiste, ´etant donn´eT, `a calculerT[π(i)]. Noter qu’il peut exister plusieurs permutationsπtriant le tableau (c’est le cas si et seulement si le tableau contient plusieurs fois le mˆeme ´el´ement), maisT[π(i)] est ind´ependant du choix deπpuisqu’il n’existe qu’une version tri´ee du tableauT. Nous appellerons cet ´el´ement l’´el´ement de rang ide T.

1. Proposer un algorithme simple qui ´etant donn´e T eti retourne l’´el´ement de rangide T.

Quelle est sa complexit´e ?

Le but de la suite est de construire un algorithme plus efficace. Cet algorithme est r´ecursif.

Dans la suite, nous noterons|A|la taille d’un tableauA, c’est-`a-dire le nombre d’´el´ements qu’il contient.

Etant donn´´ e un ´el´ement v du tableau T[1, . . . , n], on peut collecter dans un tableau A les

´

el´ements de T qui sont strictement inf´erieurs `a v, dans X les ´el´ements ´egaux `a v et dans un tableauB les ´el´ements qui sont strictement sup´erieurs `a v. Trois cas se pr´esentent alors :

— Si |A|< i6|A|+|X|, l’´el´ement de rangi de T estv. Nous pouvons donc retourner v et terminer l’algorithme.

— Si i6|A|, l’´el´ement de rang ide T est l’´el´ement de rang ide A. Dans ce cas, on calcule r´ecursivement l’´el´ement de rang ide A.

— Si i >|A|+|X|, l’´el´ement de rangideT est l’´el´ement d’un certain rang r deB, que nous pouvons calculer r´ecursivement.

2. D´eterminer la valeur de r dans le troisi`eme cas ci-dessus.

La partie d´elicate consiste `a calculer un ´el´ement v qui partitionne le tableau “`a peu pr`es en deux parties ´egales”. Pour cela, on effectue les ´etapes suivantes :

— On partitionne le tableau T en paquets de 5 ´el´ements (le dernier paquet peut comporter

´

eventuellement moins de 5 ´el´ements, si nn’est pas un multiple de 5) ;

— On calcule par un algorithme na¨ıf la m´ediane de chaque paquet ;

— On calcule r´ecursivement la m´ediane des m´edianes : c’est cet ´el´ement que nous choisissons pour v.

3. ´Ecrire l’algorithme de s´election (`a un haut niveau) bas´e sur le principe ci-dessus.

4. Comment d´emontrer sa correction ?

Dans la suite, on s’int´eresse `a la complexit´e de cet algorithme.

5. Montrer que l’´el´ement v v´erifie la propri´et´e suivante :

|A|6 7n 10 + 3 et de mˆeme pourB.

6. En d´eduire que la complexit´e de l’algorithme de s´election estO(n).

2

Références

Documents relatifs

Une sous-alg` ebre de A est un sous-ensemble non vide de A qui est lui-mˆ eme une alg` ebre (pour les mˆ emes op´ erations) et qui poss` ede le mˆ eme ´ el´ ement neutre que A.. On

f est continue donc uniform´ ement continue sur le segment [−T, 2T ] par le th´ eor` eme

Si le datagramme exp´edi´e comporte une somme de contrˆ ole, celle-ci est le compl´ement `a 1 de 16 bits du compl´ement `a 1 de la somme des bi-octets constituant le

A noter : si dans OpenOffice, votre texte occupait plusieurs page, lros de l'importation dans Scribus, les pages ne sont pas créées automatiquement. Utilisez le menu Page/Insérer

— dans le cas où n est une puissance de 2, et donc les moitiés toujours de taille égale, s’il y a deux majoritaires différents avec le mêmne nombre d’occurences, alors il ne peut

Pour la FFT, on cite souvent Cooley et Tukey [CT65], mais l’algorithme ´ etait connu et on attribue sa premi` ere invention ` a Gauss.. Le papier original pour le master theorem

Le problème de sectorisation de l’espace des ressources en parcelles homogènes est décomposé en deux étapes: la forêt est tout d’abord découpée en mailles

De manière plus globale, il est à noter, et cela est confirmé notamment par l’intitulé de plusieurs lois portant sur le sujet, que le paysage est régulièrement cité dans la