Version interactive avec LaTeX compilé
ÉPREUVE MUTUALISÉE AVEC E3A-POLYTECH ÉPREUVE SPÉCIFIQUE - FILIÈRE MP
INFORMATIQUE
N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.
RAPPEL DES CONSIGNES
- Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
- Ne pas utiliser de correcteur.
- Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont interdites
Le sujet est composé de trois parties, toutes indépendantes.
Partie I - Logique et calcul des propositions
Dans la suite, les variables propositionnelles seront notées
. Les connecteurs propositionnels
(conjonction),
(disjonction),
(implication) et
(équivalence) seront classiquement utilisés. De même, la négation d'une variable propositionnelle
(respectivement d'une formule
) sera notée
resp.
.
I. 1 - Définitions
Définition 1 (Minterme, maxterme).
Soit un ensemble de
variables propositionnelles.
Soit
- On appelle minterme toute formule de la forme
où pour tout est un élément de . - On appelle maxterme toute formule de la forme
où pour tout est un élément de .
Les mintermes (respectivement maxtermes)
et
resp
et
) sont considérés identiques si les ensembles
et
le sont.
Q1. Donner l'ensemble des mintermes et des maxtermes sur l'ensemble (
).
Définition 2 (Formes normales conjonctives et disjonctives).
Soit une formule propositionnelle qui s'écrit à l'aide de
variables propositionnelles
.
Définition 2 (Formes normales conjonctives et disjonctives).
Soit
- On appelle forme normale conjonctive de
toute conjonction de maxtermes logiquement équivalente à . - On appelle forme normale disjonctive de
toute disjonction de mintermes logiquement équivalente à .
Définition 3 (Système complet).
Un ensemble de connecteurs logiques C est un système complet si toute formule propositionnelle est équivalente à une formule n'utilisant que les connecteurs de .
Un ensemble de connecteurs logiques C est un système complet si toute formule propositionnelle est équivalente à une formule n'utilisant que les connecteurs de
Par définition,
est un système complet.
I. 2 - Le connecteur de Sheffer
On définit le connecteur de Sheffer, ou d'incompatibilité, par
.
Q2. Construire la table de vérité du connecteur de Sheffer.
Q2. Construire la table de vérité du connecteur de Sheffer.
Q3. Exprimer ce connecteur en fonction de
et
.
Q4. Vérifier que
.
Q5. En déduire une expression des connecteurs et
en fonction du connecteur de Sheffer. Justifier en utilisant des équivalences avec les formules propositionnelles classiques.
Q5. En déduire une expression des connecteurs
Q6. Donner une forme normale conjonctive de la formule
.
Q7. Donner de même une forme normale disjonctive de la formule
.
Q8. Démontrer par induction sur les formules propositionnelles que l'ensemble de connecteurs est un système complet.
Q8. Démontrer par induction sur les formules propositionnelles que l'ensemble de connecteurs
Q9. Application : soit
la formule propositionnelle
. Donner une forme logiquement équivalente de
utilisant uniquement le connecteur de Sheffer.
Partie II - Le problème de Freudenthal (Informatique pour tous)
L'objectif de cette partie est de proposer une implémentation en langage Python d'une solution au problème de Freudenthal.
Hans Freudenthal (1905-1990), mathématicien allemand naturalisé néerlandais, spécialiste de topologie algébrique, est connu pour ses contributions à l'enseignement des mathématiques. En 1969, il soumet à une revue mathématique le problème suivant:
Hans Freudenthal (1905-1990), mathématicien allemand naturalisé néerlandais, spécialiste de topologie algébrique, est connu pour ses contributions à l'enseignement des mathématiques. En 1969, il soumet à une revue mathématique le problème suivant:
Un professeur dit à ses deux étudiants Sophie et Pierre : "J'ai choisi deux entiers
et
, tels que
et
. J'ai confié à Pierre la valeur
du produit de
et
. J'ai confié à Sophie la valeur
de la somme de
et
. Pierre, Sophie, je vous demande de trouver
et
."
Pierre et Sophie engagent alors le dialogue suivant :
Pierre et Sophie engagent alors le dialogue suivant :
- Pierre: "Je ne connais pas les nombres x et y."
- Sophie : "Avant même que tu me le dises, je savais déjà que tu ne connaissais pas x et y."
- Pierre : "Ah! eh bien maintenant je connais x et y."
- Sophie : "Très bien, mais moi aussi alors maintenant je connais x et y."
Dans la suite, on note
et
.
Si la discussion entre Sophie et Pierre semble stérile, une quantité importante d'informations est cependant échangée qui amène au bout du dialogue à la solution.
Q10. À quelle condition sur et
Pierre aurait-il pu dire dès le début : "Je connais
et
"?
Puisque Pierre ne peut répondre tout de suite, cela signifie que le produit peut s'écrire pour plusieurs couples d'entiers
.
Q11. Écrire une fonction CoupleProd(n) qui renvoie la liste des entiers pour lesquels il existe au moins deux couples
tels que
. Par exemple, CoupleProd (9)=[12] puisque
et qu'aucune autre valeur ne satisfait la propriété.
Si la discussion entre Sophie et Pierre semble stérile, une quantité importante d'informations est cependant échangée qui amène au bout du dialogue à la solution.
Q10. À quelle condition sur
Puisque Pierre ne peut répondre tout de suite, cela signifie que le produit
Q11. Écrire une fonction CoupleProd(n) qui renvoie la liste des entiers
Sophie savait déjà que Pierre ne connaissait pas la réponse. C'est donc que, pour tout
qui satisfait
, le produit
est dans la liste précédente.
Q12. Soit un entier . Écrire une fonction
qui renvoie, pour l'ensemble des
tels que
, la liste des entiers
. Par exemple,
retourne
puisque
.
Q12. Soit un entier
Q13. Pour
, en déduire une fonction Candidat_S(n) qui renvoie la liste des entiers
tels que la liste
est incluse dans la liste CoupleProd(n).
Pierre peut maintenant déduire la valeur de
du fait qu'elle appartient à la liste retournée par la fonction Candidat_S(n). Plus précisément, le produit
n'apparaît dans la liste
que pour une seule valeur de
de la liste Candidat_S(n). Pour déterminer cet unique
, on recherche tout d'abord les produits
pour lesquels :
- il existe deux sommes
et dans la liste Candidat_S(n) telles que ; -
apparaît dans les listes et .
Q14. Écrire une fonction Double_P(n) qui renvoie la liste des produits
satisfaisant ces deux conditions.
Il reste à construire une fonction Reste_S(n) permettant de ne retenir que les sommes
de la liste Candidat_S(n) pour lesquelles il existe un unique élément en commun entre les listes Prod(S,n) et Double_P(n).
Q15. Écrire une fonction Reste_S(n) qui renvoie la liste de ces sommes.
Pour que Pierre conclue, il faut que la liste Reste_S(n) soit réduite à un singleton. Pour que Sophie conclue également, il lui suffit de rechercher les éléments de la liste qui ne sont pas dans Double_P(n).
Q15. Écrire une fonction Reste_S(n) qui renvoie la liste de ces sommes.
Pour que Pierre conclue, il faut que la liste Reste_S(n) soit réduite à un singleton. Pour que Sophie conclue également, il lui suffit de rechercher les éléments de la liste
Q16. Pour
, écrire une fonction Reste_
qui renvoie la liste de ces produits.
Les deux étudiants connaissent maintenant et
.
Q17. Pour , écrire une fonction Solution(
) qui retourne le couple (
) recherché.
Les deux étudiants connaissent maintenant
Q17. Pour
Partie III - Mots de Lyndon et de de Bruijn
Cette partie comporte des questions nécessitant un code Caml. Pour ces questions, les réponses ne feront pas appel aux fonctionnalités impératives de langage (en particulier pas de boucles, pas de références).
On considère ici un alphabet totalement ordonné de symboles, noté
.
On considère ici un alphabet totalement ordonné de
III. 1 - Mots de Lyndon
III.1.1 - Définitions
Définition 4 (Mot).
Un mot est une suite finie de longueur de symboles
où pour tout
,
et
est la longueur de
. On notera
.
Un mot est une suite finie de longueur
On note
l'ensemble des mots de longueur
construits sur
et
l'ensemble des mots de longueur quelconque construits sur
. On note enfin
le mot vide.
Le type Caml choisi pour représenter un mot est une chaîne de caractères (string). Les éléments de
sont représentés par le type char.
Dans toute la suite, les seules fonctions/méthodes Caml sur les chaînes de caractères qui peuvent être utilisées sont:
Dans toute la suite, les seules fonctions/méthodes Caml sur les chaînes de caractères qui peuvent être utilisées sont:
-
(valeur du caractère) - l'opérateur de concaténation ^
- la fonction String.length : string -> int String. length
retourne la longueur de . - la fonction String.sub : string -> int -> int -> string.
String.sub
start
retourne une chaîne de longueur
contenant la sous-chaîne de
qui commence en start.
Définition 5 (Préfixe, suffixe).
Soient et
deux mots de
:
Soient
-
est le concaténé de et . -
est un préfixe de si et pour . -
est un suffixe de si et pour .
On définit alors la relation
par :
est un préfixe de
ou
(Il existe tel que pour tout
et
).
(Il existe
Q18. On donne le type
type comparaison Inferieur
Egal
Superieur ;;
Écrire une fonction recursive ordre : string -> string -> comparaison telle que ordre m p est l'ordre relatif des mots m et p.
type comparaison
Écrire une fonction recursive ordre : string -> string -> comparaison telle que ordre m p est l'ordre relatif des mots m et p.
Définition 6 (Ordre lexicographique).
La relation définie par: si et seulement si
ou
est appelée ordre lexicographique sur
.
La relation définie par:
Définition 7 (Conjugué).
Soit . Un conjugué de
est un mot de la forme
, pour
. Par convention, le conjugué de
pour
est le mot
lui-même.
Soit
Q19. Écrire une fonction Caml conjugue : string -> int -> string telle que conjugue m i retourne le conjugué de
débutant par le
caractère de
.
La notion de conjugaison induit une relation
définie sur
par
si et seulement si
est un conjugué de
.
Q20. Montrer que
est une relation d'équivalence.
Définition 8 (Collier).
Un collier est le plus petit mot dans l'ordre lexicographique d'une classe de mots équivalents par la relation .
Un collier d'ordre n est dit périodique s'il peut s'écrire , où
et
. Il est dit apériodique sinon, autrement dit si deux conjugaisons non triviales des membres de sa classe d'équivalence ne sont jamais égales.
Définition 8 (Collier).
Un collier est le plus petit mot dans l'ordre lexicographique d'une classe de mots équivalents par la relation
Un collier d'ordre n est dit périodique s'il peut s'écrire
Définition 9 (Mot de Lyndon).
Un mot est un mot de Lyndon si c'est un collier apériodique.
Q21. On suppose . Pour les mots suivants, indiquer si ce sont ou non des mots de Lyndon. Dans le cas négatif, justifier votre réponse :
(i). 0010011.
(ii). 010011.
(iii). 001001.
Un mot
Q21. On suppose
(i). 0010011.
(ii). 010011.
(iii). 001001.
Q22. Écrire une fonction Caml Lyndon : string -> bool telle que Lyndon
renvoie true si
est un mot de Lyndon. Cette fonction fera appel à une fonction récursive.
III.1.2 - Génération de mots de Lyndon
Soit
un mot de Lyndon. Pour générer à partir de
un mot de Lyndon
de longueur au plus
sur
, on utilise l'algorithme 1 .
Algorithme 1 : Algorithme de génération d'un mot de Lyndon
Données : $\mathbf{m} \in \Sigma^{*}$ un mot de Lyndon, $n \geq|m|$
Résultat : $\mathbf{q}$ le mot de Lyndon généré à partir de $\mathbf{m}$.
*** Etape 1 ***
Concaténer le mot $\mathbf{m}$ à lui même jusqu'à obtenir un mot $\mathbf{q}$ de longueur $n$. La dernière occurrence de
m pourra être tronquée pour arriver à un mot de longueur exactement $n$.
*** Etape 2 ***
tant $\mathbf{q u e}$ le dernier symbole de $\mathbf{q}$ est le plus grand symbole de $\Sigma$ faire
Ôter ce symbole de $\mathbf{q}$.
*** Etape 3 ***
Remplacer le dernier symbole de $\mathbf{q}$ par le symbole qui suit dans $\Sigma$.
retourner q.
Q23. Donner l'indice dans
de la
lettre de
en fonction de
et
.
Q24. Pour , on donne le mot de Lyndon
et
. Donner le mot de Lyndon généré par l'algorithme, en déroulant les différentes étapes produites par l'algorithme permettant d'aboutir au mot de Lyndon.
Q24. Pour
L'algorithme 1 peut être utilisé pour générer tous les mots de Lyndon de longueur au plus
. Pour ce faire, on part du plus petit symbole de
et on itère les trois étapes (1-2-3) de l'algorithme jusqu'à arriver au mot vide.
Q25. Partant de
et toujours pour
, construire par l'algorithme tous les mots de Lyndon de longueur au plus 4.
Q26. Donner la complexité de l'algorithme 1 au pire des cas en nombre d'ajouts ou de suppressions de caractères.
III.1.3 - Factorisation de mots de Lyndon
Définition 10 (Factorisation de Lyndon).
Soit . Une factorisation de
est une suite
de mots de Lyndon telle que
avec
.
Soit
On admet le résultat suivant :
Théorème 1 (Factorisation d'un mot).
Tout mot admet une unique factorisation de Lyndon.
L'algorithme 2 propose une méthode de factorisation d'un mot (on ne demande pas de le justifier). Le principe est d'itérer sur la chaîne des symboles de
pour trouver le plus grand mot de Lyndon possible. Lorsqu'un tel mot est trouvé, il est ajouté à la liste
des facteurs de
et la recherche est poursuivie sur la sous-chaîne restante.
Théorème 1 (Factorisation d'un mot).
Tout mot
L'algorithme 2 propose une méthode de factorisation d'un mot
Q27. En utilisant l'algorithme 2, écrire une fonction factorisation
qui réalise la factorisation d'un mot
donné. Cette fonction fera appel à une ou des fonction(s) récursive(s).
Algorithme 2 : Algorithme de factorisation d'un mot de Lyndon
Données : $\mathbf{m} \in \Sigma^{*}$ un mot de Lyndon.
Résultat : la liste $\mathcal{L}$ des mots de Lyndon décroissants de la factorisation de $\mathbf{m}$.
$\mathcal{L} \leftarrow[]$
$j \leftarrow 1$
$k \leftarrow 0$
tant que $j \leq|\mathbf{m}|$ faire
si $j=|\mathbf{m}|$ ou $m_{k}>m_{j}$ alors
$\mathbf{p}=m_{0} \cdots m_{j-k-1}$
Ajouter $\mathbf{p}$ à $\mathcal{L}$
Supprimer $\mathbf{p}$ de $\mathbf{m}$
$k \leftarrow 0$
$j \leftarrow 1$
sinon
si $m_{k}=m_{j}$ alors
$k \leftarrow k+1$
$j \leftarrow j+1$
sinon
$k \leftarrow 0$
$j \leftarrow j+1$
retourner $\mathcal{L}$.
III. 2 - Mots de de Bruijn
III.2.1 - Définition
Définition 11 (Mot de de Bruijn).
Un mot de de Bruijn d'ordre n sur est un collier qui contient tous les mots de
une et une seule fois.
Par exemple, pour et
est un mot de de Bruijn puisqu'il contient une unique fois chaque mot de longueur 2 sur
, le mot 'aa' étant obtenu par circularité de
.
Un mot de de Bruijn d'ordre n sur
Par exemple, pour
Q28. Donner la longueur d'un mot de de Bruijn en fonction de
et du nombre
de symboles de
.
III.2.2 - Graphe de de Bruijn
Définition 12 (Graphe de de Bruijn).
Le graphe de de Bruijn d'ordre sur
est le graphe orienté
où :
Le graphe de de Bruijn d'ordre
-
est l'ensemble des sommets du graphe; -
est l'ensemble des arcs orientés du graphe.
On value les arcs
par le dernier symbole du noeud terminal de chaque arc : ainsi (am,
)
est étiqueté par
.
Dans ce graphe, certains arcs ont pour sommet initial et terminal un même sommet de . Ces arcs sont appelés des boucles (figure 1).
Dans ce graphe, certains arcs ont pour sommet initial et terminal un même sommet de
Q29. Donner l'ensemble des mots de longueur 3 sur
. En déduire de graphe de de Bruijn
associé.
Q30. Montrer que le degré entrant et le degré sortant de chaque sommet est égal à
.
Q31. En déduire le nombre d'arcs orientés en fonction de
et
.
Q31. En déduire le nombre d'arcs orientés

Figure 1 - Exemple de graphe avec boucle sur le sommet A.
Définition 13 (Successeur, prédécesseur).
Soit un graphe orienté.
est un successeur (respectivement prédécesseur) de
si
resp.
.
Soit
Q32. Soient
et
. Montrer que tous les prédécesseurs de
ont le même ensemble de successeurs.
Q33. Soit
. Donner l'ensemble des sommets
tels que
.
On suppose disposer de et on souhaite construire
à partir de ce graphe.
Q34. Proposer une méthode pour construire les sommets de à partir des arcs de
. Donner le sommet créé dans
à partir de l'arc
de
.
On suppose disposer de
Q34. Proposer une méthode pour construire les sommets de
On dit que deux arcs
sont adjacents dans
si ces deux arcs s'écrivent
et
pour
.
Q35. Proposer de même une construction des arcs de en fonction des arcs adjacents de
. Donner l'arc de
créé par les arcs adjacents de
et
.
Q35. Proposer de même une construction des arcs de
III.2.3 - Construction des mots de de Bruijn
On propose ici trois algorithmes de construction de mots de de Bruijn.
III.2.3.1 - Construction à l'aide de
Les mots de de Bruijn d'ordre
sur
peuvent être construits en parcourant
.
Définition 14 (Circuit eulérien).
Soit un graphe orienté. Un circuit eulérien est un chemin dont l'origine et l'extrémité coïncident et passant une fois et une seule par chaque arête de
.
Définition 14 (Circuit eulérien).
Soit
Q36. Construire
et trouver dans ce graphe un circuit eulérien. Vérifier que la concaténation des étiquettes lues au fil de ce circuit donne un représentant d'un mot de de Bruijn et donner son ordre sur
.
On admet les résultats suivants :
(i). un graphe possède un circuit eulérien si et seulement si il est connexe et si, pour tout
, le degré entrant de
et le degré sortant de
sont égaux.
(ii). un circuit eulérien dans le graphe correspond à un mot de de Bruijn.
(i). un graphe
(ii). un circuit eulérien dans le graphe
Q37. En déduire qu'il existe au moins un mot de de Bruijn pour tout alphabet
et tout
.
Ainsi, la concaténation des étiquettes lues au fil d'un circuit eulérien de donne un représentant d'un mot de de Bruijn d'ordre
sur
symboles.
Ainsi, la concaténation des étiquettes lues au fil d'un circuit eulérien de
III.2.3.2 - Construction à l'aide de l'algorithme Prefer One
Pour construire les mots de de Bruijn d'ordre
sur
, on peut également utiliser l'algorithme 3, dit algorithme Prefer One.
Algorithme 3 : Algorithme Prefer One
Données : $n, \Sigma$
Résultat : $\mathbf{m}$ mot de de Bruijn de longueur $n$ sur $\Sigma$.
$\mathbf{m} \leftarrow$ suite de $n$ zeros
$\mathrm{STOP} \leftarrow$ false
tant que $S T O P=$ false faire
Etape 1
Ajouter un 1 à la fin de $\mathbf{m}$.
si les $n$ derniers symboles de $\mathbf{m}$ n'ont pas été rencontrés auparavant alors
Répeter Etape 1
sinon
Retirer le 1 ajouté à la fin de $\mathbf{m}$.
Passer à Etape 2
Etape 2
Ajouter un 0 à la fin de $\mathbf{m}$.
si les $n$ derniers symboles de $\mathbf{m} n$ 'ont pas été rencontrés auparavant alors
Aller à l'Etape 1
sinon
$\mathrm{STOP} \leftarrow$ true
retourner m.
Dans cet algorithme, "les
derniers symboles de
n'ont pas été rencontrés auparavant" signifie que le mot composé des
derniers symboles de
n'est pas un sous-mot de
, situé entre le premier et le
symbole de
.
Q38. Appliquer l'algorithme au cas et
. Écrire les valeurs successives de
au cours de l'exécution.
Q38. Appliquer l'algorithme au cas
III.2.3.3 - Construction à l'aide de la relation aux mots de Lyndon
La troisième construction utilise les notions de collier et de mots de Lyndon.
Q39. Donner, pour et
, les classes d'équivalence de tous les mots binaires de longueur 4 pour la relation
. En déduire les colliers correspondants.
Q39. Donner, pour
Q40. En déduire les mots de Lyndon de longueur 4 pour
.
Plus généralement, les mots de de Bruijn et de Lyndon sont étroitement liés. On peut montrer que si l'on concatène, dans l'ordre lexicographique, les mots de Lyndon sur symboles dont la longueur divise un
entier , alors on obtient le mot de de Bruijn le plus petit, pour l'ordre lexicographique, de tous les mots de de Bruijn de longueur
sur
symboles.
Plus généralement, les mots de de Bruijn et de Lyndon sont étroitement liés. On peut montrer que si l'on concatène, dans l'ordre lexicographique, les mots de Lyndon sur
entier
Q41. Déduire de la question précédente le plus petit mot de de Bruijn pour
et
.
III.2.4 - Application
La soirée a été longue, vous rentrez chez vous mais, au pied de votre immeuble, vous vous trouvez confronté à un sérieux problème : vous avez complètement oublié le code d'entrée à
chiffres de la porte. On suppose que le digicode de l'appartement est composé de
chiffres
, qui constituent l'alphabet
.
Le digicode fonctionne de la façon suivante : vous tapez successivement sur les chiffres afin de composer un mot. À chaque nouveau symbole entré à partir du n-ième, le digicode teste le mot constitué par les derniers chiffres pour voir s'il correspond au code secret.
Ainsi, par exemple pour , si vous tapez la séquence 021201, le digicode teste successivement 0212, 2120 et 1201.
Étant pressé de regagner votre lit, vous cherchez à taper un minimum de touches pour ouvrir la porte. On note la longueur de la plus petite séquence de frappe de touches qui vous permet de rentrer dans l'immeuble.
Le digicode fonctionne de la façon suivante : vous tapez successivement sur les chiffres afin de composer un mot. À chaque nouveau symbole entré à partir du n-ième, le digicode teste le mot constitué par les
Ainsi, par exemple pour
Étant pressé de regagner votre lit, vous cherchez à taper un minimum de touches pour ouvrir la porte. On note
Q42. Donner un encadrement de
:
- pour la borne supérieure, on considèrera que l'on met bout à bout tous les mots possibles de
chiffres construits sur ; - pour la borne inférieure, on cherchera un mot sans redondance, c'est-à-dire qui contient une et une seule fois chaque mot de
chiffres.
Q43. Expliquer en une phrase en quoi les mots de de Bruijn peuvent vous aider. En vous inspirant de l'algorithme 3, donner une séquence la plus courte de chiffres à taper pour ouvrir à coup sûr la porte de votre immeuble, lorsque
et
.
Q44. Comparer alors le nombre maximum de frappes de touches du digicode à effectuer en utilisant les mots de de Bruijn, avec celui calculé par la méthode brute. Calculer ces nombres pour :
-
et . -
et .
Que conclure quant à l'efficacité de votre stratégie?
