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