summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--notes-inf105.tex71
1 files changed, 64 insertions, 7 deletions
diff --git a/notes-inf105.tex b/notes-inf105.tex
index b72b754..961a916 100644
--- a/notes-inf105.tex
+++ b/notes-inf105.tex
@@ -112,9 +112,66 @@ Git: \input{vcline.tex}
\bigbreak
-\section{Alphabets, mots et langages ; langages rationnels}
+\setcounter{comcnt}{0}
+
+\thingy \textbf{Présentation et plan :} On se propose de développer
+ici des techniques mathématiques et algorithmiques ayant à la fois un
+intérêt théorique comme théorie des langages formels, et une
+application informatique pratique à l'analyse de textes ou de chaînes
+de caractères (qu'on appellera par la suite « mots »,
+cf. §\ref{subsection-introduction-and-words}).
+
+Ces notes sont divisées en grandes parties (inégales) de la manière
+suivante :
+\begin{itemize}
+\item l'étude des expressions rationnelles et des automates finis, et
+ des langages qu'ils définissent, dans les sections
+ \ref{section-languages-and-rational-languages} à \ref{section-recognizable-languages},
+ qui sert notamment dans la recherche de texte et de motifs dans une
+ chaîne de caractères ou un document ;
+\item l'étude de certaines grammaires formelles dans la
+ section \ref{section-context-free-grammars}, qui sert notamment à
+ définir et analyser la syntaxe de langages de programmation ;
+\item une introduction à la calculabilité dans la
+ section \ref{section-computability}, qui place des limites
+ théoriques sur ce qu'un algorithme peut faire.
+\end{itemize}
+
+À ces parties seront associées la définition de différentes classes de
+« langages » (voir §\ref{subjection-languages} pour la définition de
+ce terme) qu'il s'agit d'étudier :
+\begin{itemize}
+\item les langages « rationnels » (définis par des expressions
+ rationnelles, §\ref{subsection-rational-languages}) et
+ « reconnaissables » (définis par des automates finis,
+ §\ref{section-finite-automata}), qui s'avèrent coïncider
+ (\ref{kleenes-theorem}) ;
+\item les langages « algébriques » (définis par des grammaires hors
+ contexte, §\ref{subsection-context-free-grammars}) ;
+\item les langages « décidables » (définis par un algorithme
+ quelconque, \ref{definition-computable-function-or-set}) et
+ « semi-décidables » (définis par un algorithme qui pourrait ne pas
+ terminer).
+\end{itemize}
+La progression logique vient de l'inclusion qui donne une hiérarchie
+entre ces classes : tout langage rationnel/reconnaissable est
+algébrique (\ref{rational-languages-are-algebraic}), tout langage
+algébrique est décidable (\ref{algebraic-languages-are-decidable}), et
+tout langage décidable est semi-décidable
+(\ref{decidable-iff-semidecidable-and-complement}). On procède donc
+du plus particulier au plus général.
+
+\thingy \textbf{Notations :} On écrit $A:=B$, ou parfois $B=:A$ pour
+dire que $A$ est défini comme égal à $B$ (cela signifie simplement
+$A=B$ mais en insistant sur le fait que c'est la définition du membre
+du côté duquel se situent les deux points). On note $\mathbb{N}$
+l'ensemble $\{0,1,2,3\ldots\}$ des entiers naturels.
+
+Le symbole \qedsymbol marque la fin d'une démonstration.
-\subsection{Introduction, alphabets, mots et longueur}
+\section{Alphabets, mots et langages ; langages rationnels}\label{section-languages-and-rational-languages}
+
+\subsection{Introduction, alphabets, mots et longueur}\label{subsection-introduction-and-words}
\thingy L'objet de ces notes, au confluent des mathématiques et de
l'informatique, est l'étude des \textbf{langages} : un langage étant
@@ -432,7 +489,7 @@ des nombres d'occurrences dedans des différentes lettres de
l'alphabet).\par}
-\subsection{Langages et opérations sur les langages}
+\subsection{Langages et opérations sur les langages}\label{subjection-languages}
\thingy Un \defin{langage} $L$ sur l'alphabet $\Sigma$ est simplement
un ensemble de mots sur $\Sigma$. Autrement dit, il s'agit d'un
@@ -4140,7 +4197,7 @@ tiendrons à l'approche mathématique où on continue à avoir affaire à
des lettres d'un alphabet $\Sigma$ abstrait.
-\subsection{Définition, notations et premier exemple}
+\subsection{Définition, notations et premier exemple}\label{subsection-context-free-grammars}
\thingy\label{definition-context-free-grammar} Une \defin{grammaire
hors contexte} (on dit parfois aussi « sans contexte » ; en anglais,
@@ -5133,7 +5190,7 @@ les automates à pile déterministes (qu'il faut définir soigneusement)
acceptent strictement moins de langages que les automates à pile
non déterministes.
-\thingy Une approche possible pour résoudre algorithmiquement,
+\thingy\label{algebraic-languages-are-decidable} Une approche possible pour résoudre algorithmiquement,
\emph{en théorie}, le problème de décider si un mot $w$ appartient au
langage $L(G)$ engendré par une grammaire $G$ est la suivante :
\begin{itemize}
@@ -5426,7 +5483,7 @@ bien compte que ces notions étaient forcément toujours incomplètes.)
\bigbreak
-\begin{defn}
+\begin{defn}\label{definition-computable-function-or-set}
On dit qu'une fonction $f\colon\mathbb{N}\to\mathbb{N}$ est
\defin{calculable (fonction)} (ou \index{récursive
(fonction)|see{calculable}}« récursive ») lorsqu'il existe un
@@ -5523,7 +5580,7 @@ Les deux propositions suivantes, outre leur intérêt intrinsèque,
servent à donner des exemples du genre de manipulation qu'on peut
faire avec la notion de calculabilité et d'algorithme :
-\begin{prop}
+\begin{prop}\label{decidable-iff-semidecidable-and-complement}
Un ensemble $A \subseteq \mathbb{N}$ est décidable ssi $A$ et
$\mathbb{N}\setminus A$ sont tous les deux semi-décidables.
\end{prop}