Année Universitaire 2016/2017 Licence d’Informatique (L3) SIN5U1TL – Algorithmique avancée Devoir n°2 – Arbre Couvrant Minimal Arbre Couvrant Minimal et Ultramétriques Etant donné un graphe G=(S,A), non orienté, pondéré et connexe, on appelle « arbre couvrant » de G un graphe partiel de G qui soit un arbre. Un arbre couvrant minimal (ACM), pour le graphe G, est un « arbre couvrant » dont la somme des poids des arêtes est minimale sur l’ensemble des « arbres couvrants ». On a étudié en cours deux algorithmes permettant d’obtenir cet arbre couvrant minimal : l’algorithme de Prim et l’algorithme de Kruskal. La notion d’ultramétrique a été étudiée en TD (TD n°5) : elle se différencie d’une métrique au niveau de la propriété « d’inégalité triangulaire » ( δ(x,z) ≤ Max ( δ(x,y) , δ(y,z) ) au lieu de d(x,z) ≤ d(x,y) + d(y,z) pour une métrique). Une ultramétrique permet, d’une certaine manière, de quantifier « la difficulté, depuis un point, à atteindre un autre », en ayant la possibilité d’utiliser tous les chemins possibles. Travail demandé 1. Algorithmes de Prim et Kruskal On demande de programmer ces deux algorithmes et de visualiser les résultats sous forme graphique (aucune préconisation n’est faite sur ce point, mais vous pouvez utiliser certains outils qui ont été développés par d’autres enseignants, par exemple). A titre d’illustration (pour visualiser le résultat obtenu par vos programmes), un graphe peut être défini « à la main » (dans un fichier texte) avec nombre (limité) de sommets et une liste d’arêtes pondérées (en nombre limité également). 2. Algorithmes de Prim et Kruskal améliorés La structure de tas (pour l’algorithme de Prim) et la méthode dite d’ « Union – Find » (pour l’algorithme de Kruskal) permettent d’améliorer les performances de ces deux algorithmes. On demande de programmer ces deux versions « améliorées » 3. ACM sur un graphe complet associé à un nuage de points Etant donné un ensemble de points dans le plan (nous appellerons « nuage de points » cet ensemble), nous pouvons définir un graphe non orienté, pondéré et connexe dont les sommets sont ces points et dont les arêtes joignent tous les sommets deux à deux, avec pour poids la distance entre les sommets correspondants. On obtient ainsi un graphe complet. Nous tirerons aléatoirement des points dans un domaine donné et nous ne conserverons que les points situés à une distance supérieure à un seuil donné des autres points. Calculer et visualiser l’ACM associé à ce graphe. 4. Ultramétrique sur un nuage de points Utiliser cet ACM pour évaluer la distance entre deux quelconques de ces points (au sens de l’ultramétrique définie comme étant le minimum sur tous les chemins possibles de la distance maximum entre deux point d’un tel chemin). Conditions du devoir Les devoirs sont impérativement effectués en binôme (si le nombre total d’étudiants est impair, l’un d’eux – et un seul – pourra être seul, mais il n’y aura pas de groupe de trois). Il serait souhaitable que les binômes du Devoir n°1 soient reconduits. Il est formellement interdit copier des « bouts de code » sur Internet ou sur ce qu’ont fait d’autres étudiants. Le travail à remettre sera constitué d’un rapport et d’un programme : - - Le rapport sera en format pdf, d’une taille de quatre à cinq pages, et il donnera des indications sur la structuration du programme, les raisons des choix effectués, les difficultés rencontrées, éventuellement des résultats (mais pas une description de l’algorithme ni des « bouts de code »). Le programme sera dans un langage de programmation au choix mais après agrément du professeur (C, C++, Java, Python ont été les langages choisis) ; il y aura a priori un seul fichier pour le programme mais s’il y en a deux ou trois (pas plus), ce n’est pas gênant (il faudrait quand même essayer de regrouper le tout dans la mesure du possible). Tous ces documents doivent m’être adressés par mail (adresse e-mail : [email protected]) au plus tard le mardi 29 novembre à midi. Le mail doit m’être envoyé par l’un des deux étudiants du binôme et l’autre étudiant doit être en copie du message. Les fichiers (rapport, programmes) doivent apparaître comme autant de pièces jointes : il ne doit absolument pas y avoir de dossier compressé en document attaché. Dans tous les cas, je vous renverrai un message (rapidement) pour vous dire que j’ai bien reçu vos documents. Si vous n’avez pas reçu cet accusé de réception de la part, c’est que votre mail ne m’est pas parvenu … vérifiez donc bien à avoir reçu cet accusé de réception. Pour éviter tout problème, je vous conseille de me faire parvenir ces documents dès le lundi soir ou le mardi en tout début de matinée. er Le surlendemain, jeudi 1 décembre, de 15h à 17h, aura lieu la présentation des devoirs : - Ne seront autorisés à présenter leur devoir que ceux qui m’auront adressé leurs documents dans les conditions énoncées précédemment Chaque binôme disposera de 5mn (pas plus) : pensez donc à me montrer ce qui est pertinent, …