Question 1 : Pot pourri [4 points] Question 2 : Complexité (5 points

publicité
INF4705 Analyse et conception d’algorithme, Examen final, Automne 2007
1
Question 1 : Pot pourri [4 points]
Chaque réponse ne devrait prendre qu’une phrase ou deux.
a) [1 point] Quelle est la différence essentielle entre les algorithmes voraces (gloutons) et
les algorithmes de fouille à retour arrière (“backtracking”) ?
b) [1 point] Quelle est la différence essentielle entre les algorithmes diviser-pour-régner et
les algorithmes de programmation dynamique ?
c) [1 point] Quelle est la différence essentielle entre les algorithmes heuristiques et les
algorithmes approximatifs ?
d) [1 point] Quelle est la différence essentielle entre les algorithmes déterministes et les
algorithmes probabilistes ?
Question 2 : Complexité (5 points)
a) [2 points] Expliquez la différence entre les classes P et N P.
b) [1 point] Qu’entend-on par “problème N P-complet” ?
c) [2 points] Nommez trois (3) problèmes N P-complets.
Question 3 : Programmation dynamique [6 points]
Faire de la monnaie. Rappelons ce problème, que nous avons déjà abordé en classe : étant
donné n types de pièces de monnaie de valeur d1 , . . . , dn , il s’agit de minimiser le nombre de
pièces utilisées pour totaliser un montant donné N.
Vous devez concevoir, analyser et appliquer un algorithme de programmation dynamique
pour celui-ci.
a) [2 points] Définissez d’abord un tableau pour votre algorithme et posez une récurrence
pour calculer les valeurs aux cases de ce tableau.
b) [2 points] Appliquez votre algorithme à l’exemplaire suivant et donnez le nombre minimum de pièces requises dans la solution : d1 = 2, d2 = 5, d3 = 6, N = 10
c) [1 point] Expliquez comment retrouver les pièces de monnaie qui sont utilisées dans la
solution et donnez-les.
d) [1 point] Donnez le temps d’exécution de votre algorithme en notation asymptotique.
Question 4 : Algorithmes de recherche locale (6 points)
Le problème de tournées de véhicules consiste à répartir n clients parmi m véhicules et
à déterminer dans quel ordre chaque client sera visité par le véhicule désigné, dans le but
de minimiser la somme des distances parcourues par les véhicules. Nous avons à la fois un
problème de partitionnement des clients en m sous-ensembles (pour chacun des véhicules)
et un problème de séquencement des clients (voyageur de commerce) dans chacun de ces
sous-ensembles.
INF4705 Analyse et conception d’algorithme, Examen final, Automne 2007
2
On vous confie la tâche de concevoir un algorithme métaheuristique basé sur les trajectoires, en particulier la recherche à voisinage variable.
a) [2 points] Expliquez le fonctionnement de ce type d’algorithme.
c) [2 points] Définissez deux voisinages appropriés pour votre algorithme.
d) [2 points] Quelle est la taille de chacun de ces voisinages, en notation asymptotique ?
Question 5 : Algorithmes approximatifs [4 points]
a) [1 point] Donnez la garantie sur la valeur V d’une solution retournée par un algorithme
approximatif c-absolu pour un problème de maximisation étant donné que la valeur
d’une solution optimale est V ⋆ .
b) [2 points] Le problème de recouvrement minimum d’un graphe G = (N, A) par des
sommets consiste à déterminer un plus petit sous-ensemble C de N tel que chaque
arête (u, v) ∈ A a au moins un de u ou v dans C (i.e. (u, v) est recouverte par C). Par
exemple {a, d} est un recouvrement minimum pour le graphe
({a, b, c, d, e}, {(a, b), (a, d), (a, e), (b, d), (c, d)}).
Donnez et justifiez un algorithme approximatif ǫ-relatif pour le problème de recouvrement minimum si on vous donne un algorithme pour produire un couplage maximal
M (c’est-à-dire auquel on ne peut plus ajouter d’arête).
c) [1 point] Quelle est la valeur de ǫ pour votre algorithme ? Justifiez.
Question 6 : Algorithmes probabilistes [5 points]
Afin de résoudre un problème de décision, vous avez sous la main :
(A) un algorithme Monte Carlo 21 -correct biaisé pour la réponse “oui” et qui prend 2 secondes à chaque exécution ;
(B) un algorithme Monte Carlo 43 -correct biaisé pour la réponse “non” et qui prend 3
secondes à chaque exécution ;
a)[2 points] On vous demande de concevoir un algorithme Monte Carlo qui soit au moins
9
-correct et le plus rapide possible. Que proposez-vous et combien de temps prendra
10
votre algorithme ?
b)[2 points] En utilisant les algorithmes A et B au plus une fois chacun, concevez un
algorithme Las Vegas et donnez sa probabilité de succès.
c)[1 point] Quel est son temps d’exécution espéré pour un exemplaire auquel on devrait
répondre “oui” ?
INF4705 Analyse et conception d’algorithme, Examen final, Automne 2007
3
Question 7 : Algorithmes diviser-pour-régner [5 points]
Soit T un tableau de n entiers distincts et possiblement négatifs, triés en ordre croissant.
1. [2 points] Concevez un algorithme diviser-pour-régner efficace pouvant déterminer
un index i (1 ≤ i ≤ n) tel que T [i] = i, à condition qu’il existe.
2. [1 point] Analysez la consommation en temps de calcul de votre algorithme.
3. [2 points] Justifiez son bon fonctionnement.
Téléchargement