Inf4705 : Laboratoire 1
2012
1
INF4705 : ANALYSE ET CONCEPTION D’ALGORITHMES
RAPPORT DE LABORATOIRE DU TP1
ANALYSE HYBRIDE DE QUELQUES ALGORITHMES
POUR UN PROBLÈME DONNÉ
Réalisé par :
NESRINE MEHIRI #1390408
KAIS SAMMOUDI#1420108
YVES NGUIFFO PODIE#1426994
Remis-le :
15/02/2012
Inf4705 : Laboratoire 1
2012
2
Table des matières
1. INTRODUCTION ........................................................ ERROR! BOOKMARK NOT DEFINED.
2. REVUE DE LA THÉORIE ............................................................................................................... 4
3. PROTOCOLE EXPÉRIMENTAL ..................................................................................................... 5
3.1 Méthodologie de l’expérience .......................................................................................................... 5
3.1.1 Description complete des jeu des données............................................................................ 5
3.1.2 Les étapes nécessaires pour réaliser l’expérience ................................................................. 5
3.2 Facteur environnementaux .............................................................................................................. 5
4. PRÉSENTATION DES RÉSULTATS .............................................................................................. 5
4.1 Temps dexécution pour chaque algorithme................................................................................. 5
4.2 Analyse Empirique .......................................................................... Error! Bookmark not defined.
4.2.1 Algorithme de multiplication classique ................................... Error! Bookmark not defined.
a. Test de puissance ...................................................................... Error! Bookmark not defined.
b. Test de rapport .......................................................................................................................... 7
c. Calcul des constantes ................................................................................................................ 7
4.2.2 Algorithme de multiplication diviser-pour-régner ................................................................... 8
a. Test de puissance ...................................................................................................................... 8
b. Test de rapport ......................................................................................................................... 9
c. Calcul des constantes. ............................................................................................................ 10
5. ANALYSE ET DISCUSSION ..................................... ERROR! BOOKMARK NOT DEFINED.
5.1 Impact du seuil de récursivité .......................................................... Error! Bookmark not defined.
5.2 Réalisation et description des tests ................................................................................................ 11
5.2.1 Test de puissance ..................................................................... Error! Bookmark not defined.
5.2.2 Test de rapport ........................................................................ Error! Bookmark not defined.
5.2.3 Calcul de constantes ............................................................... Error! Bookmark not defined.
5.3 Résumé des résultats ...................................................................................................................... 12
5.4 Erreurs possibles ............................................................................................................................ 13
5.5 Description des algorithmes utilisés et analyse théorique des complexités .................................. 13
5.5.1 Algorithme classique ............................................................................................................. 13
5.2.2 Algorithme Strassen .............................................................................................................. 14
6. CONCLUSION ................................................................................................................................ 14
7. BIBLIOGRAPHIE............................................................................................................................ 14
Inf4705 : Laboratoire 1
2012
3
1. Introduction :
Ce laboratoire porte sur l’analyse empirique et hybride des algorithmes de
multiplication de matrice conventionnel et diviser-pour-régner dit de Strassen.
Pour ce faire, les algorithmes conventionnel et de Strassen sont implantés
sur des exemplaires pour effectuer des produits de matrices carrées de taille 2n, n=
5, 6,7,8,9,10 puis trois approches d’analyse à savoir le test de puissance, le test de
rapport et le test des constantes ou asymptotique sont étudiées pour faire une
comparaison des consommations de ressource en temps entre les deux
algorithmes sus-cités.
Lors du produit matriciel, les multiplications consomment énormément
de ressources. Strassen (1969) a démontré qu’on peut améliorer la complexité
d’une multiplication de matrices à l’aide d’un algorithme capable de faire passer
le nombre de multiplications de 8 à 7. Cet algorithme permet, par la réduction de
la complexité du calcul du produit de matrices de consommer moins de ressources
par rapport à l’algorithme conventionnel. La complexité pour le calcul
conventionnel du produit de deux matrices est de O(N3); grâce à l’algorithme de
Strassen, il est possible de réduire cette complexité à O(N2.807). ainsi, dans ce
travail, l’algorithme de Strassen sera implémenté de telle sorte qu’à partir d’un
certain seuil de récursivité, ce dernier utilisera l’algorithme de multiplication
conventionnel.
Les exemplaires de matrices carrées nous sont fournis, et une fois les
algorithmes codés et compilés, notre programme va générer automatiquement à
chaque exécution un fichier texte avec les durées d’exécution en milli secondes,
pour lesquels nous ferons des moyennes pour chaque taille de matrice. Après
avoir collecté les informations pour tous les exemplaires et à partir d’un seuil de
récursivité pour l’algorithme de Strassen, nous analyserons pour le seuil n et les
nombres n/2, 2xn et 1 nos algorithmes en appliquant les 3 tests requis : test de
puissance, test de rapport et test des constantes (analyse asymptotique), avec pour
but ultime de comparer la rapidité et la performance de la multiplication
matricielle de chaque algorithme.
Inf4705 : Laboratoire 1
2012
4
2. Revue de la théorie :
La multiplication des matrices a fait l’objet de multiples investigations durant les
trente dernières années en vue de réduire le nombre d’opérations arithmétiques nécessaire
au calcul du produit de deux matrices et d’améliorer la borne supérieure asymptotique à
ce nombre.
Il est couramment rapporté (Robert, 2005) que c’est essentiellement le nombre de
multiplications qui contrôle la complexité asymptotique de la multiplication des matrices
carrés. Plus précisément, l’algorithme de multiplication classique de deux matrices
carrées d’ordre n, correspond à un circuit arithmétique de taille n2 (2n-1) et de
profondeur [log(n)].1 avec n3 multiplications et n2 (n-1) additions; donc à une complexité
de O (n3). La complexité pour le calcul conventionnel du produit de deux matrices est de
O(N3). Soient les matrices carrées
dc
ba
A
,
hg
fe
B
et
zw
vu
C
le résultat de
leur produit. Les éléments de C s’écrivent :
u= ae + bg
v= af+ bh
w = ce + dg
z =cf + dh
Par la suite, Strassen (1969) montra qu’on peut multiplier deux matrices (n x n) en
atteignant une complexité de O (n2,807). Pour preuve, pour des matrices carrées de taille
N= 2n, d’où n= lnN/ln2, on peut écrire :
nmult= 7n = 7lnN/ln2 = eln7.lnN/ln2 = Nln7/ln2 = N2.807
Cet algorithme crée 7 éléments qui permettent d’exprimer les résultats du produit
matriciel avec 7 multiplications au lieu de 8. Ces éléments s’écrivent (Robert, 2005):
S1 = a(g-h), S2 = (a+b)h, S3 = (c +d)e, S4 = d(f-e), S5 = (a+d)(e+h), S6 = (b-d) (f+h) , S7
= (a-c) (e+g).Ainsi, on peut exprimer les elements u,v, w, z comme:
u = S5+ S4 S2+ S6
v = S1+ S2
w = S3+ S4
z = S5 + S1 S3-S7
Inf4705 : Laboratoire 1
2012
5
3. Protocol expérimental :
3.1 Méthodologie de l’expérience :
3.1.1 Description complète du jeu de donnée utilisé :
Pour réaliser nos tests, nous avons utilisés deux fichiers ayant un nom qui
commence par ex_N.X ou N est un entier qui servira à calculer la taille de la matrice et X
représente le numéro de l’exemplaire. N varie de 5 à 10 et X de 1 à 5. Donc au totale
nous avons 5 matrices ayant les mêmes tailles.
Nous allons multiplier les matrices de même taille deux à deux, ce qui nous donne 10
exemplaires de problème pour chaque taille et 60 au totale.
3.1.2 Énoncer les étapes nécessaires pour réaliser expérience :
Les deux algorithmes ont été implémentés en suivant les étapes suivantes :
1- Démarrage des sondes pour récupérer le temps total d’exécution
2- Lecture des deux fichiers pour avoir les deux matrices à multiplier
3- Calcul du résultat de la multiplication en utilisant les deux algorithmes
(classique et Strassen)
4- Arrêt de la sonde.
5- Écriture des temps d’exécution dans un fichier texte.
3.2 Facteurs environnementaux :
Le code a été implémenté en Java sous Éclipse, et les tests et le code ont été roulés
sur l’ordinateur numéro 07 de la salle L4712 de l’École disposant du système
d’exploitation Linux Fedora15, de CPU Intel Dual Quad-cor, de mémoire vive 8192 Mo
et de moniteur Samsung SyncMaster 191T.
4. Présentation des résultats :
4.1 Temps d’exécution des algorithmes (Strassen & Classique) :
Pour chaque taille de matrice, nous calculons le temps d’exécution moyen.
1 / 15 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 !