TDserie 1
TDserie 1
Exercice 1: 12 points
1. Rappeler le principe du tri fusion et évaluer sa complexité. Quelle est la
complexité de cet algorithme si à chaque étape le vecteur à trier est divisé
en 3 puis les 3 sous-vecteurs (V1 , V2 , V3 ) une fois triés sont fusionnés en 2
temps c’est-à-dire : V ′ = V1 + V2 puis V = V ′ + V3 .
2. Soit un vecteur V de n entiers. Proposer un algorithme DPR de complexité
O(3n/2) pour déterminer le minimum et le maximum des éléments de V .
3. Un élément x est majoritaire dans un vecteur V de n éléments si son
nombre d’occurrences est supérieur à n/2. Proposer un algorithme DPR
qui retourne l’élément majoritaire d’un vecteur V de n entiers s’il existe
(l’algorithme retourne null sinon). Évaluer la complexité de l’algorithme.
1
4. Une stratégie gloutonne est de commencer par les multiplications qui éli-
mine les grandes tailles (si l’on multiplie une matrice Li × Ci par une
matrice Lj × Cj avec Ci = Lj on obtient une matrice Li × Cj et Ci a été
éliminé). Donner un exemple qui montre que cette stratégie ne donne pas
la solution optimale.
5. Une autre stratégie gloutonne est d’effectuer les multiplications les plus
coûteuses en premier lieu ; c’est-à-dire multiplier à chaque étape les ma-
trices voisines Mi et Mj qui maximisent le nombre de multiplication Li ∗
Ci ∗ Cj . Donner un exemple qui montre que cette stratégie ne donne pas
la solution optimale.
X
n X
j
M =c∗ (fσ(j) ∗ sσ(k) )
j=1 k=1
Par exemple pour deux enregistrements, si les enregistrements sont stockés dans
l’ordre (e2 , e1 ), le temps moyen est donc c ∗ (f2 ∗ s2 + f 1 ∗ (s2 + s1 )), soit
c(s2 + f1 ∗ s1 ). Proposer une méthode gloutonne de stockage qui donnera toujours
une temps moyen d’accès optimal. En entrée du problème on a : n le nombre
d’enregistrements, s1 , s2 , ..., sn les longueurs des enregistrements, f1 , f2 , ..., fn
les fréquences d’accès. En sortie l’algorithme doit retourner l’ordre de stockage
optimal, Pc’est-à-dire une
Pj permutation σ(1), ..., σ(n) des enregistrements telle que
n
M = c ∗ j=1 (fσ(j) ∗ k=1 sσ(k) ) soit minimal.
Exercice 5:
1. Une association cherche à assurer une permanence lors d’une journée.
Chaque adhérent donne l’intervalle de temps pour lequel il est disponible.
On suppose que l’union des intervalles de temps correspond à la journée,
i.e. qu’à tout moment un adhérent est disponible.
(a) Proposer un algorithme qui permet d’assurer la permanence en mobi-
lisant un minimum de personnes.
(b) Comment assurer la permanence en minimisant le temps maximum de
présence d’un adhérent ?
2. Pour colorier un graphe on peut utiliser les stratégies gloutonnes suivantes.
Stratégie 1 : prendre les sommets dans un ordre au hasard et leur at-
tribuer la plus petite couleur possible (en respectant les contraintes de
coloriage). Stratégie 2 : trier les sommets par degré décroissant ; prendre
les sommets dans cet ordre et leur attribuer la plus petite valeur possible.
En exhibant des contre-exemples montrer qu’aucune de ces stratégies ne
garantie l’optimum.
2
Exercice 6: On dispose de deux bases de données comportant chacune n enre-
gistrements. On suppose que chaque enregistrement est un entier et que les 2n
valeurs sont toutes distinctes. On veut déterminer l’élément médian parmi ces 2n
valeur (c’est-à-dire le n-ième plus petit élément). Pour accéder à un élément d’une
des base de donnée, il faut effectuer une requête sur la base concerné en lui four-
nissant comme paramètre un entier k ; la base de données retourne alors le k-ième
plus petit de ces éléments. Les requêtes étant coûteuses, pour résoudre le pro-
blème, on veut en effectuer le moins possible. Écrire un algorithme qui retourne
le médian des deux bases de données en effectuant au plus O(logn) requêtes.
3
4. Déduire des questions précédentes un algorithme de programmation dy-
namique pour le problème du plus grand carré blanc.
Exercice 10: Soit s[1...n] un chaîne de caractères sans aucun espace (ex : Ilé-
taitunefoisuneprincesse...). On cherche à savoir si cette chaîne correspond à un
texte lisible dont on aurait effacé les espaces et le cas échéant, on veut pouvoir
reconstituer ce texte. Pour cela, on dispose d’un dictionnaire un peu particulier :
il s’agit d’une fonction qui, étant donné une chaîne de caractères t quelconque,
renvoie V RAI si t représente un mot correct et F AUX sinon. Dans un premier
temps, on cherche uniquement à savoir si s correspond à un texte valide.
1. Quelle est la sous-structure optimale dont on a besoin pour résoudre ce
problème ?
2. Caractériser (par une équation) cette sous-structure optimale.
3. Comment détermine-t-on si s correspond à un texte correct ?
4. Écrire un algorithme de programmation dynamique pour le faire.
5. Quelle est la complexité de cet algorithme ?
6. Modifier l’algorithme pour qu’il renvoie également les positions des es-
paces. Sa complexité est-elle modifiée ?
Exercice 11: On veut construire une tour la plus haute possible à partir de
différentes briques. On dispose de n types de briques et d’un nombre illimité de
briques de chaque type. Chaque brique de type i est un parallélépipède de taille
(xi , yi , zi ) et peut être orientée dans tous les sens, deux dimensions formant la base
4
et la troisième dimension formant la hauteur. Dans la construction de la tour,
une brique ne peut être placée au dessus d’une autre que si les deux dimensions
de la base de la brique du dessus sont strictement inférieures aux dimensions de
la base de la brique du dessous. Proposer un algorithme efficace pour construire
une tour de hauteur maximale.
Exercice 13: Vous avez décidé d’ouvrir une fabrique de bonbons. Vous envisagez
de produire deux types de bonbons :A et B, les deux composé uniquement de
sucre, de noix et de chocolat.A l’heure actuelle, vous avez en stock 100 kg de
sucre, 20 kg de noix, et 30 kg de chocolat. Le mélange utilisé pour faire B doit
contenir au moins 20% de noix. Le mélange utilisé pour préparer A doit contenir
au moins 10% de noix et 10% de chocolat. Chaque kilo de B peut être vendu
5
pour 25O Fcfa, et chaque kilo de A pour 200 Fcfa. Formuler un PL qui vous
permettra de maximiser vos revenus de vente. Rédiger en forme standard et en
forme canonique.
Exercice 14: Un fabricant de raquettes de tennis fait un bénéfice de 800 Fcfa sur
chaque raquette ordinaire et de 1500 Fcfa sur chaque grande raquette. Pour satis-
faire à la demande des vendeurs, la production journalière de raquettes ordinaires
devrait se situer entre 30 et 80, et la production journalière de grandes raquettes
entre 10 et 30. Pour maintenir une bonne qualité, le nombre de raquettes pro-
duites ne devrait dépasser 80 par jour. Combien de raquettes de chaque type
faudrait-il fabriquer quotidiennement pour réaliser un bénéfice maximum ?