跳到主要内容

東京工業大学 情報理工学院 情報工学系 2016年8月実施 午前 2.

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

Σ={0,1}\Sigma=\{0,1\} とし、二進整数を最上位ビットから入力する。先頭の 00 は許し、空語は扱わない。状態遷移は行を状態、列を入力記号とする表で答えよ。

A0A_0Q={q0,q1}Q=\{q_0,q_1\}、初期状態 q0q_0、受理集合 {q0}\{q_0\} とし、両入力で q0,q1q_0,q_1 を交互に移る、偶数長の語を受理する DFA である。

  1. A0A_0 の遷移関数だけを変更し、偶数を受理する2状態 DFA A1A_1 を与えよ。
  2. A1A_1 を奇数だけ受理するものに変更する方法を30字以内で答えよ。
  3. Q={r0,r1,r2}Q=\{r_0,r_1,r_2\}、初期状態 r0r_0 の3状態 DFA A2A_2 で3の倍数だけを受理せよ。
  4. A1,A2A_1,A_2 の積により、6の倍数だけ受理する6状態 DFA A3A_3 を定義し、状態の対応を60字以内で説明せよ。
  5. A1,A2A_1,A_2 の和により、偶数または3の倍数を受理する6状態 NFA A4A_4 を、初期状態 s0s_0 として定義せよ。状態の対応を60字以内で説明せよ。
  6. A4A_4 と等価な DFA A5A_5 を初期状態 s0s_0 として定義し、状態の対応を120字以内で説明せよ。

题目描述

构造识别二进制偶数、奇数、3的倍数、6的倍数的自动机;用非确定自动机实现“偶数或3的倍数”,再确定化。允许前导零,不处理空串。

Kai

1)

δ1\delta_101
q0q_0q0q_0q1q_1
q1q_1q0q_0q1q_1

2)

受理状態の集合を {q1}\{q_1\} に変更する。

3)

F2={r0}F_2=\{r_0\}rjr_j は読んだ整数の3での剰余 jj を表す。

δ2\delta_201
r0r_0r0r_0r1r_1
r1r_1r2r_2r0r_0
r2r_2r1r_1r2r_2

入力 bb により剰余は (2j+b)mod3(2j+b)\bmod3 となる。

4)

状態 pij=(qi,rj)p_{ij}=(q_i,r_j)、初期状態 p00p_{00}F3={p00}F_3=\{p_{00}\} とする。

δ3\delta_301
p00p_{00}p00p_{00}p11p_{11}
p01p_{01}p02p_{02}p10p_{10}
p02p_{02}p01p_{01}p12p_{12}
p10p_{10}p00p_{00}p11p_{11}
p11p_{11}p02p_{02}p10p_{10}
p12p_{12}p01p_{01}p12p_{12}

pijp_{ij}A1A_1qiq_iA2A_2rjr_j にある状態を表す。

5)

Q4={s0,q0,q1,r0,r1,r2}Q_4=\{s_0,q_0,q_1,r_0,r_1,r_2\}F4={q0,r0}F_4=\{q_0,r_0\} とする。

δ4\delta_401
s0s_0{q0,r0}\{q_0,r_0\}{q1,r1}\{q_1,r_1\}
q0q_0{q0}\{q_0\}{q1}\{q_1\}
q1q_1{q0}\{q_0\}{q1}\{q_1\}
r0r_0{r0}\{r_0\}{r1}\{r_1\}
r1r_1{r2}\{r_2\}{r0}\{r_0\}
r2r_2{r1}\{r_1\}{r2}\{r_2\}

最初の入力で両機械に分岐し、その後は各機械の遷移を行う。

6)

Q5={s0}{pij:0i1, 0j2}Q_5=\{s_0\}\cup\{p_{ij}:0\le i\le1,\ 0\le j\le2\} とし、pijp_{ij} からの遷移は4)の表と同じとする。追加の行は

δ5\delta_501
s0s_0p00p_{00}p11p_{11}

受理集合は

F5={p00,p01,p02,p10}.F_5=\{p_{00},p_{01},p_{02},p_{10}\}.

pijp_{ij} は NFA の状態集合 {qi,rj}\{q_i,r_j\} に対応する。いずれかの成分が受理状態なら受理する。s0s_0 は入力前だけの状態である。