• Aucun résultat trouvé

1 Partie théorique (10 points)

N/A
N/A
Protected

Academic year: 2022

Partager "1 Partie théorique (10 points)"

Copied!
4
0
0

Texte intégral

(1)

UNIVERSITÉ DE MONTRÉAL Automne 05

Département IRO Neil Stewart

IFT 2010 A05 Devoir 4.

(25/100)(0.30), soit7.5%de la note finale.

1 Partie théorique (10 points)

1. (1 point)

Dans le cours nous verrons une version non-récursive de l’algorithme de Schorr-Waite- Deutsch, et dans le livre Section 12.3 il y a une version récursive. Dessinez un triangle équilateral pour représenter l’arborescence traversée (l’arborescence est un sous-graphe du graphe traversé). Il s’agit donc de dessiner un gros triangle de la forme∆.

Supposons que nous nous trouvions dans un noeud quelque part en bas du triangle, lors de l’exécution de l’algorithme. Dessinez un point vers le bas du triangle pour représenter ce noeud, et dessinez aussi les références/pointeurs inversés à ce stade de l’algorithme. Cette collection de pointeurs correspond à quoi?

2. (2 points)

Drozdek, #1 et #2, page 643.

3. (3 points)

Dans le cours nous verrons, entre autre, deux méthodes pour l’allocation dynamique de mémoire, soient “best-fit” (on choisit un bloc qui est aussi petit que possible parmi ceux qui sont assez grands pour satisfaire la requête), et “first-fit” (on choisit le bloc avec l’adresse la plus basse parmi les blocs qui sont assez grands pour satisfaire la requête).

Montrez que si les blocs disponibles sont reliés comme il faut dans une arborescence bal- ancée, il est possible d’implanter ces deux méthodes dans un tempsO(logn), où n est le nombre de blocs disponibles.

4. (4 points)

Dans la démonstration #7, 4 novembre 2005, les démonstrateurs ont énoncé un résultat au sujet d’une structure en arborescence pour le problème de UNION/FIND:

Si, lors de l’exécution de l’algorithme de réunion (UNION), la racine de l’arborescence avec le plus petit nombre de sommets devient l’enfant de la racine de l’autre arborescence, alors aucun arbre dans la forêt n’aura une profondeur supérieure ou égale àh, à moins d’avoir au moins2hsommets. (Dans le cas où les deux arborescences ont le même nombre de sommets, on choisit l’un des deux de façon arbitraire.)

Donnez la preuve de cet énoncé. Indice: Induction surh.

1

(2)

2 Partie pratique (15 points)

Mise en situation

ColisRapide, une entreprise spécialisée dans le transport de colis, vous demande d’améliorer le système de gestion automatisée de sa flotte de camions. Ce système permet d’affecter le transport d’un colis à l’un des 10 camions de l’entreprise de manière à ce que la livraison soit faite le plus rapidement possible. Le système fonctionne comme suit :

1. Il reçoit une demande pour le transport d’un colis.

2. Il identifie le camion pouvant se rendre le plus rapidement chez l’expéditeur et fournit au chauffeur l’itinéraire le plus rapide pour s’y rendre.

3. Il fournit ensuite au chauffeur le chemin le plus rapide entre l’expéditeur et le destinataire.

Afin de simplifier le problème, nous supposerons que les camions ne transportent qu’un seul colis à la fois et qu’ils se déplacent seulement lorsque le transport d’un colis leur est affecté.

ColisRapide dispose d’informations sur les liens routiers entre ses clients (expéditeurs ou des- tinataires potentiels). Ces informations prennent la forme d’un graphe connexe et orienté dans lequel les sommets représentent des clients et les arcs correspondent aux liens routiers entre ces derniers. À chaque arc est associé le temps de déplacement moyen entre les deux sommets inci- dents. Les temps de déplacement sont mis-à-jour régulièrement en fonction de l’état de la circula- tion.

Représentation des données

Le graphe est représenté par une matrice origines-destinations (matrice OD) M = {mij} où mij, le temps de déplacement entre les sommetsietj, est non nul s’il existe un arc entreietj. Le graphe étant orienté,mijpeut être différent demji. Ceci est causé par les rues à sens unique et par la circulation qui peut être différente d’une direction à l’autre.

Votre travail

Votre travail consiste à implanter une représentation efficace de la matrice OD et à implanter deux variantes de l’algorithme de Dijkstra qui seront utilisées pour calculer les plus courts chemins.

Représentation de la matrice

Vous devez fournir deux implantations de l’interfaceMatriceODreprésentant la matrice OD.

1. AdressageDisperse: basée sur une table d’adressage dispersé avec chaînage séparé.

Vous pouvez utiliserjava.util.HashMap.

2. ListesOrthogonales : basée sur des listes orthogonales implantées par vous-même (i.e.java.util.*est interdit).

2

(3)

Selon toute vraissemblance, la première implantation devrait être la plus efficace pour les accès aléatoires aux cellules de la matrice qui sont faits lors de la mise-à-jour des temps de déplacement.

La seconde implantation devrait, quant à elle, être plus performante lors du calcul des plus courts chemins puisque l’algorithme de Dijkstra fait de nombreuses itérations sur les lignes ou les co- lonnes de la matrice.

Algorithme de Dijkstra

Vous devez fournir deux implantations de l’algorithme de Dijkstra :

1. Calcul du plus court chemin vers une destination unique depuis un ensemble de sources.

2. Calcul du plus court chemin d’une source unique vers une destination unique.

La première implantation permettra de déterminer quel camion fera la livraison ainsi que le chemin entre la position du camion et la position de l’expéditeur. Vous aurez compris que la liste de sources évoquée plus haut correspond aux positions des 10 camions et que le camion le plus proche de l’expéditeur sera choisi. La deuxième implantation servira à déterminer le meilleur itinéraire entre l’expéditeur et le destinataire.

Nous vous fournissons le fichierDijkstra.javaqui contient les signatures des deux mé- thodes statiques que vous devez implanter. Vos algorithmes doivent être basés sur un monceau (vous pouvez utiliserjava.util.PriorityQueue) et donc avoir une complexité en pire cas de l’ordre deO(mlogn), oùnest le nombre de sommets etmle nombre d’arcs.

Fichiers fournis

Plusieurs fichiers vous sont fournis sur le site du cours. Pour les extraire de l’archive, faites la commande :tar -zxf fichiers.tar.gz. Le fichierLISEZ_MOIdonne des informations sur les fichiers de test et le code source qui vous est fourni.

Le programme principal (ColisRapide) simule une série de livraisons et de mises-à-jour de la matrice OD. Chaque itération de la simulation correspond à une livraison (déplacement d’un ca- mion vers l’expéditeur, puis vers le destinataire) et à une mise-à-jour des temps de déplacement sur un nombre aléatoire d’arcs. Le programme produit une trace de la simlation que nous vous invitons à rediriger vers un fichier. À la fin de l’exécution, le programme affiche (surSystem.err) :

– le temps utilisé pour la création de la matrice ;

– le temps utilisé pour le calcul des plus courts chemins ; – le temps utilisé pour les mises-à-jour de la matrice ;

Quelques questions

1. Pour chacune de vos deux variantes de l’algorithme de Dijkstra, dites en quoi elle diffère de l’implantation standard (avec file de priorité) présentée lors de la démo du 11 novembre ? 2. Avec la représentation de la matrice OD basée sur une table d’adressage dispersé :

3

(4)

a) Sur des simulations de 100 itérations, quelle est la relation entre la taille de la matrice et chacun des temps mesurés parColisRapide? Fournissez des résultats pour appuyer votre réponse.

b) Sur des simulations de 100 itérations, quelle est la relation entre la densité de la matrice et chacun des temps mesurés parColisRapide? Fournissez des résultats pour appuyer votre réponse.

3. Répondez à la question 2 en utilisant la représentation basée sur des listes orthogonales.

(Important : Vous devez toujours utiliser le même germe lorsque vous prenez des mesures de temps afin d’éviter que des variations dans la difficulté des problèmes n’influencent les résultats. Utilisez donc le même germe aux questions 2 et 3.)

4. À la lumière des résultats que vous avez obtenus, croyez-vous qu’il serait avantageux d’uti- liser une implantation hybride combinant des listes orthogonales et une table d’adressage dispersé pour représenter la matrice OD ? Si oui, décrivez cette implantation. Sinon, expli- quez pourquoi.

Remise

Vous devez remettre tous les fichiers nécessaire au fonctionnement de l’application (seulement le code source) avec la commande :remise ift2010 tp4 <vos fichiers>. Annexez à la partie théorique vos réponses aux questions de la parite pratique.

À réaliser en équipes de 1 ou 2. À remettre le 2 décembre 2005, avant 11 :30. Les démonstra- teurs présenteront les solutions dans la démonstration du vendredi 2 décembre. Ils n’accepteront pas de devoirs après le début de la présentation des solutions.

4

Références

Documents relatifs

1. Traduisez les énoncés a) à i) dans la logique des propositions, puis transformer les en clauses. a) Un arc-en-ciel apparaît si et seulement si il y a du soleil et

III - Soit un point matériel M(m) se déplaçant sans frottement sur un plan incliné faisant un angle α avec l’horizontale. IV - On étudie un convoyeur de colis dans un centre

2) On suppose que l’énergie mécanique est conservée et que la bille quitte le ressort quand celui-ci reprend sa longueur à vide l 0. Faire le bilan des énergies transmises en entre

1) A partie du théorème de la puissance cinétique, déterminer l’équation différentielle du mouvement. IV – Suite aux chutes de neige, le petit Paul de 40 kg veut tester

- confection d’une pièce de roulement pour un appareil de levage ou - usiner des pièces métalliques à partir de cylindres d’acier.

5- Pour faire valoir ses droits Emilien s’est fait aider par cette association de consommateurs.. Il souhaite à son tour contribuer à l’accompagnement des

perpendiculaire à une corde, il partage cette corde et chaque arc qu’elle sous-temps en deux parties égales. 13) Une tangente à un cercle est une droite qui rencontre le cercle

3) a) Donner la période (j’exige une réponse avec unité et une double flèche sur