summaryrefslogtreecommitdiffstats
path: root/transp-inf110-01-calc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'transp-inf110-01-calc.tex')
-rw-r--r--transp-inf110-01-calc.tex234
1 files changed, 233 insertions, 1 deletions
diff --git a/transp-inf110-01-calc.tex b/transp-inf110-01-calc.tex
index 211f842..93d2a11 100644
--- a/transp-inf110-01-calc.tex
+++ b/transp-inf110-01-calc.tex
@@ -1334,6 +1334,7 @@ $\Rightarrow$ Ceci montre l'existence de $u$.
\end{frame}
%
\begin{frame}
+\label{normal-form-theorem}
\frametitle{Théorème de la forme normale}
On a montré un peu plus que l'universalité : on peut exécuter
@@ -1557,6 +1558,7 @@ Cette question est-elle \alert{algorithmique} ?
\end{frame}
%
\begin{frame}
+\label{undecidability-halting-problem}
\frametitle{L'indécidabilité du problème de l'arrêt}
\itempoint\textbf{Théorème} (Turing) : il n'existe pas de fonction
@@ -1598,6 +1600,7 @@ contraire, ce qui conduit à un paradoxe.
\end{frame}
%
\begin{frame}
+\label{undecidability-halting-problem-redux}
\frametitle{L'indécidabilité du problème de l'arrêt : redite}
{\footnotesize Notons $\varphi$ pour $\varphi^{(1)}$.\par}
@@ -2069,7 +2072,236 @@ partielle $\mathbb{N}^k \dasharrow \mathbb{N}$ :
\item « calculablement énumérable »,
\item « récursivement énumérable ».
\end{itemize}
-{\footnotesize (La raison du « énumérable » sera expliquée après.)\par}
+{\footnotesize (La raison du mot « énumérable » sera expliquée après.)\par}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Décidable = semi-décidable de complémentaire semi-décidable}
+
+\itempoint Si $A \subseteq \mathbb{N}^k$ est décidable, alors son
+complémentaire $\complement A := \mathbb{N}^k \setminus A$ l'est
+aussi.
+
+{\footnotesize \underline{Preuve :} échanger $0$ et $1$ dans la
+ réponse. \qedsymbol\par}
+
+\medskip
+
+\itempoint Si $A$ est décidable, alors $A$ est semi-décidable.
+
+{\footnotesize \underline{Preuve :} si réponse $0$, faire une boucle
+ infinie. \qedsymbol\par}
+
+\medskip
+
+\itempoint Donc : si $A$ est décidable, alors $A$ et $\complement A$
+sont semi-décidables.
+
+\bigskip
+
+\itempoint La réciproque est également valable : si $A$ et
+$\complement A$ sont semi-décidables alors $A$ est décidable.
+
+\medskip
+
+\textcolor{blue}{Idée :} lancer « en parallèle » un algorithme qui
+semi-décide $A$ et un qui semi-décide $\complement A$ ; l'un des deux
+finira par donner la réponse voulue.
+
+\medskip
+
+\textcolor{brown}{Mais que signifie « lancer en parallèle » ici ?}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Lancement en parallèle}
+
+On suppose que :
+\begin{itemize}
+\item $\varphi_{e_1}(\underline{x})\downarrow$ ssi $\underline{x} \in A$
+\item $\varphi_{e_2}(\underline{x})\downarrow$ ssi $\underline{x} \not\in A$
+\end{itemize}
+Comment décider si $\underline{x} \in A$ en terminant à coup sûr ?
+
+\bigskip
+
+Grâce au \alert{th. de la forme normale}
+(transp. \ref{normal-form-theorem}) : il y a un prédicat $T$ p.r. tel
+que
+\begin{itemize}
+\item $\varphi_{e_1}(\underline{x})\downarrow$ ssi $\exists
+ n\in\mathbb{N}.\; T(n,e_1,\dbllangle\underline{x}\dblrangle)$
+\item $\varphi_{e_2}(\underline{x})\downarrow$ ssi $\exists
+ n\in\mathbb{N}.\; T(n,e_2,\dbllangle\underline{x}\dblrangle)$
+\end{itemize}
+On a alors $\exists n\in\mathbb{N}.\;
+(T(n,e_1,\dbllangle\underline{x}\dblrangle) \text{~ou~}
+T(n,e_2,\dbllangle\underline{x}\dblrangle))$ à coup sûr.
+
+\bigskip
+
+Algorithme (terminant à coup sûr) :
+\begin{itemize}
+\item parcourir $n=0,1,2,3,4,\ldots$ (boucle non bornée),
+\item pour chacun, tester si
+ $T(n,e_1,\dbllangle\underline{x}\dblrangle)$ et si
+ $T(n,e_2,\dbllangle\underline{x}\dblrangle)$,
+\item si le premier vaut, renvoyer « oui, $\underline{x}\in A$ », si
+ le second vaut, renvoyer « non, $\underline{x}\not\in A$ » (sinon,
+ continuer la boucle).
+\end{itemize}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Lancement en parallèle (variante machines de Turing)}
+
+On suppose que :
+\begin{itemize}
+\item la machine $M_1$ s'arrête sur $\underline{x}$ ssi $\underline{x}
+ \in A$
+\item la machine $M_2$ s'arrête sur $\underline{x}$ ssi $\underline{x}
+ \not\in A$
+\end{itemize}
+Comment décider si $\underline{x} \in A$ en s'arrêtant à coup sûr ?
+
+\bigskip
+
+On va simuler $M_1$ et $M_2$ pour $n$ étapes jusqu'à ce que l'une
+d'elles s'arrête.
+
+\bigskip
+
+Algorithme (terminant à coup sûr) :
+\begin{itemize}
+\item parcourir $n=0,1,2,3,4,\ldots$ (boucle non bornée),
+\item pour chacun, tester si l'exécution de $M_1$ s'arrête sur
+ $\underline{x}$ en $\leq n$ étapes et si l'exécution de $M_2$
+ s'arrête sur $\underline{x}$ en $\leq n$ étapes,
+\item si le premier vaut, renvoyer « oui, $\underline{x}\in A$ », si
+ le second vaut, renvoyer « non, $\underline{x}\not\in A$ » (sinon,
+ continuer la boucle).
+\end{itemize}
+
+\bigskip
+
+{\footnotesize C'est \alert{exactement la même chose} que dans le
+ transp. précédent, avec un nombre d'étapes d'exécution $n$ au lieu
+ d'un arbre de calcul (détail sans importance).\par}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Problème de l'arrêt}
+
+Le \textbf{problème de l'arrêt} est :
+\[
+\mathscr{H} := \{(e,x)\in\mathbb{N}^2 : \varphi_e(x)\downarrow\}
+\]
+
+\smallskip
+
+\itempoint Il \alert{n'est pas décidable}
+(transp. \ref{undecidability-halting-problem}).
+
+\smallskip
+
+\itempoint Il \alert{est} semi-décidable (par universalité : donné
+$(e,x)$, on peut exécuter $\varphi_e(x)$, et, s'il termine, renvoyer
+« oui »).
+
+\smallskip
+
+\itempoint Donc $\complement\mathscr{H}$ n'est pas semi-décidable.
+
+\bigskip
+
+{\footnotesize
+
+\itempoint Toutes sortes de variantes possibles, p.ex. :
+\begin{itemize}
+\item $\{e\in \mathbb{N} : \varphi_e(e)\downarrow$ n'est pas décidable
+ (preuve dans transp. \ref{undecidability-halting-problem-redux})
+\item $\{e\in \mathbb{N} : \varphi_e(0)\downarrow$ n'est pas décidable
+ (théorème s-m-n : $\varphi_e(x) = \varphi_{s(e,x)}(0)$ avec $s$ p.r.)
+\end{itemize}
+
+\par}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Image d'un ensemble décidable}
+
+\itempoint Si $A \subseteq \mathbb{N}$ est décidable et $f \colon
+\mathbb{N} \to \mathbb{N}$ (totale) calculable, alors l'image
+\[
+f(A) := \{f(i) : i\in A\}
+\]
+est semi-décidable.
+
+\smallskip
+
+{\footnotesize \underline{Preuve :} donné $m\in\mathbb{N}$, pour
+ semi-décider si $m \in f(A)$, parcourir $i=0,1,2,3\ldots$, et pour
+ chacun, décider si $i\in A$ et, si oui, calculer $f(i)$ et comparer
+ à $m$. Si $i\in A$ et $f(i)=m$, renvoyer « oui » ; sinon, continuer
+ la boucle.\qed\par}
+
+\bigskip
+
+\itempoint Réciproquement, si $B \subseteq \mathbb{N}$ est
+semi-décidable, il existe $A \subseteq \mathbb{N}$ décidable et $f
+\colon \mathbb{N} \to \mathbb{N}$ (totale) calculable tels que $B =
+f(A)$.
+
+\smallskip
+
+{\footnotesize \underline{Preuve :} soit $e$ tel que $B = \{m :
+ \varphi_e(m)\downarrow\}$ ; soit $A$ l'ensemble des $\langle
+ n,m\rangle$ tels que $T(n,e,\dbllangle m\dblrangle)$ : alors $A$ est
+ décidable et son image par $\langle n,m\rangle \mapsto m$
+ est $B$.\qed\par}
+
+{\footnotesize \underline{Redite :} soit $M$ une machine de Turing qui
+ s'arrête sur $m$ ssi $m \in B$ ; soit $A$ l'ensemble des $\langle
+ n,m\rangle$ tels que $M$ s'arrête sur $m$ en $\leq n$ étapes : alors
+ $A$ est décidable et son image par $\langle n,m\rangle \mapsto m$
+ est $B$.\qed\par}
+
+\bigskip
+
+\itempoint Variante : $A \subseteq \mathbb{N}$ \emph{non vide} est
+semi-décidable ssi il existe $f\colon \mathbb{N} \to \mathbb{N}$
+totale calculable telle que $f(\mathbb{N}) = A$.
+\textcolor{teal}{D'où le terme « calculablement énumérable ».}
+
+\end{frame}
+%
+\begin{frame}
+\frametitle{Stabilités par opérations booléennes}
+
+Les ensembles \textbf{décidables} sont stables par :
+\begin{itemize}
+\item réunions finies,
+\item intersections finies,
+\item complémentaire,
+\item \alert{mais pas par} projection $\mathbb{N}^k \to
+ \mathbb{N}^{k'}$ (où $k'\leq k$ ; cf. transp. précédent).
+\end{itemize}
+
+\bigskip
+
+Les ensembles \textbf{semi-décidables} sont stables par :
+\begin{itemize}
+\item réunions finies (par lancement en parallèle !),
+\item intersections finies,
+\item projection $\mathbb{N}^k \to \mathbb{N}^{k'}$ (où $k'\leq k$ ;
+ cf. transp. précédent),
+\item \alert{mais pas par complémentaire}.
+\end{itemize}
\end{frame}
%