Мы можем использовать пять состояний, чтобы запомнить значение n mod 5:
_______________0______________
/ \
| |
V |
----->q0--0-->q1--0-->q2--0-->q3--0-->q4
Теперь нам нужно прочитать 1:
_______________0______________
/ \
| |
V |
----->q0--0-->q1--0-->q2--0-->q3--0-->q4
| | | | |
1 1 1 1 1
| | | | |
V V V V V
q0' q1' q2' q3' q4'
Теперь мы можем рассмотреть каждый случай индивидуально. Для q0 'мы знаем, что мы видели число 0 в первом разделе, которое совпадает с 0 mod 5. Таким образом, nm = 0 (mod 5) уже известно. Мы можем принять любое число 0, затем 1, а затем принять, если у нас больше нет ввода: мы можем заставить q0 'сделать это:
_0_
/ \
| |
\ /
----->q0'--1-->qA
Для q1' у нас будет q = nm ( mod 5) = m (mod 5), так как n = 1 (mod 5) в этом случае. Мы можем сделать это sh, запомнив текущее значение m (mod 5) и затем найдя столько нулей в q. Таким образом, q1 'может быть заменено на:
_______________0________________________
/ \
| |
V |
----->q1'--0-->q1''--0-->q1'''--0-->q1''''--0-->q1'''''
| | | | |
1 1 1 1 1
| | | | |
V V V V V
qA<--0--qA'<--0--qA''<--0--qA'''<--0--qA''''
qA - это то же самое принимающее состояние, которое мы ввели ранее. Для q2 'мы можем отслеживать текущее значение nm (mod 5), которое составляет 2m (mod 5):
_______________0________________________
/ \
| |
V |
----->q2'--0-->q2''--0-->q2'''--0-->q2''''--0-->q2'''''
| | | | |
1 1 1 1 1
| | | | |
V V V V V
qA qA'' qA'''' qA' qA'''
Состояния qA', qA '', qA '' 'и qA '' '' те же, что были введены ранее, но обратите внимание, что порядок теперь другой: это отражает тот факт, что 2 x 0 = 0 (как и прежде), 2 x 1 = 2 (не 1), 2 x 2 = 4 ( не 2), et c.
Мы можем сделать то же самое для q3 'и q4':
_______________0________________________
/ \
| |
V |
----->q3'--0-->q3''--0-->q3'''--0-->q3''''--0-->q3'''''
| | | | |
1 1 1 1 1
| | | | |
V V V V V
qA qA''' qA' qA'''' qA''
_______________0________________________
/ \
| |
V |
----->q4'--0-->q4''--0-->q4'''--0-->q4''''--0-->q4'''''
| | | | |
1 1 1 1 1
| | | | |
V V V V V
qA qA'''' qA''' qA'' qA'
Объединение всех этих различных DFA в один огромный DFA гарантировано чтобы дать вам DFA, который будет работать. Есть ли существенно похожий NFA, я не могу сказать наверняка. Этот DFA имеет состояния:
- q0, q0 ': 2 состояния
- q1, q1',…., Q1 '' '' ': 6 состояний
- q2, q2 ',…., q2' '' '': 6 состояний
- q3, q3 ',…., q3' '' '': 6 состояний
- q4, q4 ' ,…., Q4 '' '' ': 6 состояний
- qA, qA',…., QA '' '': 5 состояний
Это всего 32 состояния. Если вы хотите попытаться свести к минимуму, вы можете выбить несколько из них.