• Aucun résultat trouvé

IFT2010 Hiver 2006 — Devoir 3

N/A
N/A
Protected

Academic year: 2022

Partager "IFT2010 Hiver 2006 — Devoir 3"

Copied!
2
0
0

Texte intégral

(1)

IFT2010 Hiver 2006 — Devoir 3

Mikl ´os Cs ˝ur ¨os 16 mars 2006

A remettre lors du cours du 30 mars.`

1 Les disques (100 points)

Supposons qu’on se donne un ensemble de nfichiers, o `u la taille ti du i`eme fichier v´erifie0< ti ≤M avec un seuilM quelconque. On souhaite sauvegarder les fichiers sur un minimum de disques de tailleM. Chaque disque peut contenir un sous-ensemble de fichiers dont la taille globale n’exc`ede pas M. Imaginez par exemple que vous voulez cr´eer un archive de tous vos fichiers MP3 sur des CDs (M = 700kb).

Le probl`eme est difficile (NP-ardu) mais il existe beaucoup d’heuristiques qui m`enent `a des solutions acceptables. Vous devez implanter l’heuristique worst-fit.

Cette heuristique prend chaque fichier l’un apr`es l’autre et le place sur un disque qui peut l’acceuillir : soit un nouveau disque si aucun des disques utilis´es n’ont assez d’espace libre, soit sur le disque qui a lemaximum d’espace libre. Par exemple, si on a des fichiers de taille 500, 550, 150, 100, 100 et M = 700 l’algorithme les place sur trois disques :{500,150},{550,100}et{100}. (Notez que l’on peut les sauvegarder sur deux disques plut ˆot.)

Votre implantation utilisera une file de priorit´e. Vous pouvez utiliser la code de

Mark Allen Weiss (http ://www.cs.fiu.edu/˜weiss/dsaajava/code/DataStructures/BinaryHeap.java).

Implantez la classe Disque qui repr´esente un disque de tailleM : M est un argument du constructuer ouM = 700000par d´efaut.

public Disque(int M) { /* votre code ... */};

public Disque(){ this(700000);}

La classe Disque mantient la liste des tailles des fichiers y sauvegard´es. Elle impl´emente l’interfaceComparablepour qu’on puisse la placer sur le monceau : c’est par cette fonctionnalit´e que vous implantez l’heuristiqueworst fit.

1

(2)

Votre logiciel doit lire une liste de nombre entiers positifs de stdin (c’est la liste de tailles), et afficher les disques (M = 700000) utilis´es pour sauvegarder les fichiers. La sortie donne l’information suivante :

– taille totale de fichiers, divis´ee par M — c’est une borne inf´erieure sur le nombre de disques n´ecesssaires

– nombre de disques utilis´es

– s’il y a moins de 100 fichiers, la liste de disques dans l’ordre d´ecroissant d’es- pace libre : pour chaque disque, on doit afficher le nombre de fichiers, l’es- pace libre, et la taille des fichiers dans l’ordre d’insertion.

Exemple :

% java archiveDisques < fichiers20.txt taille totale : 7.8

nombre de disques : 9 2 102000 : 98000 500000 1 12000 : 588000

...

D´etails sur des tests `a performer seront affich´es sur le site du cours.

2

Références

Documents relatifs

Le frottement entre les éléments en contact génère une perte énergétique sous forme de chaleur qui entraine l’échauffement des éléments en contact → ces

Un fichier regroupe un ensemble de donn´ ees appel´ e contenu Un fichier est associ´ e ` a des m´ eta-donn´ ees stock´ ees ou non dans la table d’allocation : un nom, une date,

On constate qu’il y a cinq parties, sur la figure 7, représentant l’efficacité de refroidissement d’un disque de freins avec quatre lignes de trous de diamètre 10 mm.. On

Montrez que tout algorithme 2 pour construire un arbre binaire de recherche `a partir d’une liste de n ´el´ements doit prendre Ω(n log n) temps dans le pire des cas.. 2 Un pas

Montrez comment on peut aussi implanter l’op´eration getMin qui retourne l’´el´ement de valeur mini- male sur la pile (supposons que c’est une pile sur des nombres).. Votre

L’id´ ee est d’utiliser une pile pour stocker les ´ el´ ements dans l’ordre LIFO (sur laquelle enqueue = push) et utiliser une autre pile pour enlever dans l’ordre FIFO

Montrez que tout algorithme 2 pour construire un arbre binaire de recherche `a partir d’une liste de n ´el´ements doit prendre Ω(n log n) temps dans le pire des cas.. 1 comparaison

Donnez un algorithme qui d´etermine si un graphe non-orient´e