Mardi 7 janvier 2014 12h—15h / Aucun document autorisé

Mardi 7 janvier 2014 12h—15h / Aucun document autorisé
 Université Paris Diderot MI Informatique _ _ Année 2013—2014
Examen d'algorithmique
Mardi 7 janvier 2014 12h-15h / Aucun document autorisé
La qualité de la rédaction des algorithmes et des preuves sera très fortement
prise en compte pour la note.
| On peut toujours supposer une question résolue et passer à la suite.
Exercice 1 : Diviser-pour-régner - 2 points
Ecrire un algorithme ” Diviser-pour-régner” qui prend un tableau en paramétre et qui
renvole une paire constituée de la valeur minimale et de la valeur maximale du tableau.
Donner sa complexité. Justifier Valgorithme.
Exercice 2 : Flots - 2 points
On considère le réseau de transport de la figure ci dessous. Appliquer Valgorithme de
Ford-Fulkerson pour trouver un flot maximal. On donnera tous les flots intermédiaires et
les graphes des augmentations obtenus par l’algorithme. En déduire une coupe de capacité
minimale du réseau.
Exercice 3 : Calcul de notes - 3 points
On cherche à calculer les notes de semestre d’étudiants qui ont passé plusieurs unités
d'enseignement (chacune d’elle reçoit un coefficient représentant un nombre de crédits).
Pour valider un semestre, un étudiant doit valider 30 crédits. Il a pu suivre (et valider)
un ensemble d’UEs qui dépassent les 30 crédits et pour calculer sa note finale, on cherche
à trouver les U£ validées qui lui permettent d’obtenir son semestre (30 crédits) avec la
meilleure moyenne pondérée * possible. Pour cela, il est possible de diminuer le coefficient
1/4
Université Paris Diderot M1 Informatique ~~ Année 2013-2014
d’une UE si c’est nécessaire pour arriver à exactement 30 crédits (mais bien sûr, il n’est
pas possible d’augmenter le crédit d’une note).
Par exemple, supposons que les notes sont les suivantes (avec le nombre de crédits
entre parenthèses) : 12 (6), 17 (8), 11 (3), 15 (3), 14 (4), 8 (5), 13 (6), 18 (5). Il est alors
préférable (pour l’étudiant) de prendre les notes 12 (6 dégradé en 4), 17 (8), 15 (3), 14
(4), 13 (6), 18 (5). Cela lui donne une moyenne de 15,1 (ie 453/30).
Proposer un algorithme glouton pour calculer la meilleure moyenne possible. Donner
sa complexité. Justifier votre algorithme.
Exercice 4 : Sous-ensemble de somme exacte - 5 points
On cherche à résoudre le problème suivant : étant donnés un ensemble de n valeurs
entières € — {a1,02,...,@n} et une valeur cible V, on veut savoir si il est possible de
trouver un sous-ensemble de € dont la somme des éléments vaut exactement V. Par
exemple, pour € = {2,8,3,7} et И = 12, c’est possible avec le sous-ensemble 42, 3,7}.
mais si on prend И — 14, ce n'est pas possible...
1. Proposer un algorithme de programmation dynamique pour résoudre ce problème.
On cherchera à construire un tableau Booléen a deux dimensions 7'z,v, où 0 <
i <net 0 < v < V tel que 7'7,v vaut VRAI si et seulement si il est possible
de trouver un sous-ensemble de {a;,...,a;} de somme v. Justifier l’algorithme et
donner sa complexité.
2. Appliquer l’algorithme sur l’exemple € = 42, 8,3, 7} et V = 15.
3. Adapter le au cas où on cherche un multi-ensemble (où un même élément a; peut
apparaître plusieurs fois). Par exemple, pour € = 12,8,3,7) et V = 14, c'est
possible en prenant {47,7}
Problème : Itinéraire de métro (8 points)
On considère un réseau avec n, stations (numérotées de 1 à n,) et n, lignes de métro
(numérotées de 1 à n,). La ligne : est définie par un tableau L;|—| d’entiers de taille t; :
L;|1] et Lilt;| sont les numéros des deux stations extrémités de la ligne 2. Sur cette ligne,
les métros peuvent aller dans deux directions : de L;|1| à L;it;| ou de L; t;| à L;|1|. Dans la
première direction, la station L; 7 +1] suit L;|7 (pour 7 = 1,...,t;—1), et dans la seconde
direction c’est L;[j] qui suit L;|j + 1). Dans les deux cas, on supposera toujours que
le temps nécessaire pour aller de l’une à l’autre est à — 90 secondes.
Dans la figure ci-dessous, on représente un réseau de métro de 8 stations (n, = 8) et
3 lignes (ne = 3).
o Гл — 11,2, 4, 81 et fa = 4
bo Lo = 11,5,3, 7, 4] et to = 5
© Ls = |6,3, 4) et ts = 3
Université Paris Diderot M1 Informatique _ Année 2013-2014
1. Pour chaque ligne :, on veut connaître les distances (en temps) séparant deux
stations sur la ligne. Pour cela, on va construire une matrice Direct; de taille n, xn.
telle que le coefficient Direct; 3, k| (avec 1 < j,k < n,) représente le temps pour
aller de la station j a la station k par la ligne 7 (et il vaudra oo si les deux stations
ne sont pas reliées par la ligne 2, et il vaudra toujours 0 pour les coefficients de la
diagonale Direct;|k, k|). On donne en annexe les matrices Direct, Direct, et Directs
de l'exemple.
Donner un algorithme pour construire Direct; à partir de L;. Donner sa complexité.
2. À partir des n¿ matrices Direct, . . , Direct, , donner un algorithme pour construire
une matrice Direct de dimension n, x n, qui contient les temps minimaux pour aller
d'une station à une autre par un trajet direct (sans correspondance) : le coefficient
Direct! 7, k| représente le temps minimal pour aller de 7 à k par un trajet direct
(avec une des lignes du réseau), et oo si il n’y a pas de trajet direct entre elles (et 0
pour les éléments de la diagonale). Quelle est sa complexité ? (on donne en annexe
la matrice Direct de l’exemple).
3. On veut à présent construire des matrices D, de dimension n, x n, contenant les
temps minimaux pour aller d’une station à une autre en au plus k changements
de lignes (correspondances). Bien sûr on a : Do = Direct. Donner un algorithme
pour calculer les matrices D,,..., D, pour un k fixé. On pourra notamment cal-
culer Dr; à partir de D, et Do (en suivant les idées classiques de la programma-
tion dynamique). Ici on supposera que tout changement de ligne (toute
correspondance) prend A = 240 secondes. Quelle est la complexité de cet
algorithme ? (on donne en annexe la matrice D, de l’exemple).
4. On souhaite à présent trouver l’itinéraire correspondant aux temps minimaux 1ns-
crits dans D,. Par exemple, pour D1|6,1) (qui vaut 510), le trajet est : de la station
0, prendre la ligne 3, puis changer à la station 3 et prendre la ligne 2 et descendre
à la station 1. Pour cela, on va construire en même temps que les matrices Dy, des
matrices Via, de dimension n, x n, telles que le coefficient Via,|?, 7] est le numéro
de ligne du dernier tronçon sur le trajet allant de 7 & 7 en temps Dz, 7] (bien sûr
si k = 0 ou si Рог, 71 = Da[?, 7|, il n’y a qu’un tronçon et Via,[?, 7] sera le numéro
de ligne pour aller directement de 7 à 7). On utilisera co lorsque la liaison n’existe
pas, et U pour la diagonale. Donner un algorithme pour calculer les matrice Viaz.
Donner sa complexité. (on donne en annexe la matrice Viag de l’exemple).
0. À partir des matrices Do, D1,... , Dz et Viag, Via;,.. , Via,, comment retrouver tout
l'itinéraire (ici on se contentera des numéros de ligne à prendre) pour aller de : à
7 en temps D, là 71 ?
3/4
Université Paris Diderot ~~ M1 Informatique Année 2013-2014
Annexe
Master theorem :
а (5) + 7(п) sin>1
O(1) sin=1"
— Si f(n) = O(n'°8; "7°) avec € > 0, alors t(n) = ©(n°°8 ¢)
— Si f(n) = ©(n'°8 2) alors t(n) = O(n'°% 2 Торт)
— Si f(n) = Q(n'°% 97) pour € > 0 et si Ic < 1 tel que a- f(%) < c: f(n) pour n assez
grand, alors t(n) = O(f(n))
Soient a > 1, b > 1, f(n) une fonction positive et t(n) = |
Exemples pour le problème sur les réseaux de métro :
Questions 1 & 2. Les matrices Direct, Direct», Direct; et Direct de l'exemple sont :
de.
180 270 150 360 90 270
О 90 co 00 00 CO О oc OO 00
90 0 oo 90 co co со 180 “too 0 co © © © © ©
x oo Ú o со "UN CU CO 1180 со 0 180 90 co 90 сс
| - 1180 90 oo 0 o o ca 90 | 1 300 со 180 0 270 со 90 со
Direct; =" со со сю 0 сю co | "E 90 со 90 270 0 со 180 œ
00 © CO CO CA 0 œo со 09 OO © © © (О со со
00 CO CO CO oo ox 0 со 270 со 90 90 180 co 0 oo
270 180 co 90 со co со 0 00 O CY) © © A) co 0
‚10 со co o a NO © © 0 90 180 180 90 oo 270 270
loo 0 со со a NOU 00 oO 90 0 co 90 © © "o 1801
со oo 0 90 со 90 co co 180 co 60 90 90 940 90 o”
| loo oo 90 0 oo 180 co oo | 180 90 90 0 270 180 90 90
Directs = | x сю со 0 сю сю | "El 90 со 90 270 0 oo 180 œ
co oo 90 180 со 0 oo œ со oo 90 180 со 0 oo ©
00 CO 00 CO O co 0 œ 270 со 90 90 180 oo О со
00 CO CO 0 oo со co 0 270 180 со 90 coo oo a ©
Questions 3 & 4. La matrice D, et la matrice Viag de l'exemple sont :
WET
+ 4 x
“
0 90 180 180 90 510 270 270 0 1 2 1 2 oo 2 1
90 0 420 90 420 510 420 180 1 0 oo 1 с oo 1
180 420 0 90 99 90 90 420 2 co 0 3 2 3 2 6
> — |18 9 90 0 270 180 90 90 |. | 1 1 3 0 2 3 2 1
17:1 90 420 90 270 0 420 180 600 о 2 сю 2 2 0 со 2 x
510 510 90 180 420 0 420 5810 00 xX 3 30 0 0 oo
270 420 90 90 180 420 0 420 2 сю 222 0 0 oc
270 180 420 90 600 510 420 O 1 1 oo 1 со со oo 0
4/4
CC CUE NT NI FLT CEE TTR TE (TE EEE Ena оьлолиОООЛОлОЛОЛАЛАО ОО ОООООООА ООД
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising