INF4705 — Analyse et conception d`algorithmes tp 1 1 Implantation

publicité
INF4705 — Analyse et conception d’algorithmes
tp 1
Ce travail pratique se répartit sur deux séances de laboratoire et porte sur
l’analyse empirique et hybride des algorithmes. À la section 1 du chapitre 3 des
notes de cours, trois approches d’analyse de l’implantation d’un algorithme sont
décrites. Vous les mettrez en pratique pour des algorithmes de multiplication de
grands entiers.
1
Implantation
Durant la première séance, vous implanterez les algorithmes de multiplication de grands entiers arabe et diviser-pour-régner. Vérifiez que vos algorithmes
fonctionnent correctement en les testant sur de petits exemplaires du problème.
Vous pouvez également vérifier que vos implantations sont correctes en comparant les résultats des deux algorithmes.
Vous avez le choix du langage de programmation utilisé (C, C++, Java) mais
vous devrez utiliser les mêmes langage, compilateur et ordinateur pour toutes
vos implantations. Nous vous demandons de nous remettre une version de vos
programmes qui soit compatible avec les ordinateurs du laboratoire L-4712.
Par exemple, le compilateur g++ version 4.1.2.. Ce laboratoire est accessible de
l’exterieur de l’école à l’adresse L4712-XX.info.polymtl.ca tel que XX représente
le numéro du poste (compris entre 01 et 15).
2
Jeu de données
Vous trouverez dans le répertoire ˜ inf4705/pub/Multiplication les exemplaires à traiter. Les fichiers portent le nom "ex_nN.X" où N = 64, 256, 1024,
4096, 16384 (ce qui représente le nombre de chiffres composant chacun des deux
entiers à multiplier) et X = 0,..,9 (le numéro d’exemplaire).
Chaque ligne comprend deux chiffres séparés par un espace (" "), respectivement du premier et second entiers à multiplier, à la même position décimale.
La première ligne contient les unités, la seconde les dizaines et ainsi de suite.
3
Analyse
Pour l’algorithme arabe :
i) Appliquez le test de puissance.
ii) Appliquez le test du rapport en utilisant la fonction de son ordre exact.
iii) Précisez l’analyse asymptotique théorique en calculant les constantes en jeu
(troisième approche).
1
Pour l’algorithme diviser-pour-régner, vous devez d’abord déterminer expérimentalement un seuil de récursivité adéquat, en deça duquel vous utiliserez
l’algorithme arabe. Vous pouvez procéder empiriquement par tâtonnements en
essayant différentes valeurs de seuil. Vous pouvez également utiliser une approche hybride telle que décrite dans les notes de cours au chapitre 6. Pour
cette seconde approche, il faudra utiliser les constantes de l’algorithme arabe
telles qu’évaluées auparavant et calculer celles pour le travail linéaire de recombinaison des solutions des sous-exemplaires dans l’algorithme diviser-pour-régner.
Ce n’est qu’après que ce seuil ait été déterminé que votre algorithme sera prêt
à être évalué sur le jeu de données.
Pour l’algorithme diviser-pour-régner avec le seuil calculé :
i) Appliquez le test de puissance.
ii) Appliquez le test du rapport en utilisant la fonction de son ordre exact.
iii) Précisez l’analyse asymptotique théorique en calculant les constantes en jeu
(troisième approche).
Note : Pour effectuer vos régressions linéaires, vous pouvez utiliser l’outil de
votre choix : Excel, OpenOffice, R (http ://www.r-project.org, déjà installé au
laboratoire), etc.
4
Résultats
Vous accumulerez des résultats pour cinq versions d’algorithmes de multiplication :
– l’algorithme arabe
– l’algorithme diviser-pour-régner utilisant le seuil calculé
– l’algorithme diviser-pour-régner utilisant un seuil de la moitié de celui
calculé
– l’algorithme diviser-pour-régner utilisant un seuil du double de celui calculé
– l’algorithme diviser-pour-régner utilisant un seuil de un.
Pour chacune des versions, mesurez le temps d’exécution pour chaque exemplaire
et rapportez dans un tableau le temps moyen par taille d’exemplaire.
5
Discussion
i) Discutez de l’impact du choix d’un seuil de récursivité
ii) Suite à cette analyse, indiquez sous quelles conditions (taille d’exemplaire
ou autre) vous utiliseriez un algorithme plutôt que l’autre. Justifiez.
6
Remise
Au chargé de laboratoire au début de la troisième séance ou au secrétariat du
M-3002 avant votre troisième séance de laboratoire, un rapport comprenant :
2
– une brève description du sujet et des objectifs de ce travail (svp pas de
redite de l’énoncé),
– la description du jeu de données,
– les résultats expérimentaux,
– l’analyse et discussion,
– une brève description des principales fonctions de vos programmes de multiplication de grands entiers. Justifiez vos calculs de complexité théorique
en faisant des références à votre code (nom des fichiers et lignes de code).
Vous ne ferez pas imprimer votre code.
Vous devez également faire une remise électronique en suivant les instructions
sur le site du cours : http ://www.cours.polymtl.ca/inf4705/htmlsc/ProcedureSoumission.pdf
Lors de la soumission électronique veuillez éviter de soumettre les fichiers d’exemplaires de problème avec votre TP.
7
Barème de correction
1 pts : exposé du travail pratique
2 pts : présentation des résultats
5 pts : analyse et discussion
3 pts : les programmes (corrects,structurés,commentés,. . .)
2 pts : présentation générale et qualité du français
3
Téléchargement