ENS Informatique MP PC 2004Sujet et corrigé
Pas encore noté
Téléchargements
- Rapport du jury : non disponible
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.
Filière MP (groupes MPI/MI)
Épreuve commune aux ENS de Paris et Cachan
INFORMATIQUE
Durée : 4 heures
L'usage de calculatrices électroniques de poche à alimentation autonome, non imprimantes et sans document d'accompagnement, est autorisé. Cependant, une seule calculatrice à la fois est admise sur la table ou le poste de travail, et aucun échange n'est autorisé entre les candidats.
Le problème comporte 13 questions. Il est conseillé de traîter les questions dans l'ordre de l'énoncé, cependant on pourra aborder une question en admettant les résultats des précédentes. Les algorithmes demandés pourront être écrits dans un langage aux choix du candidat, en utilisant les structures de contrôle usuelles. On pourra par exemple utiliser un langage semblable à celui qui est décrit dans l'annexe A.
Un graphe
ET/OUG est un triplet (
V, E, f ) où
V est un ensemble fini (les sommets),
E est un sous-ensemble de
V × V (les arêtes) et
f est une application de
V dans
{ ∧, ∨ } . La taille
|G| d'un graphe
ET/OU est la somme du nombre de sommets
|V| et du nombre d'arêtes
|E| . La taille d'une liste est sa longueur. On pourra supposer que les sommets sont numérotés et donc que
V = {1, …, N} . Les éléments de
V sont de taille 1 .
Si
S est un ensemble, on note
2^S l'ensemble des sous-ensembles de
S . On pourra choisir de représenter un ensemble
S d'éléments de
V par une liste de taille
|S| ou par un tableau de booléens de taille
|V| .
On utilisera la structure de donnée des tableaux indicés par
V à valeurs dans un type de donnée
Y (tableaux de
Y en abrégé) qui représentent les applications de
V dans
Y . On dispose pour de telles données
- d'une fonction d'accès :
t(x) est la valeur det enx sit est un tableau deY etx ∈ V . Un tel accès s'effectue en temps unitaire - d'une fonction d'initialisation init qui, étant donné
y ∈ Y , renvoie un tableau représentant la fonction constante égale ày . Le coût de cette fonction est|V| . - de primitives de modification :
t(x):=y modifie le tableaut en remplaçant sa valeur enx pary . Cette opération a un coût unitaire. (Dans un langage fonctionnel, on pourra supposer l'existence d'une fonction de coût unitaire qui renvoie le tableau modifié).
Le temps nécessaire à l'exécution d'un algorithme sur la donnéed sera supposé être le nombre d'opérations élémentaires effectuées : accès à un tableau, test d'égalité sur les données atomiques (éléments deV ), test de vide d'une liste, accès au premier élément d'une liste (car), accès au reste d'une liste (cdr), ajout d'un élément à une liste (cons, : :), ajouter ou retrancher 1 à un entier, test à 0 d'un entier, or, and sur des données Booléennes. On utilisera la notationO : par exemple, la complexité d'un algorithme estO(1) si son temps d'exécution ne dépend pas de la donnée; il estO(|d|) si son temps d'exécution est, dans le cas le pire, linéaire dans la taille|d| de la donnéed .
1 Accessibilité dans les graphes ET/OU
Dans cette partie,
G = (V, E, f) désignera un graphe
ET/OU . Si
g est une application de
V dans
2^V , on dira que
g est compatible avec
G si, pour tout
s ∈ V
- ou bien
f(s) = ∨ et
- ou bien
f(s) = ∧ et
Question 1
Montrer que l'application qui à tout sommet de
G associe
V est compatible avec
G .
Question 2
Montrer que, si
g_1 et
g_2 sont deux applications compatibles avec
G , l'application
g_1 ∩ g_2 définie par :
est compatible avec
G
Question 3
Montrer qu'il existe une unique application
A_G compatible avec
G telle que pour toute application
g compatible avec
G et pour tout sommet
s de
G, A_G(s) ⊆ g(s)
L'application
A_G est appelée relation d'accessibilité de
G . L'objet de cette partie est de construire des algorithmes qui permettent de calculer
A_G
On représente les graphes ET/OU à l'aide de deux tableaux G et f indicés par les sommets du graphe :
G(s) est l'ensemble des sommets
s^′ de
G tels que
(s, s^′) ∈ E et
f(s) est égal à
f(s) .
Les ensembles de sommets seront représentés par des listes sans répétition ou des tableaux de Booléens, au choix du candidat.
Question 4
Donner des algorithmes (ou programmes) qui réalisent les fonctions suivantes :
- le test d'appartenance à un ensemble de sommets
- le test d'égalité de deux ensembles de sommets
- l'union de deux ensembles de sommets
- étant donné un ensemble de sommets
S et un tableaug indicé parV à valeurs dans les ensembles de sommets, calcule l'union desg(s) pours ∈ S . - étant donné un tableau
g indicé parV , à valeurs dans les ensembles de sommets, et un grapheET/OUG (donné par G et f ), le test de compatibilité deg avecG .
Dans chaque cas, justifier brièvement la correction de l'algorithme et donner sa complexité.
Question 5
On définit la suite d'applications
A_n(s) qui associent à chaque sommet un ensemble de sommets :
-
A_0(s) = (s) pour touts - Si
f(s) = ∨, A_(n + 1)(s) = A_n(s) ∪ ⋃_((s, s^′) ∈ E)A_n(s^′) - Si
f(s) = ∧, A_(n + 1)(s) = A_n(s) ∪ ⋂_((s, s^′) ∈ E)A_n(s^′)
- Calculer la suite
A_n(s)(n ≤ 6) pour chacun des 9 sommets du grapheG donné dans la figure 1 , dans lequelf(s) = ∨ pour les sommets représentés par des cercles etf(s) = ∧ pour les sommets représentés par des carrés. - Montrer que, pour tout graphe
ET/OUG , il existe un entierM que l'on précisera tel que, pour toutn ≥ M , pour touts, A_(n + 1)(s) = A_n(s) . On notera alorsA(s) la limite ainsi obtenue. - Montrer que
A = A_G - En déduire un algorithme de calcul de
A_G dont on précisera la complexité.
Question 6
Si
S est un ensemble de sommets de
G , on note
A_G^(− 1)(S) = {t ∈ V|S ∩ A_G(t) ≠ ∅} (ensemble des sommets desquels on peut accéder à un sommet de
S ). Donner un algorithme qui, étant donnés
G et
S , calcule
A_G^(− 1)(S) et préciser sa complexité.
Question 7
On associe à chaque sommet
s la liste de ses prédecesseurs prec(
s ) et le nombre
n(s) qui est égal au nombre de successeurs de
s si
f(s) = ∧ et égal à 1 sinon.
Soient
S, T des listes de sommets. Initialement
T est vide et
S = {s_0} . On considère l'algorithme donné dans la figure 2.
- Montrer que la complexité de cet algorithme est
O(|G|) - Montrer que, après éxecution,
T = A_G^(− 1)({s_0}) . (Ind : on pourra montrer que, sif(s) = ∧ ,n(s) = |G(s)| − |G(s) ∩ T| à chaque entrée dans la boucle externe). - Donner un algorithme qui calcule toutes les listes sans répétitions prec
[s] et tous les entiersn(s) , pours ∈ V , en temps (total)O(|G|) . - En déduire qu'il existe un algorithme linéaire qui résoud le problème d'accessibilité : étant donnés
G ets, t ∈ V , l'algorithme répond true sit ∈ A_G(s) et false sinon.

Fig. 1 - Un graphe ET/OU
Pour
s ∈ S faire
n(s):=0
Tant que non vide(S) faire
Tant que non vide
Tant que non vide
(L) faire
Fin Tq
Fin Tq
Fin Tq
Fig. 2 - Un algorithme sur les graphes ET/OU
2 Automates alternants
Un automate alternant est donné par un ensemble fini d'états
Q , un état initial
q_0 ∈ Q , un ensemble d'états finaux
Q_f ⊆ Q , un alphabet d'entrée
A , une fonction de transition
δ : Q × A → 2^Q et une fonction de type
τ : Q × A → { ∧, ∨ } . On écrira en abrégé
δ(q, a) = q_1 ∨ … ∨ q_m (resp.
δ(q, a) = q_1 ∧ … ∧ q_m ) si
τ(q, a) = ∨ ( resp.
τ(q, a) = ∧) . On écrira de plus
δ(q, a) = false (resp.
δ(q, a) = true ) lorsque
δ(q, a) = ∅ et
τ(q, a) = ∨ (resp.
τ(q, a) = ∧ ). Dans toute la suite, on supposera que
A ⊆ {0, 1} .
ε désignera le mot vide,
w_1 ⋅ w_2 la concaténation des mots
w_1 et
w_2, w(i) la ième lettre du mot
w (si elle est définie) et
|w| la longueur de
w .
Un calcul de l'automate
A = (Q, q_0, A, δ, τ) sur le mot
w est un arbre étiqueté par
Q et tel que:
- La racine de l'arbre est étiquetée par
q_0 . (C'est le noeud de l'arbre de profondeur 0 ). - Si un noeud
n de l'arbre, de profondeurk , est étiqueté parq et siτ(q) = ∨, |w| ≥ k + 1 ,w(k + 1) = a etδ(q, a) = {q_1, …, q_m} , alorsn a exactement un fils (de profondeurk + 1 ) étiqueté par l'un des étatsq_1, …, q_m . Noter que l'on doit avoirm > 0 et donc qu'un calcul ne peut pas utiliser de transitionδ(q, a) = false . - Si un noeud
n de l'arbre, de profondeurk , est étiqueté parq et siτ(q) = ∧, |w| ≥ k + 1 ,w(k + 1) = a etδ(q, a) = {q_1, …, q_m} , alorsn a exactementm fils (de profondeurk + 1 ), étiquetés respectivement parq_1, …, q_m . Noter que, sim = 0 (c'est à direδ(q, a) = true ),n est une feuille. - Tous les noeuds de
T sont de profondeur inférieure ou égale à|w| .
Un calcul de
A sur
T est réussi si, toute feuille
n de
T de profondeur
|u^′| est étiquetée par un état final. (Noter que, si le calcul ne comprend aucune feuille de profondeur
|w| , il est toujours réussi). Le langage accepté par
A est l'ensemble des mots
w de
A^∗ tels qu'il existe un calcul réussi de
A sur
w .
Question 8
On considère l'automate alternant dont la fonction de transition est donnée par :
|
|
0 | 1 |
|
|
|
|
|
|
true |
|
|
|
false | true |
|
|
|
false |
|
|
0 | 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
L'état initial est
q_0 . Il n'y a pas d'état final.
Donner des calculs réussis de l'automate sur les mots 0101, 0110, 0111.
La taille d'un automate non-déterministe est égale à la somme de son nombre d'états et de son nombre de transitions. La taille d'un automate alternant est la somme, pour tous les étatsq et pour toutes les lettres de l'alphabet
a , du cardinal de
δ(q, a) et du nombre d'états :
Donner des calculs réussis de l'automate sur les mots 0101, 0110, 0111.
La taille d'un automate non-déterministe est égale à la somme de son nombre d'états et de son nombre de transitions. La taille d'un automate alternant est la somme, pour tous les états
Question 9
Montrer que tout langage reconnu par un automate fini non-déterministe
A_1 est aussi reconnu par un automate alternant
A_2 de taille
O(|A_1|)
Question 10
Démontrer que, étant donné un automate alternant
A , on peut calculer en temps
O(|A|) un automate alternant
A^c qui accepte le complémentaire du langage accepté par
A . (Ind : on pourra considérer l'automate dual obtenu en échangeant
∨ et
∧ d'une part et les états finaux et non finaux d'autre part)
Question 11
Donner un algorithme de complexité
O(|w| × |A|) qui, étant donnés un mot
w et un automate alternant
A détermine si
w est accepté par
A .
Question 12
Montrer que tout langage reconnu par un automate alternant
A_1 est aussi reconnu par un automate non-déterministe
A_2 .
Quelle est la complexité d'un algorithme calculant
A_2 à partir de
A_1 ?
Question 13
- On considère le langage
L_n qui contient le mot unique1^(2^n) . Montrer que tout automate non-déterministe acceptantL_n comporte au moins2^n + 1 états. - Donner un automate alternant qui accepte
L_n , et de tailleO(n^2) . (Ind : on pourra considérer les étatsq_i à partir desquels sont acceptés les mots de la forme1^(2k + 1) où le ième bit dans l'écriture en base 2 dek est 0 .).
A Exemple d'un petit langage algorithmique
instructions élémentaires : l'affectation
e:=e^′ , l'affichage print
e , les appels de procédures
p(e_1, …, e_n) , l'identité skip .
structures de contrôle :
i; i^′ : composition séquentielle des instructions
begini end : parenthèsage (on peut aussi utiliser une indentation)
ife then
i else
i^′ : conditionnelle
ife then
i : abréviation de if
e then
i else skip.
forx = e to
e^′ do
i : itération (dont les bornes sont calculées avant entrée dans la boucle;
x, e, e^′ sont de type entier)
Tant quee faire
i Fin Tq : boucle, le test d'arrêt
e étant évalué à chaque itération.
structures de contrôle :
begin
if
if
for
Tant que
Pas de description pour le moment
