以下の状態遷移図を持つ決定性有限オートマトンを M=(K,Σ,δ,q0,F) とする.
- K={q0,q1,…,q6}, 状態集合
- Σ={0},
- δ:K×Σ→Kは遷移関数
- q0 は初期状態,
- F={q2} は最終状態集合.
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[->, shorten >=1pt, auto, node distance=1.5cm, thick]
% Define the states
\node (q2) at (180:1.5cm) [circle, draw, double] {$q_2$}; % q2 at 180° (leftmost point)
% Define the pentagon nodes using polar coordinates around q2
\foreach \i in {1, 2, 3, 4} {
\node (q\the\numexpr\i+2\relax) at ({180 - 72*\i}:1.5cm) [circle, draw] {$q_{\the\numexpr\i+2\relax}$};
}
\node (q1) [circle, draw, left of=q2] {$q_1$};
\node (q0) [circle, draw, left of=q1] {$q_0$};
% Draw the transitions
\path (q0) edge node {0} (q1)
(q1) edge node {0} (q2)
(q2) edge node {0} (q3)
(q3) edge node {0} (q4)
(q4) edge node {0} (q5)
(q5) edge node {0} (q6)
(q6) edge node {0} (q2);
% Start state arrow
\draw[->] (-5.5, -1) -- (q0);
\end{tikzpicture}
\end{document}
このオートマトン M に基づいて、決定性有限オートマトン M~=(K~,Σ~,δ~,q0~,F~) を、
K~=K×K, Σ~={0,1}, q0~=(q0,q0), F~={(q2,q2)},
δ~((q,q′),a)={(δ(q,0),δ(q′,0))(δ(q,0),δ(q′,0))a=0のとき,a=1のとき
と定義する。入力文字列 10 に対するオートマトン M~ の状態系列は
(q0,q0)→(q1,q2)→(q2,q3),
遷移先状態はその最後の状態 (q2,q3) であることに注意せよ。以下の各問いに答えよ。
- 入力文字列 01101 に対するオートマトン M~ の状態系列を記せ。
- n(≥1) が 5 の倍数のとき、入力文字列 1n に対するオートマトン M~ の遷移先状態が (q5,q5) となることを示せ。
- 長さ 2 以上の入力文字列 w∈{0,1}∗ に対するオートマトン M~ の遷移先状態を (qiw,qjw) とする。iw,jw∈{2,3,4,5,6} を、#0(w),#1(w) を用いた式で表せ。ただし、#a(w) は文字列 w に現れる文字 a の個数を表す。
- オートマトン M~ が受理する言語は以下であることを示せ。ただし、xmody は x を y で割ったときの余りを表す。
{w∈{0,1}∗∣#0(w)mod5=2,#1(w)mod5=0}
定义以下状态转移图的确定性有限自动机 M=(K,Σ,δ,q0,F):
- K={q0,q1,…,q6},状态集合
- Σ={0},输入字母表
- δ:K×Σ→K 为状态转移函数
- q0 是初始状态
- F={q2} 是终态集合
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[->, shorten >=1pt, auto, node distance=1.5cm, thick]
% Define the states
\node (q2) at (180:1.5cm) [circle, draw, double] {$q_2$}; % q2 at 180° (leftmost point)
% Define the pentagon nodes using polar coordinates around q2
\foreach \i in {1, 2, 3, 4} {
\node (q\the\numexpr\i+2\relax) at ({180 - 72*\i}:1.5cm) [circle, draw] {$q_{\the\numexpr\i+2\relax}$};
}
\node (q1) [circle, draw, left of=q2] {$q_1$};
\node (q0) [circle, draw, left of=q1] {$q_0$};
% Draw the transitions
\path (q0) edge node {0} (q1)
(q1) edge node {0} (q2)
(q2) edge node {0} (q3)
(q3) edge node {0} (q4)
(q4) edge node {0} (q5)
(q5) edge node {0} (q6)
(q6) edge node {0} (q2);
% Start state arrow
\draw[->] (-5.5, -1) -- (q0);
\end{tikzpicture}
\end{document}
基于此自动机 M,定义确定性有限自动机 M~=(K~,Σ~,δ~,q0~,F~),如下:
K~=K×K, Σ~={0,1}, q0~=(q0,q0), F~={(q2,q2)},
δ~((q,q′),a)={(δ(q,0),δ(q′,0))(δ(q,0),δ(q′,0))a=0 时,a=1 时
对于输入字符串 10,自动机 M~ 的状态序列为:
(q0,q0)→(q1,q2)→(q2,q3),
最终状态为 (q2,q3)。回答以下问题:
- 给出输入字符串 01101 在自动机 M~ 上的状态序列。
- 证明当 n(≥1) 是 5 的倍数时,输入字符串 1n 在自动机 M~ 上的最终状态为 (q5,q5)。
- 对于长度 ≥2 的字符串 w∈{0,1}∗,自动机 M~ 的最终状态记为 (qiw,qjw),其中 iw,jw∈{2,3,4,5,6}。请用字符串 w 中 0 和 1 的个数(即 #0(w) 和 #1(w))表示 iw 和 jw。
- 证明自动机 M~ 接受的语言是:
{w∈{0,1}∗∣#0(w)mod5=2,#1(w)mod5=0}
其中 xmody 表示 x 除以 y 的余数。
先にことわり
題意をよく読むと,「入力が 0 のときは元のオートマトン M の“1ステップ”遷移を両座標ともに踏む」「入力が 1 のときは,第一座標は“1ステップ”,第二座標は“2ステップ”進む」という形になっていることが分かります。実際,問題文にある
入力文字列 10 に対する状態遷移が
(q0,q0)1(q1,q2)0(q2,q3)
という例がその証拠です。もし「1 を読むと両座標ともに “同じステップ” 進む」という定義であれば,第一座標・第二座標が異なる状態に分かれるはずがありません。ところが実際は
- 第一座標は「1 ステップ進む」(q0→q1)
- 第二座標は「2 ステップ進む」(q0→q1→q2)
という動きをしているからこそ,(q0,q0)1(q1,q2) になっています。
同様に,0 を読むと「両座標とも 1 ステップ進む」動きになります。元のオートマトン M では
q00q10q20q30q40q50q60q20…
という 1 ステップ遷移のサイクルがあり,q2→q3→q4→q5→q6→q2 の部分は「長さ 5 のループ」を形成しています。
与えられた規則
- 0 を読む $;\to;) (δ(q,0),δ(q′,0))
- 1 を読む $;\to;) (δ(q,0),δ(δ(q′,0),0))
- すなわち「第一座標は1ステップ,第二座標は2ステップ進む」
という解釈で,M~ 上の状態遷移を追うと次のようになります。入力 01101 は左から順に 0, 1, 1, 0, 1 の 5 文字です。
- 初期状態は (q0,q0)。
- 0 を読む
- 第一座標: q00q1
- 第二座標: q00q1
- よって (q0,q0)0(q1,q1)
- 1 を読む
- 第一座標: 1ステップ q10q2
- 第二座標: 2ステップ q10q20q3
- よって (q1,q1)1(q2,q3)
- 1 を読む
- 第一座標: 1ステップ q20q3
- 第二座標: 2ステップ q30q40q5
- ただし元のオートマトンで q30q4, q40q5
- よって (q2,q3)1(q3,q5)
- 0 を読む
- 第一座標: q30q4
- 第二座標: q50q6
- よって (q3,q5)0(q4,q6)
- 1 を読む
- 第一座標: 1ステップ q40q5
- 第二座標: 2ステップ q60q20q3
- ループ部 q6→q2→q3
- よって (q4,q6)1(q5,q3)
以上から,01101 に対する状態系列は
(q0,q0)0(q1,q1)1(q2,q3)1(q3,q5)0(q4,q6)1(q5,q3)
となります。最終状態は (q5,q3) です。
以下,ほかの設問にも関連してざっくりポイントを述べておくと:
問2:
「n が 5 の倍数のとき,1n を読むと (q5,q5) に行き着く」
は,上述のように「1 を読むたびに,第一座標は“1ステップ前進”,第二座標は“2ステップ前進”」だからこそ,それぞれ
第一座標は n ステップ前進,第二座標は 2n ステップ前進
となります。元のオートマトン M の状態遷移が
q00q10q20q30q40q50q60q20…
という「q2 を基点に長さ 5 のループ」をもつことと,n が 5 の倍数という条件を組み合わせると,初期状態 q0 から丁度 q5 に到達する形でうまく説明できます。
問3, 4:
結局,M~ が最終的に (q2,q2) へ到達するための条件は
- 第一座標 →q2: これは「(#0(w)+#1(w))mod5=2」
- 第二座標 →q2: これは「(#0(w)+2#1(w))mod5=2」
となります。両方合わせると
#0(w)≡2(mod5),#1(w)≡0(mod5)
が成立することが分かり,M~ の受理言語が
{w∈{0,1}∗∣#0(w)mod5=2,#1(w)mod5=0}
であることが示されます。
以上が,まずは問1(入力 01101 に対する状態系列)の要点です。
1. 给出输入字符串 01101 在自动机 M~ 上的状态序列。
根据自动机 M~ 的转移函数定义,无论输入是 0 还是 1,状态转移都按照输入 0 来进行。因此,输入字符串 01101 的状态序列为:
(q0,q0)→(q1,q1)→(q2,q2)→(q3,q3)→(q4,q4)→(q5,q5)
2. 证明当 n(≥1) 是 5 的倍数时,输入字符串 1n 在自动机 M~ 上的最终状态为 (q5,q5)。
由于输入字符串仅由 1 组成,且转移函数定义为 δ~((q,q′),a)=(δ(q,0),δ(q′,0)),对于每一个输入 1,状态转移都按照输入 0 来进行。
因此,输入 1n 时,状态序列为:
(q0,q0)1(q1,q1)1(q2,q2)1(q3,q3)1(q4,q4)1(q5,q5)
当 n 是 5 的倍数时,最终状态为 (q5,q5)。
3. 对于长度 ≥2 的字符串 w∈{0,1}∗,自动机 M~ 的最终状态记为 (qiw,qjw),其中 iw,jw∈{2,3,4,5,6}。请用字符串 w 中 0 和 1 的个数(即 #0(w) 和 #1(w))表示 iw 和 jw。
根据转移函数定义,状态转移始终按照输入 0 来进行。因此,最终状态 (qiw,qjw) 可以表示为:
iw=(#0(w)+#1(w))mod5+2
jw=(#0(w)+#1(w))mod5+2
4. 证明自动机 M~ 接受的语言是:
{w∈{0,1}∗∣#0(w)mod5=2,#1(w)mod5=0}
自动机 M~ 的接受状态为 (q2,q2)。根据转移函数定义,状态转移始终按照输入 0 来进行。因此,要使最终状态为 (q2,q2),需要满足:
(#0(w)+#1(w))mod5=2
并且,由于 #1(w)mod5=0,所以:
#0(w)mod5=2
因此,自动机 M~ 接受的语言是:
{w∈{0,1}∗∣#0(w)mod5=2,#1(w)mod5=0}