diff options
-rw-r--r-- | notes-inf105.tex | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/notes-inf105.tex b/notes-inf105.tex index 5ed7719..d1e43da 100644 --- a/notes-inf105.tex +++ b/notes-inf105.tex @@ -538,7 +538,7 @@ de base triviaux suivants : \item le langage vide $\varnothing$, \item le langage formé du seul mot vide, $\{\varepsilon\}$, et \item les langages formés d'un seul mot lui-même formé d'une seule - lettre, $\{a\}$ pour chaque $a\in\Sigma$, + lettre, $\{x\}$ pour chaque $x\in\Sigma$, \end{itemize} et on va les combiner par les opérations dites « rationnelles » suivantes : @@ -552,11 +552,11 @@ On obtient ainsi une certaine famille de langages (cf. ci-dessous pour une définition plus précise), qu'on appelle \textbf{langages rationnels} : les langages rationnels sont exactement ceux qui peuvent s'obtenir à partir des langages de base énumérés ci-dessus par -application des opérations qu'on vient de dire (i.e., la réunion de -deux langages rationnels, ou la concaténation de deux langages -rationnels, ou l'étoile de Kleene d'un langage rationnel, sont -rationnels, et les langages rationnels sont exactement ceux qu'on -obtient ainsi). +application (un nombre fini de fois) des opérations qu'on vient de +dire (i.e., la réunion de deux langages rationnels, ou la +concaténation de deux langages rationnels, ou l'étoile de Kleene d'un +langage rationnel, sont rationnels, et les langages rationnels sont +exactement ceux qu'on obtient ainsi). À titre d'exemple, sur l'alphabet $\{a,b,c,d\}$, comme le langage $\{c\}$ (formé du seul mot $c$) est rationnel, son étoile de Kleene, @@ -565,12 +565,32 @@ rationnel, et comme $\{d\}$ l'est aussi, la concaténation $\{d\}(\{c\}^*) = \{d, dc, dcc, dccc, \ldots\}$ est encore un langage rationnel. +{\footnotesize\thingy Formellement, la définition des langages + rationnelles est la suivante : un ensemble $\mathscr{C} \subseteq + \mathscr{P}(\Sigma^*)$ de langages (où $\mathscr{P}(\Sigma^*)$ est + l'ensemble des parties de $\Sigma^*$, i.e., l'ensemble de tous les + langages sur $\Sigma$) est dit \emph{stable par opérations + rationnelles} lorsqu'il est stable par les opérations de réunion, + concaténation et étoile de Kleene, i.e., si $L_1,L_2 \in + \mathscr{C}$ alors $L_1\cup L_2 \in \mathscr{C}$ et $L_1 L_2 \in + \mathscr{C}$, et si $L \in \mathscr{C}$ alors $L^* \in + \mathscr{C}$ ; le \emph{plus petit} (pour l'inclusion) ensemble de + langages stable par opérations rationnelles et contenant les + langages $\varnothing$, $\{\varepsilon\}$ et $\{x\}$ pour $x \in + \Sigma$ (i.e. $\varnothing\in\mathscr{C}$, $\{\varepsilon\} \in + \mathscr{C}$ et si $x\in\Sigma$ alors $\{x\}\in\mathscr{C}$), ou + plus exactement, l'intersection de tous les ensembles $\mathscr{C}$ + vérifiant tous ces propriétés, est la classe $\mathscr{R}$ des + langages rationnels. \par} + \thingy Pour décrire la manière dont un langage rationnel est fabriqué (à partir des langages de base par les opérations rationnelles), comme il est malcommode d'écrire quelque chose comme $\{d\}(\{c\}^*)$, on introduit un nouvel objet, les \textbf{expressions rationnelles} (certains préfèrent le terme d'\textbf{expressions régulières}), qui -sont des expressions servant à désigner un langage rationnel. +sont des expressions servant à désigner un langage rationnel. Par +exemple, plutôt que d'écrire « $\{d\}(\{c\}^*)$ », on parlera du +langage désigné par l'expression rationnelle $dc*$. Plus exactement, une expression rationnelle (sur un alphabet $\Sigma$) est un mot sur l'alphabet $\Sigma \cup \{\bot, @@ -623,7 +643,7 @@ $\Sigma = \{a,b,c,d\}$ : bcd, bcbcd, bcbcbcd, \ldots\}$. \end{itemize} -Un langage rationnel est par définition la même chose qu'un langage +Un langage rationnel est par construction la même chose qu'un langage pour lequel il existe une expression rationnelle qui le désigne. On dira qu'un mot $w$ \textbf{vérifie} une expression rationnelle $r$ |