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.