Adloun

Corrigé Mines-Ponts 2025 Informatique option MP — Partie 4 (Q22 à Q28) : Apprentissage d'un automate minimal par cribles

Sujet officiel du concours Mines-Ponts, session 2025, épreuve Informatique option MP. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Un arbre discriminant est un crible s'il est accessible, démêlant, et si étiquette une de ses feuilles. L'automate associé au crible a pour états les étiquettes des feuilles, pour état initial , pour transitions , et pour états finals les étiquettes des feuilles du sous-arbre gauche. Pour et , le sujet donne :

Q22. Écrire automaton_of_disctree (t:disctree) : automaton, automate associé au crible , en complétant le gabarit :


let automaton_of_disctree (t:disctree) : automaton =
  { initial = .... ; transitions = .... ; finals = .... }

Q23. Si n'est ni vide ni égal à , construire à l'aide de l'oracle un premier crible à un nœud interne et deux feuilles.

Pour Q24 à Q26, est l'automate d'un crible , et Oracle.equiv renvoie un contre-exemple non vide . Pour : , (ainsi ), , , et .

Q24. Montrer que .

Le sujet admet ensuite qu'il existe avec et , et qu'alors sépare et .

Q25. Écrire split (t:disctree) (c:word) : state * state * disc renvoyant , où est le plus petit de ces indices.

Le sujet admet que l'arbre obtenu en remplaçant la feuille par un nœud de feuilles et , dans un ordre ou dans l'autre, est encore un crible :

Q26. Écrire substitute (t:disctree) ((pp,p,s):state * state * disc) : disctree, qui renvoie quand est le résultat de split.
Q27. Concevoir un algorithme complet qui apprend par requêtes d'appartenance et d'équivalence et renvoie un automate ; justifier sa terminaison par un variant.
Q28. Montrer que l'automate obtenu a un nombre minimal d'états parmi les automates qui reconnaissent .

Corrigé

Lemme préliminaire.

Soit un crible et son automate associé. (a) Pour tout état , . (b) Pour tout mot , .

Preuve. (a) Par accessibilité, le criblage de aboutit à la feuille ; il passe donc dans le sous-arbre gauche si et seulement si son premier pas, à la racine , va à gauche, c'est-à-dire si et seulement si . Ainsi . (b) est une étiquette de feuille, donc par accessibilité : et ont le même criblat, et Q21 (un crible est démêlant) donne .

Q22. Les transitions criblent (Q16) ; les états finals sont les feuilles du fils gauche (Q14), liste calculée une seule fois, à la construction :


let automaton_of_disctree (t:disctree) : automaton =
  { initial = [] ;
    transitions = (fun w x -> sift t (w @ [x])) ;
    finals = (match t with
              | Node (g, _, _) -> let gauche = states_of_disctree g in
                                  (fun w -> List.mem w gauche)
              | Leaf _ -> (fun _ -> false))   (* exclu : crible démêlant *)
  }

Le mot est [] ; w @ [x] est le mot , et sift t renvoie , qui est bien une étiquette de feuille, donc un état. finals est une fonction, comme l'exige le type (même remarque du jury qu'en Q7). Par le lemme (a), on pourrait aussi écrire finals = Oracle.mem, mais la définition du sujet ne coûte aucune requête. (Exécutée sur avec un oracle pour : on retrouve exactement les transitions de la figure, seul est final, et Oracle.equiv répond Yes : est un crible dont l'automate reconnaît .)

Q23. On pose une requête d'appartenance pour , puis une requête d'équivalence pour l'automate à un seul état , qui boucle sur lui-même, final si et seulement si :


let premier_crible () : disctree =
  let vide_dans_l = Oracle.mem [] in
  let a1 = { initial = [] ; transitions = (fun _ _ -> []) ;
             finals = (fun _ -> vide_dans_l) } in
  match Oracle.equiv a1 with
  | Oracle.Yes -> failwith "L est vide ou plein"
  | Oracle.Counterexample c ->
    if vide_dans_l then Node (Leaf [], [], Leaf c)
    else Node (Leaf c, [], Leaf [])

Le contre-exemple existe : reconnaît si et sinon ; comme n'est ni l'un ni l'autre, l'oracle répond par un mot sur lequel se trompe, donc .

L'arbre obtenu est un crible : une racine , une feuille et une feuille , avec puisque . Il est démêlant, est une feuille, et il est accessible : on crible en allant à gauche si et seulement si , et la feuille gauche est précisément celle des deux mots qui est dans . Ce que le correcteur attend : un vrai crible, accessible et démêlant (le jury note que cette exigence est rarement respectée), à deux feuilles exactement. (Exécuté avec : , le contre-exemple le plus court est , et l'on obtient Node (Leaf [A;A], [], Leaf []).)

Q24. Conventions. Pour , le mot est vide : , et . (Le sujet imprime ; c'est une coquille pour , seule lecture compatible avec .)

Côté criblat. D'après le lemme (b), .

Côté automate. est l'état atteint par en lisant , donc accepte si et seulement si , c'est-à-dire, par le lemme (a), si et seulement si : .

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →