From 2a0d406b122f0160ffa8452a393c672bcc7373e3 Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Tue, 20 Jan 2026 20:20:20 +0100 Subject: Write answer key for the exercise on the Kleene tree. --- controle-20260126.tex | 157 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 141 insertions(+), 16 deletions(-) (limited to 'controle-20260126.tex') diff --git a/controle-20260126.tex b/controle-20260126.tex index 109b334..617e33b 100644 --- a/controle-20260126.tex +++ b/controle-20260126.tex @@ -585,7 +585,7 @@ lorsque, pour chaque $0 \leq i < |w|$, le bit numéroté $i$ de $w$ vaut \item $0$ s'il existe un arbre de calcul (codé par un entier) $<|w|$ attestant $\varphi_i(0) = 0$, \item $1$ s'il existe un arbre de calcul (codé par un entier) $<|w|$ - attestant $\varphi_i(0) = v$, où $v\neq 0$, + attestant $\varphi_i(0) = r$, où $r\neq 0$, \item et arbitraire sinon \end{itemize} où $\varphi_i$ désigne la $i$-ième fonction générale récursive. @@ -597,7 +597,7 @@ changer la définition en : d'une bande représentant le nombre $0$, ou tout autre état initial fixé, peu importe).} en $<|w|$ étapes et renvoie $0$, \item $1$ si la $i$-ième machine de Turing termine en $<|w|$ - étapes et renvoie une valeur $v \neq 0$, + étapes et renvoie une valeur $r \neq 0$, \item et arbitraire sinon \end{itemize} (cela ne changera rien de substantiel aux raisonnements). @@ -616,6 +616,17 @@ trivialement vérifiée — vu que $|\varepsilon|=0$.) \textbf{(1)} Montrer que si $v \in \mathscr{K}$ et si $u$ est un préfixe de $v$. alors on a aussi $u \in \mathscr{K}$. +\begin{corrige} +Supposons que $u$ soit un préfixe de $v$ avec $v \in \mathscr{K}$. +Alors pour tout $i$ tel que $0\leq i < |u|$, le bit numéroté $i$ +de $u$ est aussi le bit numéroté $i$ de $v$, qui d'après les +conditions sur $v \in \mathscr{K}$, vaut $0$ (resp. $1$) s'il existe +un arbre de calcul $<|v|$ attestant $\varphi_i(0) = 0$ +(resp. $\varphi_i(0) \neq 0$), et à plus forte raison s'il existe un +arbre de calcul $<|u|$ l'attestant : ceci implique donc bien $u \in +\mathscr{K}$. +\end{corrige} + \medskip On dit que $\mathscr{K}$ est un \textbf{arbre} de mots @@ -625,19 +636,57 @@ les sommets sont les éléments de $\mathscr{K}$, avec une arête de $u$ à $v$ lorsque $u$ est un préfixe de $v$, est un arbre (infini) au sens de la théorie des graphes. Cette remarque n'est pas utile pour le présent exercice.} pour exprimer la propriété démontrée par cette -question (1). +question (1) (formellement, un arbre de mots binaires est une partie +$\mathscr{T} \subseteq \{0,1\}^*$ telle que si $v\in\mathscr{T}$ et +que $u$ est un préfixe de $v$, alors $u\in\mathscr{T}$). \medskip \textbf{(2)} Montrer que $\mathscr{K}$ est une partie \emph{décidable} (i.e., calculable) de $\{0,1\}^*$. +\begin{corrige} +On veut montrer qu'il existe un algorithme qui, donné un $w \in +\{0,1\}^*$, décide si $w \in \mathscr{K}$. Pour cela, il suffit de +parcourir les bits $0\leq i<|w|$ de $w$ et, pour chacun de tester si +la condition définissant $\mathscr{K}$ est vérifiée : on parcourt les +entiers $0\leq j<|w|$ et, pour chacun, on teste s'il s'agit du code +d'un arbre de calcul attestant $\varphi_i(0) = r$ pour un certain $r$, +et, si c'est le cas, on vérifie que le bit $w_i$ de $w$ vaut $0$ si +$r=0$ ou $1$ si $r\neq 0$. (Si on préfère les machines de Turing, on +lance l'exécution de la $i$-ième machine pour au plus $|w|-1$ étapes +et le reste est analogue.) Si une des conditions échoue, le mot $w$ +n'est pas dans $\mathscr{K}$, tandis que si toutes réussissent, le mot +est dans $\mathscr{K}$. Il s'agit bien là d'un algorithme qui termine +à coup sûr en temps fini (il est même primitif récursif puisqu'on a +essentiellement deux boucles imbriquées, une sur $i$ et une sur $j$, +bornées par $|w|$). +\end{corrige} + \medskip \textbf{(3)} Montrer qu'il existe dans $\mathscr{K}$ des mots binaires de longueur arbitrairement grande (formellement : $\forall n. \; \exists w\in\mathscr{K}. \; (|w| \geq n)$). On pourra même expliquer -comment en calculer algorithmiquement. +comment en calculer algorithmiquement un de longueur quelconque. + +\begin{corrige} +Comme on l'a expliqué à la question (2), la condition définissant +l'appartenance d'un mot à $w$ est testable algorithmiquement. Pour +fabriquer un mot de $\mathscr{K}$ de longueur $n$, on teste, pour +chaque $0\leq i<|w|$ s'il existe un arbre de calcul $ m$) est dans $\mathscr{K}$ +par l'hypothèse que $(b_i)$ est une branche de $\mathscr{K}$. Il +existe un arbre de calcul codé par un entier $<|w|$ (à savoir $m$) +attestant $\varphi_e(0) = r$, donc le bit $b_e$ de $w$ vaut $0$ +si $r=0$ et $1$ si $r\neq 0$. On a donc bien prouvé que $e \mapsto +b_e$ vérifie les conditions du (4). Or on a vu en (4) qu'une telle +fonction ne peut pas être calculable. C'est donc que $\mathscr{K}$ +n'a pas branche infinie calculable. +\end{corrige} + \medskip Le \textbf{lemme de Kőnig} est l'affirmation suivante : « tout arbre -de mots binaires contenant des mots binaires de longueur -arbitrairement grande a une branche infinie » (les termes « arbre », -« contenant des mots binaires de longueur arbitrairement grande » et -« branche infinie » ont été définis précisément ci-dessus). On ne -demande pas de démontrer cette affirmation : néanmoins, c'est un -théorème des mathématiques classiques usuelles. +de mots binaires contenant des mots de longueur arbitrairement grande +a une branche infinie » (les termes « arbre », « contenant des mots de +longueur arbitrairement grande » et « branche infinie » ont été +définis précisément ci-dessus). On ne demande pas de démontrer cette +affirmation : néanmoins, c'est un théorème des mathématiques +classiques usuelles. \medskip -\textbf{(6)} Que peut-on conclure du lemme de Kőnig concernant -l'arbre $\mathscr{K}$ ? +\textbf{(6)} Pour résumer, que peut-on conclure du lemme de Kőnig, et +des questions précédentes, concernant l'arbre $\mathscr{K}$ ? Comment +expliqueriez-vous informellement la situation ? + +\begin{corrige} +On a vu que $\mathscr{K}$ est un arbre de mots binaires calculable, +contenant des mots de longueur arbitrairement grande. Par le lemme de +Kőnig, il a des branches infinies. Néanmoins, aucune de ses branches +n'est calculable. + +On peut décrire informellement $\mathscr{K}$ comme un « labyrinthe +infini, calculable mais impossible à résoudre de façon calculable » : +les pièces du labyrinthe sont les nœuds de l'arbre, c'est-à-dire les +$w\in\mathscr{K}$, chaque pièce permet d'aller potentiellement vers +$w0$ ou $w1$ selon si l'un ou l'autre (ou aucun des deux) n'est +dans $\mathscr{K}$. On peut algorithmiquement faire un plan du +labyrinthe jusqu'à n'importe quelle profondeur finie. Néanmoins, si +on postule que le labyrinthe possède une sortie au bout de chaque +branche infinie (les branches finies étant des culs-de-sac), alors +aucun algorithme ne peut naviguer le labyrinthe jusqu'à une sortie, +bien que des chemins menant à une sortie existent (par le lemme de +Kőnig). +\end{corrige} \medskip @@ -703,6 +819,15 @@ l'arbre $\mathscr{K}$ ? lemme de Kőnig n'est pas démontrable en mathématiques constructives. (On ne demande pas ici un raisonnement formel précis, mais une idée.) +\begin{corrige} +Une démonstration constructive du lemme de Kőnig, formalisée dans un +système semblable à l'arithmétique de Heyting, permettrait +vraisemblablement d'extraire de la preuve un algorithme qui calcule +une branche infinie de l'arbre (cet arbre étant lui-même calculable +pour commencer). Or on vient de voir que ce n'est pas le cas, ce qui +suggère qu'une telle démonstration n'est pas possible. +\end{corrige} + % -- cgit v1.2.3