Cours 8 : Automates à double sens, Automates séquentiels

Automates à double sens

Automate Boustrophédon :
\[B = ⟨Q, 𝛴 \sqcup \lbrace \triangleright, \triangleleft \rbrace⟩, I, F, 𝛿⟩\]
  • \[𝛿 ⊆ Q × (𝛴 \sqcup \lbrace \triangleright, \triangleleft \rbrace) × \lbrace ⟵, ⟶ \rbrace × Q\]

Configuration :

\[(u, q, v) : u, v∈ (\triangleright 𝛴 ^\ast × 𝛴^\ast \triangleleft), q∈Q\]

C’est une machine de Turing qui n’écrit pas sur son ruban.

Ex :

\[(u, q, av)⟶^{(q, a, d, q')} (u', q', v')\]
  • si $d = ⟶$, $u’ = ua, v’= v$

\[𝜆_0^0, 𝜆_0^1, 𝜆_1^1, 𝜆_1^0 : 𝛴^\ast ⟶ 2^{Q×Q}\] \[w \sim w' ⟺ ∀i,j∈ \lbrace 0, 1 \rbrace, 𝜆^i_j (w) = 𝜆^i_j (w')\]

Cette relation d’équivalence est une congruence.

Preuve :

Si $u \sim u’$ et $v \sim v’$, montrons que

\[∀(p, q)∈Q×Q, (p, q)∈ 𝜆_0^1(u v) ⟺ (p, q)∈ 𝜆_0^1(u' v')\]

Il suffit de concaténer les chemins de $u$ (qui sont les mêmes que $u’$) aux chemins de $v$ (qui sont les mêmes que $v’$).

Elle sature $L$

En effet, si $w, w’∈𝛴^\ast$, et $w∈L$ on découpe un chemin acceptant en sous-chemins allant d’un bout de la bande à l’autre, et chacun de ces sous-chemins ont un équivalent dans $w’$ par congruence, d’où $w’∈L$ aussi.


Normalisation d’automates séquentiels

$f : A^\ast ⟶ A^\ast$

\[f(a^{2n}b) = (ab)^n a\]
  digraph {
    rankdir=LR;
    blank2[label="", style=invis];

    ""-> 1[label="𝜀"];
    2 -> 1[label="a / 𝜀"];
    1 -> 2[label="a / ab"];
    1 -> 3[label="b / a"];
    3 -> blank2[label="𝜀"];
  }
\[m_1 = a\\ m_2 = a \\ m_3 = 𝜀\]

($m_i$ : plus long préfixe commun des sorties qu’on peut écrire à partir de l’état $i$)

Normalisation

  digraph {
    rankdir=LR;
    blank2[label=""];
    ""-> 1[label="m=a"];
    2 -> 1[label="a / 𝜀"];
    1 -> 2[label="a / ba"];
    1 -> 3[label="b / 𝜀"];
    3 -> blank2[label="𝜀"];
  }
\[i ⊛' a = m_i^{-1} (i ⊛ a) m_{i \odot a}\] \[1 ⊛' a = m_1^{-1} (1 ⊛ a) m_{1 \odot a} = m_1^{-1} (1 ⊛ a) m_2 = a^{-1} (ab) a = ba\\ 2 ⊛' a = a^{-1} (𝜀) a = 𝜀\\ 1 ⊛' b = a^{-1} (a) 𝜀 = 𝜀\]

et

\[m'_1 = 𝜀\\ m'_2 = 𝜀 \\ m'_3 = 𝜀\]

Les sorties sont font plus tôt ⟶ pour écrire la même chose sur la sortie, on lit moins de lettres.


Automates des résiduels pour $f(w) = w(ab)^{-1}$ :

(fonction partielle : elle enlève un suffixe $ab$ si le mot $w$ en a un)

  digraph {
    rankdir=LR;
    1[label="fab", shape=doublecircle];
    2[label="fa"];
    3[label="f𝜀", style=dashed];
    2 -> 1[label="b / 𝜀"];
    1 -> 2[label="a / ab"];
    1 -> 3[label="b / b"];
    3 -> 2[label="a / 𝜀"];
    2 -> 2[label="a / a"]
    3 -> 3[label="b / b"];
  }
\[m_𝜀 = \bigwedge \lbrace b ⋯, a ⋯, ab ⋯ \rbrace = 𝜀\\ m_a = 𝜀\\ m_{ab} = 𝜀\]

Automates à piles déterministes

\[L = \lbrace a^n b a^n \mid n≥0 \rbrace\]
  digraph {
    rankdir=LR;
    q_f[shape="doublecircle"];
    ⊥ -> q_0;
    q_0 -> q_0[label="a, x/xA"];
    q_0 -> q_1[label="b, x/x"];
    q_1 -> q_1[label="a, A/𝜀"];
    q_1 -> q_f[label="𝜀, ⊥/𝜀"];
  }

Abréviations :

  • $D$ : déterministe
  • $TR$ : en temps réel = sans $𝜀$-transition
  • $S$ : standardisé

  digraph {
    blank[label=""];
    "" -> 1;
    1 -> 1[label="ab"];
    1 -> 2[label="aba"];
    2 -> 1[label="𝜀"];
    1 -> 3[label="ab"];
    3 -> 1[label="𝜀"];
    3 -> 4[label="ab"];
    4 -> 2[label="ab"];
    2 -> 4[label="b"];
    4 -> blank[label="abab"];
  }

On veut calculer les $m_i$ :

\[\begin{cases} X_1 = ab X_1 + aba X_1 + ab X_3\\ X_2 = X_1 + ab X_4 \\ X_3 = X_1 + ab X_4 \\ X_4 = ab X_2 + abab \\ \end{cases}\]

  • les $X_i$ sont les mots $m_i$
  • $+$ est l’opération “plus grand préfixe commun” ($0$ : élément neutre).

On travaille dans le semi-anneau à gauche : $k ≝ A^\ast ∪ \lbrace 0 \rbrace$.

On observe que :

  • $u+0 = 0+u = u$
  • $u+u =u$
  • il y a distributivité à gauche mais par pas à droite : \(u(v_1 + v_2) = u v_1 + u v_2\)

    • pas de distributivité à droite (exemple de Maher ) : si $v_1 = a, v_2 = ab, u = ba$ : \((v_1 + v_2) u = au = aba ≠ v_1 u + v_2 u = a ba + abba = ab\)

On note $≤$ l’ordre (partiel) préfixe sur $k$ (avec $u ≤ 0$ par convention). On l’étend à $k^n$ composante par composante.

La multiplication est la concaténation.

https://www.irif.fr/~jep/PDF/Exposes/Sequential.pdf


\[\begin{cases} X_1 = a X_1 + b X_2 + 𝜀\\ X_2 = b X_1 + a X_2 \end{cases}\]
  • $X_2 = a^\ast b X_1$
  • $X_1 = a X_1 + b X_2 + 𝜀 = a X_1 + ba^\ast b X_1 + 𝜀 = (a+ba^\ast b)X_1 + 𝜀$

  • ⟹ $X_2 = a^\ast b (a + ba^\ast b)^\ast$

Lemme d’Arden

Soit une équation sur les langages d’inconnue $X$ :

\[X = KX + L\]

alors $X = K^\ast L$

Preuve :

Si $X$ est une solution, alors :

\[X = KX + L ⟹ \begin{cases} L ⊆ X \\ KX ⊆ X \end{cases} ⟹ K\underbrace{L}_{⊆X} ⊆ X\]

Donc $K^2 X ⊆ X$, et par récurrence $K^\ast L ⊆ X$

Réciproquement :

Mq $X ⊆ K^\ast L$.

Soit $w$ le mot le plus court de $X \backslash K^\ast L$.

\[w ∉ L ⟹ w ∈ KX\]

Donc \(w ≝ \underbrace{u}_{∈K}\underbrace{v}_{∈X}\)

Comme $u ≠ 𝜀$, $v$ est plus court que $w$, donc $v∈K^\ast L$, et

\[w ∈ K^+ L ⊆ K^\ast L\]

contradiction.


Exemple :

  digraph {
    rankdir=LR;
    blank[label="", style=invis];
    q_2[shape=doublecircle];
    blank -> q_0;
    q_0 -> q_0[label="a"];
    q_0 -> q_1[label="b"];
    q_1 -> q_0[label="a"];
    q_1 -> q_2[label="b"];
    q_2 -> q_2[label="a, b"];

  }
\[\begin{cases} L_0 = a L_0 + b L_1 \\ L_1 = a L_0 + b L_2 \\ L_2 = a L_2 + b L_2 + 𝜀 \\ \end{cases}\] \[L_0 = (a+ba)^\ast bb (a+b)^\ast\]

Donné :

\[L_0 = a^\ast b (a+b)^\ast + ba^\ast \\ = \underbrace{a^\ast}_{ ≝ K} \underbrace{b (a+b)^\ast}_{ ≝ L}\] \[L_0 = a L_0 + b \underbrace{(a+b)^\ast}_{L_1} \\ = a L_0 + b L_1\] \[L_1 = (a+b) L_1 + 𝜀\]
  digraph {
    rankdir=LR;
    blank[label="", style=invis];
    1[shape=doublecircle];
    blank -> 0;
    0 -> 0[label="a"];
    0 -> 1[label="b"];
    1 -> 1[label="a,b"];

  }

Leave a comment