diff options
Diffstat (limited to 'notes-inf105.tex')
-rw-r--r-- | notes-inf105.tex | 71 |
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} |