Vous êtes sur la page 1sur 5

Master 1 I2A– Année 2019-2020

Evaluation de programme
Centre de Tele-enseignement
Universitaire
Durée : 3 heures – Session 1 du 13 Mai 2020
Ce sujet comporte : 5 page(s)
Matériel autorisé : Examen à distance

Exercice 1 : Machine mystère


On considère la machine de Turing (Q, q0 , F, Γ, B, Σ, δ) telle que : M = (Q, q0 , qf , {a, b, c, B}, B, {a, b, c}, δ),
où Q = {q0 , q1 , q2 , qf } et δ est définie par le tableau suivant :

δ a b c B
q0 (q0 , a, D) (q1 , b, D) (q0 , c, D)
q1 (q2 , a, D) (q1 , b, D) (q1 , c, D)
q2 (q2 , a, D) (q2 , b, D) (qf , c, D)

Question 1 :
Que reconnaît cette machine de Turing ? Justifier et dérouler un exemple et un contre-exemple
pour étayer vos propos.

Exercice 2 : Machine de Turing

Question 1 :
Proposer une machine de Turing qui reconnaît les mots écrits sur l’alphabet {a, b, c} et qui
contiennent exactement deux a ou exactement deux c (mais pas forcément consécutifs). Vous
expliquerez le rôle de chacun des états de votre machine, et justifierez votre solution à l’aide
d’exemples.

Exercice 3 : Complexité
On appelle une matrice "creuse", une matrice pour laquelle la plupart (90%) des éléments a une
valeur nulle. Ainsi, pour la représenter, on propose ces deux solutions :
1) La matrice est représentée par un tableau à deux dimensions dont les cases contiennent des
entiers.
2 )La matrice est représentée par un tableau à une seule dimension, mais constituée d’une
structure de trois entiers ; un triplet d’entiers (l, c, v) correspondant au numéro de la ligne (l), de la
colonne (c) et de la valeur (v) des éléments non nuls de la matrice.

Question 1 :
Proposer une matrice creuse de dimension 6, représentée par un tableau à deux dimensions et
par un tableau à une dimension, comme défini précédement.

Question 2 :
On souhaite, pour une matrice de dimension n, calculer la somme des différents éléments qui la
composent. On demande d’écrire, pour chaque représentation, un algorithme permettant de retourner
cette somme et donner, en le justifiant,
1. leur complexité spatiale (espace mémoire utilisé, c’est-à-dire le nombre d’entiers stockés) et
2. leur complexité temporelle (nombre d’opérations effectuées)

1/5
Epreuve de Evaluation de programme

Question 3 :
Que peut-on conclure si l’on devait comparer les deux algorithmes précédents ? Prouver qu’il
existe une valeur spécifique du nombre d’éléments non nuls à partir de laquelle une méthode l’emporte
sur l’autre.

Exercice 4 : Arbres binaires

Question 1 :
Dessiner (sans démonstration ni explication) l’arbre binaire de recherche que l’on obtient à partir
de l’arbre vide en insérant successivement : 5, 3, 12, 8, 4, 10, 2, 13, 9, 1, 6. On considère que les
valeurs les plus petites seront placées dans le bas des branches de l’arbre.

Question 2 :
On définit un arbre par arbrevide quand l’arbre est vide, ou par le triplet (r, g, d) avec r,g,d
respectivement la valeur racine, l’arbre gauche et l’arbre droit.
Par exemple arbrevide, (4, (3, arbrevide, arbrevide), arbrevide) sont des arbres.

fonction mystere(Arbre a, entier i)


debut
si (A!=arbrevide) alors
A=(r,g,d);
si (i modulo 2 !=0) alors
mystere(g,i+1);
afficher(r);
sinon
afficher(r);
mystere(d,i+1);
finsi
finsi
fin

Indiquer l’affichage résultant de l’exécution de mystère sur l’arbre de la question 1 et de l’entier


0.

Question 3 :
Donner, en le justifiant, la complexité en nombre d’affichages dans le pire des cas de la fonction
mystere.

Question 4 :
Le miroir d’un arbre binaire (pas forcément de recherche) est l’arbre obtenu en inversant les
branches droites et les branches gauches d’un arbre comme illustré par la figure 1.
Proposer une fonction qui prend en argument un arbre et le transforme en son miroir.

Question 5 :
Donner, en le justifiant, la complexité en nombre d’appels récursifs dans le pire des cas de cette
fonction.

2/5
Epreuve de Evaluation de programme

2 2
6 6
4 4

5 9 9 5
3 3

1 12
19 12 19 1

arbre A arbre miroir de A

Figure 1 – Le miroir d’un arbre

Exercice 5 : P et NP

Question 1 :
En informatique, la conjecture P = N P fait partie des plus importants problèmes non résolus ce
jour.
En vous appuyant sur les éléments vus en cours, répondez aux questions suivantes, sous la forme
d’un texte d’une vingtaine de lignes, argumentant vos propos. Votre texte rédigé permettra d’adresser
la problématique P = N P et de répondre entre autres aux questions suivantes :
1. Quand on évoque P = N P , que signifie qu’un problème p ∈ P ?
2. Quand on évoque P = N P , que signifie qu’un problème p ∈ N P ?
3. Donner des exemples de problèmes de P et de N P .
4. Que signifie le problème P = N P , considéré comme le problème fondamental du calcul
mathématique ?

Exercice 6 : Complexité et questions de cours

Question 1 :
Pour déterminer l’efficacité d’un algorithme, quelles grandeurs devons nous utiliser ?
1. Processeur et mémoire
2. Complexité et capacité
3. Temps et espace
4. Données et espace

Question 2 :
Quelle est la complexité temporelle du code suivant ?
Justifier votre réponse. (Une réponse sans justification ne sera pas comptée)

3/5
Epreuve de Evaluation de programme

int test(int n)
{
int c = 0;
for (int i = 0; i < n; i++)
for (int j = i; j > 0; j--)
c = c + 1;
return c;
}

Question 3 :
Considérons les boucles suivantes :
1. f or(i = 0; i < n; i + +)
2. f or(i = 0; i < n; i = i + 2)
3. f or(i = 1; i < n; i = i ∗ 2)
4. f or(i = n; i < −1; i = i/2)
Si n est un entier positif, quelle boucle se termine le plus rapidement ?
Justifier votre réponse.(Une réponse sans justification ne sera pas comptée)

Question 4 :
Quelle est la complexité temporelle de la fonction ci-dessous ?
Justifier votre réponse. (Une réponse sans justification ne sera pas comptée)

void test(int n)
{
int i = 0, k = 0;
for(i=0; i < n; ++i)
while(k < n)
k++;
}

Question 5 :
Considérons la fonction suivante

int test(int n) {
int i, j, k = 0;
for (i = n/2; i <= n; i++)
for (j = 2; j <= n; j = j * 2)
k = k + n/2;
return k;
}

Quelle est la valeur retournée par la fonction ci-dessus ?


Justifier votre réponse. (Une réponse sans justification ne sera pas comptée)

Question 6 :
Trier par ordre croissant ces 4 fonctions, quand n tend vers des valeurs excessivement grandes.

4/5
Epreuve de Evaluation de programme

1. f1 (n) = 2n
3
2. f2 (n) = n 2
3. f3 (n) = n ∗ log(n)
4. f4 (n) = 2log(n)

5/5

Vous aimerez peut-être aussi