\( %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Mes commandes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\multirows}[3]{\multirow{#1}{#2}{$#3$}}%pour rester en mode math \renewcommand{\arraystretch}{1.3}%pour augmenter la taille des case \newcommand{\point}[1]{\marginnote{\small\vspace*{-1em} #1}}%pour indiquer les points ou le temps \newcommand{\dpl}[1]{\displaystyle{#1}}%megamode \newcommand{\A}{\mathscr{A}} \newcommand{\LN}{\mathscr{N}} \newcommand{\LL}{\mathscr{L}} \newcommand{\K}{\mathbb{K}} \newcommand{\N}{\mathbb{N}} \newcommand{\Z}{\mathbb{Z}} \newcommand{\Q}{\mathbb{Q}} \newcommand{\R}{\mathbb{R}} \newcommand{\C}{\mathbb{C}} \newcommand{\M}{\mathcal{M}} \newcommand{\D}{\mathbb{D}} \newcommand{\E}{\mathcal{E}} \renewcommand{\P}{\mathcal{P}} \newcommand{\G}{\mathcal{G}} \newcommand{\Kk}{\mathcal{K}} \newcommand{\Cc}{\mathcal{C}} \newcommand{\Zz}{\mathcal{Z}} \newcommand{\Ss}{\mathcal{S}} \newcommand{\B}{\mathbb{B}} \newcommand{\inde}{\bot\!\!\!\bot} \newcommand{\Proba}{\mathbb{P}} \newcommand{\Esp}[1]{\dpl{\mathbb{E}\left(#1\right)}} \newcommand{\Var}[1]{\dpl{\mathbb{V}\left(#1\right)}} \newcommand{\Cov}[1]{\dpl{Cov\left(#1\right)}} \newcommand{\base}{\mathcal{B}} \newcommand{\Som}{\textbf{Som}} \newcommand{\Chain}{\textbf{Chain}} \newcommand{\Ar}{\textbf{Ar}} \newcommand{\Arc}{\textbf{Arc}} \newcommand{\Min}{\text{Min}} \newcommand{\Max}{\text{Max}} \newcommand{\Ker}{\text{Ker}} \renewcommand{\Im}{\text{Im}} \newcommand{\Sup}{\text{Sup}} \newcommand{\Inf}{\text{Inf}} \renewcommand{\det}{\texttt{det}} \newcommand{\GL}{\text{GL}} \newcommand{\crossmark}{\text{\ding{55}}} \renewcommand{\checkmark}{\text{\ding{51}}} \newcommand{\Card}{\sharp} \newcommand{\Surligne}[2]{\text{\colorbox{#1}{ #2 }}} \newcommand{\SurligneMM}[2]{\text{\colorbox{#1}{ #2 }}} \newcommand{\norm}[1]{\left\lVert#1\right\rVert} \renewcommand{\lim}[1]{\underset{#1}{lim}\,} \newcommand{\nonor}[1]{\left|#1\right|} \newcommand{\Un}{1\!\!1} \newcommand{\sepon}{\setlength{\columnseprule}{0.5pt}} \newcommand{\sepoff}{\setlength{\columnseprule}{0pt}} \newcommand{\flux}{Flux} \newcommand{\Cpp}{\texttt{C++\ }} \newcommand{\Python}{\texttt{Python\ }} %\newcommand{\comb}[2]{\begin{pmatrix} #1\\ #2\end{pmatrix}} \newcommand{\comb}[2]{C_{#1}^{#2}} \newcommand{\arrang}[2]{A_{#1}^{#2}} \newcommand{\supp}[1]{Supp\left(#1\right)} \newcommand{\BB}{\mathcal{B}} \newcommand{\arc}[1]{\overset{\rotatebox{90}{)}}{#1}} \newcommand{\modpi}{\equiv_{2\pi}} \renewcommand{\Re}{Re} \renewcommand{\Im}{Im} \renewcommand{\bar}[1]{\overline{#1}} \newcommand{\mat}{\mathcal{M}} \newcommand{\und}[1]{{\mathbf{\color{red}\underline{#1}}}} \newcommand{\rdots}{\text{\reflectbox{$\ddots$}}} \newcommand{\Compa}{Compa} \newcommand{\dint}{\dpl{\int}} \newcommand{\intEFF}[2]{\left[\!\left[#1 ; #2\right]\!\right]} \newcommand{\intEFO}[2]{\left[\!\left[#1 ; #2\right[\!\right[} \newcommand{\intEOF}[2]{\left]\!\left]#1 ; #2\right]\!\right]} \newcommand{\intEOO}[2]{\left]\!\left]#1 ; #2\right[\!\right[} \newcommand{\ou}{\vee} \newcommand{\et}{\wedge} \newcommand{\non}{\neg} \newcommand{\implique}{\Rightarrow} \newcommand{\equivalent}{\Leftrightarrow} \newcommand{\Ab}{\overline{A}} \newcommand{\Bb}{\overline{B}} \newcommand{\Cb}{\overline{C}} \newcommand{\Cl}{\texttt{Cl}} \newcommand{\ab}{\overline{a}} \newcommand{\bb}{\overline{b}} \newcommand{\cb}{\overline{c}} \newcommand{\Rel}{\mathcal{R}} \newcommand{\superepsilon}{\varepsilon\!\!\varepsilon} \newcommand{\supere}{e\!\!e} \makeatletter \newenvironment{console}{\noindent\color{white}\begin{lrbox}{\@tempboxa}\begin{minipage}{\columnwidth} \ttfamily \bfseries\vspace*{0.5cm}} {\vspace*{0.5cm}\end{minipage}\end{lrbox}\colorbox{black}{\usebox{\@tempboxa}} } \makeatother \def\ie{\textit{i.e. }} \def\cf{\textit{c.f. }} \def\vide{ { $ {\text{ }} $ } } %Commande pour les vecteurs \newcommand{\grad}{\overrightarrow{Grad}} \newcommand{\Vv}{\overrightarrow{v}} \newcommand{\Vu}{\overrightarrow{u}} \newcommand{\Vw}{\overrightarrow{w}} \newcommand{\Vup}{\overrightarrow{u'}} \newcommand{\Zero}{\overrightarrow{0}} \newcommand{\Vx}{\overrightarrow{x}} \newcommand{\Vy}{\overrightarrow{y}} \newcommand{\Vz}{\overrightarrow{z}} \newcommand{\Vt}{\overrightarrow{t}} \newcommand{\Va}{\overrightarrow{a}} \newcommand{\Vb}{\overrightarrow{b}} \newcommand{\Vc}{\overrightarrow{c}} \newcommand{\Vd}{\overrightarrow{d}} \newcommand{\Ve}[1]{\overrightarrow{e_{#1}}} \newcommand{\Vf}[1]{\overrightarrow{f_{#1}}} \newcommand{\Vn}{\overrightarrow{0}} \newcommand{\Mat}{Mat} \newcommand{\Pass}{Pass} \newcommand{\mkF}{\mathfrak{F}} \renewcommand{\sp}{Sp} \newcommand{\Co}{Co} \newcommand{\vect}[1]{\texttt{Vect}\dpl{\left( #1\right)}} \newcommand{\prodscal}[2]{\dpl{\left\langle #1\left|\vphantom{#1 #2}\right. #2\right\rangle}} \newcommand{\trans}[1]{{\vphantom{#1}}^{t}{#1}} \newcommand{\ortho}[1]{{#1}^{\bot}} \newcommand{\oplusbot}{\overset{\bot}{\oplus}} \SelectTips{cm}{12}%Change le bout des flèches dans un xymatrix \newcommand{\pourDES}[8]{ \begin{itemize} \item Pour la ligne : le premier et dernier caractère forment $#1#2$ soit $#4$ en base 10. \item Pour la colonne : les autres caractères du bloc forment $#3$ soit $#5$ en base 10. \item A l'intersection de la ligne $#4+1$ et de la colonne $#5+1$ de $S_{#8}$ se trouve l'entier $#6$ qui, codé sur $4$ bits, est \textbf{\texttt{$#7$}}. \end{itemize} } \)

Définition


Soient \( \A\) et \( \mathscr{B}\) deux automates sur un alphabet \( \Sigma\) où l'on renomme les états de \( \mathscr{B}\) de sorte que \( E_\A\cap E_{\mathscr{B}}=\varnothing\) . On définit \( \A\mathscr{B}\) l'automate à \( \varepsilon\) -transition, par les règles suivantes.
\( \bullet\)
\( \Sigma_{\A\mathscr{B}}=\Sigma\)

\( \bullet\)
\( E_{\A\mathscr{B}}=E_\A\cup E_{\mathscr{B}}\)

\( \bullet\)
\( I_{\A\mathscr{B}}=I_\A\)

\( \bullet\)
\( F_{\A\mathscr{B}}=F_\mathscr{B}\)

\( \bullet\)
La fonction de transition \begin{eqnarray*} \tau_{\A\mathscr{B}} : E_{\A\mathscr{B}} \times \Sigma\cup{\varepsilon} & \longrightarrow & \mathcal{P}\left(E_{\A\mathscr{B}}\right)\\ \forall A \in E_\A, \forall x\in \Sigma, \ (A, x) &\longmapsto&\tau_\A(A, x)\\ \forall B \in E_\mathscr{B}, \forall x\in \Sigma,\ (B, x) &\longmapsto&\tau_\mathscr{B}(B, x)\\ \forall f\in F_\A, \forall i \in I_\mathscr{B},\ (f, \varepsilon)&\longmapsto i \end{eqnarray*}
En définitive, on connecte, par une \( \varepsilon\) -transition, les deux automates que l'on souhaite concaténer.

Exemple


Sur l'alphabet \( \Sigma=\{a, b\}\) , considérons les automates reconnaissant chacun des caractères. Automate reconnaissant \( \{a\}\) : \[ \xymatrix{ \ar[r]&A\ar[rd]_{b}\ar[rr]^{a}&&B\ar[ld]^{a, b}\ar[r]&\\ &&C\ar@(ld, rd)[]_{a, b}&& } \] \[ \begin{array}{c|cc} &a&b\\\hline \rightarrow A&B&C\\ B \rightarrow&C&C\\ C&C&C \end{array} \] Automate reconnaissant \( \{b\}\) ; c'est le même que précédemment en changeant le rôle de \( a\) et \( b\) et en prenant soin de nommer les états différemment de ceux de l'automate précédent : \[ \xymatrix{ \ar[r]&D\ar[rd]_{a}\ar[rr]^{b}&&E\ar[ld]^{a, b}\ar[r]&\\ &&F\ar@(ld, rd)[]_{a, b}&& } \] \[ \begin{array}{c|cc} &a&b\\\hline \rightarrow D&F&E\\ E \rightarrow&F&F\\ F&F&F \end{array} \] L'automate concatené est alors \[ \xymatrix{ \ar[r]&A\ar[rd]_{b}\ar[rr]^{a}&&B\ar[ld]^{a, b}\ar@*{[red]}[rr]^{\color{red}\varepsilon}& &D\ar[rd]_{a}\ar[rr]^{b}&&E\ar[ld]^{a, b}\ar[r]&\\ &&C\ar@(ld, rd)[]_{a, b}&& &&F\ar@(ld, rd)[]_{a, b}&& } \] Sa matrice est \[ \begin{array}{c|ccc} & a & b & \varepsilon\\\hline \rightarrow A& B & C & \\ B& C & C & D \\ C& C & C & \\ D& F & E & \\ E\rightarrow& F & F & \\ F& F & F & \end{array} \] dont l'\( \varepsilon\) -libéré est l'AEF \[ \begin{array}{c|cc} & a & b \\\hline \rightarrow A& B & C \\ B& C, F & C, E \\ C& C & C \\ D& F & E \\ E\rightarrow& F & F \\ F& F & F \end{array} \] dont l'automate déterministe associé est \[ \begin{array}{c|cc} & a & b \\\hline \rightarrow \{A\}& \{B\} & \{C\} \\ \{B\}& \{C, F\} & \{C, E\} \\ \{C\}& \{C\} & \{C\} \\ \{C, F\} &\{C, F\}&\{C, F\}\\ \{C, E\} \rightarrow &\{C, F\}&\{C, F\} \end{array} \] dont, pour y voir plus claire, nous pouvont renommer les états \[ \begin{array}{c|cc} & a & b \\\hline \rightarrow U& V & W \\ V& X & Y \\ W& W & W \\ X &X&X\\ Y \rightarrow &X&X \end{array} \]

Proposition


Soient \( \A\) et \( \mathscr{B}\) deux automates. \[L(\left(\A\mathscr{B}\right)_\varepsilon) = L(\A\mathscr{B})=L(\A)L(\mathscr{B})\]

Démonstration

C'est une conséquence triviale de la définition.

Exercice


Pour chacune des paires d'automates suivants \( \A\) et \( \mathscr{B}\) , déterminer l'ADEF, représentant la concaténation \( \A\mathscr{B}\) et \( \mathscr{B}\A\) .
  1. \( \A = \left( \begin{array}{c|cc} &a&b\\\hline \rightarrow A\rightarrow &A&B\\ B &B&B \end{array}\right) \qquad \mathscr{B} =\left( \begin{array}{c|cc} &a&b\\\hline \rightarrow A&A&B\\ B\rightarrow &B&B \end{array}\right) \)
  2. \( \A = \left( \begin{array}{c|cc} &a&b\\\hline \rightarrow A&B&A\\ B\rightarrow &B&A \end{array}\right) \qquad \mathscr{B} =\left( \begin{array}{c|cc} &a&b\\\hline \rightarrow A&C&B\\ B &B&B\\ C\rightarrow &C&B \end{array}\right) \)