0% ont trouvé ce document utile (0 vote)
31 vues2 pages

Examen Algorithmique M1 - 2009

Transféré par

Anoumedem Rochelin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
31 vues2 pages

Examen Algorithmique M1 - 2009

Transféré par

Anoumedem Rochelin
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmique — M1

Examen du 18 juin 2009


Université Paris Diderot

Documents autorisés : Deux feuilles de papier format A4


Durée : 3h

On applique les cours

Exercice 1 – Multiplication
En utilisant l’algorithme de Karatsuba-Offman multipliez 2 nombres binaires : 10011011 et
10111010.

Exercice 2 – Récurrence
Étant donné que
T (n) = 8T (bn/2c) + n3 + 3
trouvez le comportement asymptotique de T (n). Justifiez votre réponse.

Exercice 3 – Les mariages


5 enseignants (A,B,C,D,E) doivent enseigner 5 cours (I,J,K,L,M). Il faut avoir un enseignant
pour chaque cours et un cours pour chaque enseignant. Les compétences des enseignants sont
représentées par un tableau suivant :
I J K L M
A X X X
B X X X
C X X
D X X
E X X
Pour affecter les cours aux enseignants :
1. choisissez un algorithme de cours ;
2. appliquez l’algorithme (écrivez/dessinez toutes ses étapes) ;
3. donnez le résultat final : quel enseignant fait quel cours.

1
On invente des algorithmes

Exercice 4 – Méthode imposée


On cherche le maximum d’un tableau de B de n éléments.
1. Écrivez un algorithme de type diviser-pour-régner qui résout ce problème.
2. Analysez sa complexité.

Exercice 5 – Un mauvais algorithme


Étant donné un graphe non-orienté G = (V, E) (de N sommets) représenté par une matrice
d’adjacence M[i, j] (de taille N × N) et un entier M on cherche une clique de C sommets. Dans
cet exercice il faut trouver un algorithme retour-arrière qui résout ce problème. On va appeler
une solution partielle un tableau d’entiers [i1 , . . . , ik ] dans l’ordre croissant tel que les sommets
[vi1 , . . . , vik ] forment une clique.
1. Écrivez une fonction booléenne test(B, k, M, N) qui teste est-ce que le tableau B[k] est une
solution partielle pour un graphe représenté par un tableau (matrice d’adjacence) M[N, N].
2. Comment trouver une solution partielle de taille 0 ? Comment à partir d’une solution partielle
de taille k passer à ses extensions de taille k + 1 ? Comment dire est-ce qu’on a déjà trouvé la
clique de taille C ?
3. Écrivez un algorithme retour-arrière de recherche de clique.
4. Estimez la complexité de votre algorithme.

Exercice 6 – La somme
Dans un tableau d’entiers B on cherche un sous-ensemble de B qui a la somme S donnée. Par
exemple pour B = [3, 4, 5, 11] et S = 16 il y a une solution 16 = 11 + 5. Pour le même B et pour
S = 10 il n’y a pas de solution.
Le problème algorithmique à résoudre dans cet exercice est le suivant : étant donné B =
p1 , p2 , . . . , pm (trié) et S répondre (VRAI ou FAUX) est-ce que B a une partie de somme S. On
utilisera la programmation dynamique pour concevoir un algorithme qui résolve ce problème.
1. Soit P(i, j) un booléen qui est vrai ssi on peut obtenir j comme somme d’une partie de i premiers
éléments de tableau : p1 , . . . , pi Écrivez les équations de récurrence pour cette fonction sans
oublier les cas de base.
2. Écrivez un algorithme efficace (récursif avec “marquage” ou itératif) pour calculer P.
3. Analysez la complexité de votre algorithme.
4. Appliquez votre algorithme à l’exemple ci-dessus (B = [3, 4, 5, 11] et S = 9).

Vous aimerez peut-être aussi