Поймите, что у нас должно быть 3 * 2 = 6 состояний в DFA. Зачем? Потому что у каждого есть 3 варианта для числа а (0 или 1 или 2) [ мыслят с точки зрения остатков ] и 2 варианта для количества б ( 0 или 1 аналогично).
Давайте назовем состояния axby
, что означает, что я нашел x
число а и y
число б до сих пор. Например, если мы находимся в a2b0
и встречаем a
, то мы переходим к a0b0
(надеюсь, вы понимаете, почему?). Аналогично a1b1
--- b ---> a1b0
и a1b1
--- a ---> a2b1
.
Излишне говорить, что a0b0
- это принимающее состояние.
Теперь все, что вам нужно сделать, это нарисовать состояния и продолжать присоединяться к ним. Я нарисовал их здесь на бумаге.