DFA для набора {1,2,4,8, .., 2 ^ n}, записанного в двоичном виде - PullRequest
0 голосов
/ 25 ноября 2018

Я должен построить минимальный детерминированный конечный автомат (DFA) для набора: -

L = {1,2,2 2 , 2 3 , 2 4 ...., 2 n }, где числа 1,2,2 2 , 2 3 , 2 4 ...., 2 n записано в двоичном виде и входной алфавит = {0,1}, а 'n' - неотрицательное целое число.

У меня естьпостроил минимальный DFA как: -

enter image description here

Регулярное выражение (RegEx) для этого DFA должно быть: - 10 *, потому что Language содержит строки {1,10,100, 1000, ....}

Теперь я запутался, должен ли я рассматривать уникальное представление для каждой строки данного набора (Language) или нет.
Здесь строка '1'имеет бесконечно много представлений, таких как {1,01,001,0001, .....} Аналогично, я могу получить много представлений для каждой строки набора, сначала добавив нули.
Итак, если я рассмотрю это, то получу RegExкак 0 * 10 *.
Согласно этому регулярному выражению мой эквивалентный минимальный DFA будет: -
enter image description here

Итак, мой вопрос: какой DFA является правильным в соответствии с приведенным описанием набора, который я написал изначально.Должен ли я упомянуть, что все строки должны начинаться с «1» или каждая строка имеет уникальное представление для точного описания языка, чтобы я мог получить уникальный минимальный DFA для данного набора.
Пожалуйста, помогите!

1 Ответ

0 голосов
/ 25 ноября 2018

Я бы использовал второй, потому что он более гибкий, и если у вас есть ситуация, когда вам нужно сохранить свой номер в памяти, где поле памяти больше, чем ваше число (количество бит), вам нужно будет добавить начальныйнули для хранения.

...