• Aucun résultat trouvé

Centrale Informatique optionnelle MP 2017 Corrigé

N/A
N/A
Protected

Academic year: 2021

Partager "Centrale Informatique optionnelle MP 2017 Corrigé"

Copied!
4
0
0

Texte intégral

(1)

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

Centrale Informatique optionnelle MP 2017 Corrigé

Ce corrigé est proposé par William Aufort (ENS Lyon) ; il a été relu par Martin Guy (ENS Lyon) et Benjamin Monmege (enseignant-chercheur à l’université).

Cette épreuve est consacrée aux aspects théorique et algorithmique des mots syn- chronisants associés à une machine. Une machine se comporte comme un automate fini, hormis le fait qu’on ignore les états initial et finals. La notion de mot synchro- nisant est importante en théorie des automates et apparaît la première fois dans un problème naturel : comment réinitialiser un système ayant un nombre fini d’états sans savoir dans quel état il se trouve ?

Le sujet comporte quatre parties, dont les trois premières sont indépendantes.

La première partie étudie quelques propriétés générales des mots synchroni- sants, notamment le fait que l’ensemble des mots synchronisants d’une machine forme un langage reconnaissable. Il y est question à la fois d’étude d’exemples, de questions d’implémentation plutôt faciles, et de questions utilisant des rai- sonnements proches de ceux sur les automates.

La deuxième partie, purement algorithmique, a pour objectif l’implémentation d’un algorithme qui détermine l’ensemble des sommets s d’un graphe d’au- tomate accessibles à partir d’un ensemble d’états Edonné, ainsi qu’un moyen d’obtenir un plus court chemin deEàs. Tout d’abord, on implémente une struc- ture de file à l’aide d’un tableau circulaire. Puis on étudie un algorithme dont le principe est de parcourir en largeur le graphe, en mettant à jour des structures supplémentaires permettant de retrouver les plus courts chemins. Cette partie comporte beaucoup de questions d’implémentation et de questions relatives à la correction, la terminaison et la complexité des algorithmes.

Dans la troisième partie, on construit à partir d’une formule booléenne quel- conque une machine dont on montre qu’elle admet un mot synchronisant d’une certaine longueur si et seulement si la formule est satisfiable. Cette partie mêle donc des raisonnements de théorie des automates et de logique.

Enfin, la quatrième partie permet de résoudre le problème de l’existence d’un mot synchronisant en utilisant la partie II. Elle contient des questions plus avancées sur les automates et des questions d’implémentation.

Le sujet est très bien écrit et permet de manipuler toutes les notions du nouveau programme d’informatique optionnelle (automates, graphes, algorithmique et calcul propositionnel). Cela en fait un sujet très intéressant pour la préparation aux épreuves d’informatique.

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

(2)

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

Indications

I.B Raisonner sur la parité de l’étatq.m.

I.E Il suffit de vérifier que l’étatq.m est le même pour tout étatq.

I.F Siuest synchronisant, considérer deux « calculs » partant d’états différents de la machine sur l’entréeu.

I.G.1 Reformuler la propriété « admettre un mot synchronisant » en utilisant bδ.

I.G.2 Construire un automate qui reconnaît LS(M) à partir de la machine des parties, en utilisant la propriété établie à la question I.G.1.

I.G.3 « Simplifier » l’automate construit avant d’en déterminer le langage.

I.H On peut détecter qu’un chemin passe parq0 dans une machine oùq0 est un état puits.

II.A Attention à la gestion des indices de début et de fin de file.

II.B Montrer qu’un sommet est inséré au plus une fois dans la file.

II.C La complexité de l’algorithme dépend du nombre de sommets insérés dans la file et du nombre d’arcs parcourus.

II.D Montrer le résultat par récurrence sur le nombre de tours de boucle effectués.

II.E.1 Observer que quand l’algorithme change le contenu deD[s], cela provient de la découverte d’un chemin deEà sd’une certaine longueur.

II.E.2 Raisonner par récurrence sur la valeur de ds. On pourra raisonner par l’ab- surde et obtenir une contradiction en utilisant le prédécesseur desdans un plus court chemin deEàs, ainsi que le sommet défilé juste avant l’insertion desdans la file.

II.G Utiliser la question II.E.2 pour construire le mot de longueur minimale de façon récursive.

III.A Suivre la définition de la machine donnée au début de la partie. Dans une telle machine, une transition depuis l’état qi,j correspond à la recherche de la variablexj dans la clausei.

III.C Remarquer que les états accessibles à partir de qi,j en une transition sont qi,j+1 (s’il existe) etf, puis généraliser cette remarque.

III.D Utiliser le lien entre l’appartenance d’un littéral dans une clause et les tran- sitions de la machine.

III.E Raisonner comme à la question III.D. Penser à compléter le mot synchroni- sant de la machine pour obtenir une distribution de vérité totale.

IV.A.1 Montrer que cette suite est décroissante et calculer|Q.ur|.

IV.A.2 Pour l’implication réciproque, la propriété dit qu’on peut synchroniser deux états quelconques. On peut chercher ensuite à synchroniser trois états, puis formuler une récurrence pour synchroniser tous les états.

IV.C Les fonctionsnb_to_setetset_to_nbpermettent de passer entre les repré- sentations deqpar un entier et par un ensemble d’états.

IV.D Attention au nombre d’états du graphe retournéGeR.

IV.E Reformuler la caractérisation de la question IV.A.2 en terme d’accessibilité dans le grapheGeR.

IV.F Implémenter la méthode proposée à la question IV.E.

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

(3)

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

I. Considérations générales

I.A SoitMune machine ayant un seul état, que l’on noteq. Pour tout motmdeΣ, on a nécessairementq.m=q, doncmest un mot synchronisant. Par conséquent,

Tout mot est synchronisant pour une machine à un état.

Il faut bien comprendre qu’un mot m est synchronisant si, en partant de n’importe quel état de la machine et en lisant m, on tombe toujours sur le même état.

I.B Remarquons qu’une transition dans la machineM1 change la parité de l’état courant. Pour toutmΣ,1.met 2.m ont alors des parités opposées. Or, sim est un mot synchronisant,1.m= 2.m, ce qui est impossible. Finalement,

M1n’admet aucun mot synchronisant.

I.C Considérons le mot de trois lettres bcb. On a 1.bcb= 1.cb= 4.b=δ(4, b) = 4 2.bcb= 1.cb= 4

De même, 3.bcb= 4.cb= 3.b=δ(4, b) = 4 4.bcb= 4.cb= 4

ce qui prouve que bcbest un mot synchronisant pourM2.

I.D Pour implémenter la fonction delta_etoile, on suit la définition récursive deδrappelée dans l’énoncé : si le mot est vide, on renvoie l’état en entrée, sinon on fait une étape de calcul avecδ, et le reste du calcul est traité par appel récursif.

let rec delta_etoile machine etat mot = match mot with

| [] -> etat

| x::u -> delta_etoile machine (machine.delta etat x) u;;

I.E On utilise directement la définition d’un mot synchronisant : on veut vérifier, étant donné un mot m, s’il existe un état q0 tel que pour tout état q, q.m = q0. On trouve cet étatq0en partant d’un état quelconque de la machine, par exemple0, et en lisantm, soitq0= 0.m. Il reste à vérifier la propriété pour tous les autres états à l’aide d’une fonction récursive.

let est_synchronisant machine mot =

let etat_zero = delta_etoile machine 0 mot in let rec verifie_etat machine mot etat =

if etat = 0 then true

else if (delta_etoile machine etat mot <> etat_zero) then false else verifie_etat machine mot (etat-1)

in verifie_etat machine mot (machine.n_etats-1);;

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

(4)

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

On pourrait aussi utiliser une bouclewhiledécroissante indicée par l’état à vérifier à l’aide d’une référence. On utilise une autre référence pour détecter si un état ne vérifie pas la propriété, auquel cas on peut sortir de la boucle directement. La boucle while simule alors la fonction auxiliaire récursive précédente.

let est_synchronisant_imperatif machine mot = let etat_zero = delta_etoile machine 0 mot and etat = ref (machine.n_etats-1)

and continue = ref true in

while (!continue && !etat > 0) do

if (delta_etoile machine !etat mot <> etat_zero) then continue := false

else etat := !etat-1 done;

!continue;;

I.F SoitMune machine ayant un mot synchronisantu=u1· · ·un. Soientq0 et q0

deux états deMdistincts (c’est possible carMa au moins deux états). Notons

∀i∈ {1, . . . , n} qi=q0.(u1· · ·ui) et qi=q0.(u1· · ·ui)

les états successivement rencontrés en lisant le mot u à partir des états q0 et q0

respectivement. Soit i le plus grand entier inférieur ou égal à n tel que qi 6= qi. Commeuest synchronisant, qn =q0.u=q0.u =qn. De plus, q0 6=q0. Ceci prouve queiest bien défini. On pose enfinq=qi,q =qi etx=ui+1. Par définitionq6=q, etq.x=qi.ui+1=qi+1=qi+1=q.x. Ainsi,

Une condition nécessaire d’existence d’un mot synchronisant est donnée par

xΣ qQ qQ q6=q et q.x=q.x

De manière informelle, ce résultat dit que si une machine admet un mot synchronisant, alors il existe une lettre qui synchronise deux états différents de la machine. La question IV.A.2 montre un résultat similaire mais sous forme de condition nécessaire et suffisante.

I.G.1 De la même manière que pourδ, on peut étendre la fonction de transitionδben une fonction deQb×Σ, que l’on notebδ.Madmet un mot synchronisant si et seule- ment s’il existe un motuΣet un étatq0Qtel que pour tout étatqQ,q.u=q0, ce qui équivaut à dire que, dans la machineM,b bδ(Q, u) ={q0}. Autrement dit,

Madmet un mot synchronisant si et seulement si il existe dansMb un état singleton{q0}accessible depuis l’étatQ.

I.G.2 Pour prouver qu’un langage est reconnaissable, une méthode générale consiste à exhiber un automate fini qui reconnaît ce langage. Cette mé- thode semble particulièrement intéressante ici car la notion de machine est très proche de celle d’automate.

À une machineM, on associe l’automate déterministeAM= (Q,b Σ,I,F,bδ)I = Q est l’état initial de l’automate etF ={{q}, qQ}, constitué des singletons, est l’en- semble des états finals de l’automate. Un motuΣest reconnu par l’automateAM

si et seulement sibδ(Q, u)F, ce qui d’après la question I.G.1 revient à dire queuest

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

Références

Documents relatifs

Comme pour la question précédente, la librairie standard de Caml contient la fonction union : ’a list -&gt; ’a list -&gt; ’a list, qui fait la même chose. À nouveau, il est

7 Construire la liste l ainsi qu’un dictionnaire associant à chaque URL sa position dans la liste à l’aide des fonctions unique et aplatir.. Pour connaître la position d’une URL

IV.D.1 Utiliser la fonction est_clique de la question I.E.3, puis montrer qu’elle teste si l’ensemble représenté par la liste xs de longueur k est une clique d’un graphe à m

Comme on suppose le tableau de taille au moins deux, le cas de base de la fonction récursive correspond au cas où le sous-tableau contient deux éléments, l’invariant donne

Une solution alternative aurait été d’utiliser des références pour stocker les valeurs (le type d’un n-uplet aurait alors été int ref list), mais cela n’est pas cohérent

La partie II s’intéresse au fonctionnement du filament en régime alternatif, d’abord en régime sinusoïdal puis dans le cas d’un signal rectangulaire de rapport cyclique α..

I.G Pour retrouver le résultat autrement, on peut remarquer que l’énergie pré- sente dans la cavité ne peut être dissipée qu’en sortant soit en direction du détecteur, soit

Décomposons la chute en deux temps : la chute libre jusqu’à z = z max puis le système, toujours soumis à son poids, est maintenant soumis à la force de frottement. En réalité,