• Aucun résultat trouvé

X Informatique MP 2013 — Corrigé

N/A
N/A
Protected

Academic year: 2021

Partager "X Informatique MP 2013 — Corrigé"

Copied!
4
0
0

Texte intégral

(1)

© Éditions H&K Publié dans lesAnnales des Concours 1/17

X Informatique MP 2013 — Corrigé

Ce corrigé est proposé par Guillaume Batog (Professeur en CPGE) ; il a été relu par Benjamin Monmege (ENS Cachan) et Vincent Puyhaubert (Professeur en CPGE).

En logique propositionnelle, on décrit lasyntaxe des formules construites à partir d’un ensemble de variables et à l’aide des connecteurs logiques¬,∨,∧. Puis on définit lasémantiquede ces formules à l’aide d’une relation de satisfiabilité d’une valuation des variables sur une formule. Dans la logique temporelle présentée dans ce problème, on ajoute des connecteurs temporels X (juste après), G (désormais), F (un jour) etU(jusqu’à) dont la sémantique est précisée par une relation de satisfiabilité d’un mot u sur une formule ϕ. Ce sujet a pour objectif d’étudier les langages de mots reconnus par une formule de cette logique. Il est composé de 4 parties, qu’il est préférable de traiter dans l’ordre.

La première partie, préliminaire, permet de se familiariser avec la logique tem- porelle. Elle doit être traitée assez rapidement mais avec rigueur car les ques- tions, faciles en apparence, recèlent des cas particuliers cachés.

Dans la deuxième partie, on transforme toute formule en une formule normalisée (sans connecteursFetG) qui lui est logiquement équivalente (c’est-à-dire ayant le même langage de mots). Puis on écrit une fonction vérifiant si un mot satisfait une formule normalisée. L’algorithmique sous-jacente consiste simplement à parcourir des arbres représentant les formules. La dernière question, portant sur une étude de complexité, est la plus ardue du problème.

La troisième partie présente une méthode plus efficace pour vérifier si un mot satisfait une formule. On montre en fin de partie qu’elle peut être vue comme l’exécution d’un mot sur un automate, qui peut être construit à partir de la formule.

La quatrième partie débute par deux questions classiques sur les automates.

Elles apportent une aide précieuse pour écrire ensuite une fonction décidant si une formule est satisfiable (c’est-à-dire si son langage de mots est non vide).

Pour traiter cette question, il est nécessaire d’avoir bien compris les ressorts de la troisième partie. Enfin, la dernière question, indépendante de tout le reste, propose un exemple de langage rationnel qui n’est pas un langage de mots satisfaisant une formule de la logique temporelle.

Outre que les notions abordées sont nouvelles aux concours, la difficulté de ce sujet tient au fait qu’il est impossible de traiter les questions de programmation sans avoir réussi à répondre aux questions théoriques qui les précèdent, excepté pour les fonctions faciles qui ne rapportaient que peu de points. L’intrication (naturelle) entre logique et automates en fait un sujet intéressant pour qui souhaite avoir un aperçu d’un domaine d’étude de l’informatique théorique appliquée à la vérification de programmes.

Téléchargé gratuitement surDoc-Solus.fr

(2)

© Éditions H&K Publié dans lesAnnales des Concours 2/17

Indications

Partie I

3 Rappelons que la formuleVRAI n’est vraie que pour les positions de mot.

5 Une lettre b d’un tel mot est toujours suivie de la lettre a sauf s’il s’agit de la dernière lettre du mot.

7 Écrire la sémantique de u|=ϕUψ et distinguer les casj = 0 etj 6= 0puisi= 0 et i 6= 0 dans la définition donnée par l’énoncé. Le but est de faire apparaître (u,1)|=ϕUψ.

Partie II 9 Utiliser l’opérateurU.

10 Trouver un lien entreFetG

11 La fonctionveriteNs’appuie sur les règles sémantiques de l’énoncé et sur l’équi- valence logique de la question 7.

Montrer la terminaison de la fonction par récurrence forte sur (n, k), élément deN×Nmuni de l’ordre lexicographique, oùndésigne la taille de la formule en argument etk le nombre de lettres du mot à partir de la position donnée.

Pour obtenir la complexité de la fonction, poserT(ϕ, k)le nombre d’appels récur- sifs pour une formule ϕ, un mot uet une position|u| −kpuis établir l’inégalité de récurrence

T(ϕ, k)62 + Pk

j=1

hT(ϕ1, j) + T(ϕ2, j)i

ϕ1 et ϕ2 sont les sous-formules (éventuellement vides) du connecteur à la racine de ϕ. Enfin, montrer que T(ϕ, k) 6 λk |ϕ|k avec λk indépendant de ϕ à déterminer.

Partie III

13 Démontrer la propriété par induction structurelle sur la formuleϕ.

14 Effectuer la mise à jour de bas en haut en suivant les règles obtenues au cours de la question 13.

17 Considérermajcomme la fonction de transition d’un automate.

Partie IV

20 Montrer que le plus petit mot reconnu par un automate ànétats (reconnaissant un langage non vide) est de taille au plusn1.

21 Implémenter l’algorithme de la question 19 en utilisant l’automate décrit à la question 17.

22 Démontrer par induction structurelle surϕque toute formuleϕappartient à un ensembleV(N)ouF(N) avecNN

V(N) =| ∀n>N an |=ϕ} et F(N) =| ∀n>N an 6|=ϕ}

Téléchargé gratuitement surDoc-Solus.fr

(3)

© Éditions H&K Publié dans lesAnnales des Concours 3/17

I. Préliminaires

1 NotonsP(x)la propriété de la question (x).

P(a)estvraiecar le motun’est constitué que des lettresaetbà partir de la position 4.

P(b) est faussecar elle équivaut à la propriété (u,3) |= G(papc)qui est fausse puisquea4=b /∈ {a, c}.

P(c)estvraiecarP(a)est vraie.

P(d)est vraiecara3=c et toutes les lettres précédanta3sont aoub.

2 Un mot upossède une lettrexsi et seulement siu|=Fpx. Ainsi,

Le motucontient unasuivi plus tard d’un bsi et seulement siu|=F(paFpb).

D’autres formules peuvent être trouvées pour cette question et les suivantes.

Elles sont « logiquement équivalentes » entre elles (cf. question 7). Celle pro- posée ici a l’avantage de la concision.

3 Excepté dans le cas où l’entier i ne correspond pas à une position du mot u, la formuleVRAI est toujours satisfaite par(u, i), d’où

i=|u| −1 ⇐⇒ i6|u| −1 et i+ 1>|u|

⇐⇒ (u, i)|=VRAI et (u, i+ 1)6|=VRAI i=|u| −1 ⇐⇒ (u, i)|=VRAI∧ ¬X(VRAI)

Ainsi, Fin =VRAI∧ ¬X(VRAI)

4 Puisque le motusatisfait la formuleFinuniquement à la dernière position, use termine par unasi et seulement siu|=F(paFin).

5 Décrivons un motude(ab)+:

la première lettre est una, soitu|=pa;

la dernière lettre est unb, soit u|=F(pbFin)(question 4) ;

pour toutitel que06i6|u| −1,

ai vautaoub, soit(u, i)|=papb;

siai=aalorsai+1 =b, soit(u, i)|= (¬pa)Xpb;

si ai = b et ai n’est pas la dernière lettre de u, alors ai+1 = a, soit (u, i)|= ¬(pb∧ ¬Fin)

Xpa.

Finalement,u(ab)+ si et seulement siu|=ϕavec

ϕ=paF(pbFin)G

(papb) (¬pa)Xpb

(¬pb)FinXpa

Téléchargé gratuitement surDoc-Solus.fr

(4)

© Éditions H&K Publié dans lesAnnales des Concours 4/17

6 Un motusatisfait la formuleϕsi, et seulement si, il existej6|u|−1(opérateurF) tel que :

la lettreaj est una(formulepa) ;

le suffixeaj+1. . . a|u|−1 ne contient pas la lettrea(formuleX(G(¬pa))) ;

le suffixeaj. . . a|u|−1 contient le motifbc(formuleF(pbXpc)).

L’automate suivant reconnaît le langageLϕ: a, b, c

a b, c

b c

b, c

7 Soituun mot de longueurnN. Montrons la propriété u|=ϕUψ ⇐⇒ u|=ψ ϕ(XUψ))

Puisque le mot vide ne satisfait aucune formule, cette propriété est vraie pour le mot vide. Considérons un motunon vide (n>1). Par définition,

u|=ϕUψ ⇐⇒ j6n (u, j)|=ψ et i < j (u, i)|=ϕ Distinguons les casj = 0etj>1:

u|=ϕUψ ⇐⇒ (u,0)|=ψ

ou

16j6n (u, j)|=ψ et i < j (u, i)|=ϕ Distinguons les casi= 0eti>1:

i < j (u, i)|=ϕ ⇐⇒ (u,0)|=ϕ et 16i < j (u, i)|=ϕ d’où u|=ϕUψ ⇐⇒ u|=ψ ou

u|=ϕ et 16j6n

(u, j)|=ψ et 16i < j (u, i)|=ϕ

On reconnaît la sémantique deϕUψà partir de la position 1 du motu: u|=ϕUψ ⇐⇒ u|=ψ ou

u|=ϕ et (u,1)|=ϕUψ soit u|=ϕUψ ⇐⇒ u|=ψ ϕ(XUψ))

pour tout motu. Autrement dit,

ϕUψψ ϕ(XUψ))

Une paraphrase du type « un mot usatisfaitϕUψ si, et seulement si, il sa- tisfait ψ ou s’il satisfait ϕ et si le suffixe de u obtenu en supprimant sa première lettre satisfait ϕUψ» est une justification sans doute insuffisante à un concours comme l’X.

Téléchargé gratuitement surDoc-Solus.fr

Références

Documents relatifs

Toutes les parties concernent le même pro- blème, elles ne sont donc pas indépendantes, mais les questions ne réutilisent pas les fonctions écrites dans les questions précédentes

Pour la seconde partie, commencer par montrer que la profondeur de tout pivot T ′ est supérieure ou égale à ⌈D/2⌉, puis construire un arbre de profondeur ⌈D/2⌉ obtenu par

• La partie II fait écrire des fonctions élémentaires sur les arbres combinatoires pour extraire un ensemble d’un arbre, trouver l’arbre représentant un singleton,

• La partie I permet de se familiariser avec cette nouvelle structure de données, en testant si un arbre binaire est croissant et en dénombrant les arbres croissants d’une

1 Définir deux variables position_tete1 et position_tete2 pour mémoriser la po- sition des têtes, ainsi que resultat pour accumuler la distance parcourue.. 2 Considérer une

1 Définir deux variables position_tete1 et position_tete2 pour mémoriser la po- sition des têtes, ainsi que resultat pour accumuler la distance parcourue.. 2 Considérer une

Quand on « utilise » la lettre à la position p[ℓ], ie que l’on remplit la case de indices à cette position, modifier la case en position ℓ de p afin qu’elle pointe tou- jours

Afin de rester proche du sujet tout en ayant des codes fonctionnels sous Maple, le code des deux primitives proposées par l’énoncé (allouer et taille) est donné ici.. Ces deux