Я работаю над мысленным упражнением, проведенным моим профессором в конце лекции. Проблема состоит в том, чтобы построить DFA с учетом определенного определения языка. Прежде чем я построю DFA, первое мышление - преобразование определения языка в регулярное выражение.Построить регулярное выражение, чтобы он соответствовал следующему языку
Предоставленный алфавит является двоичным {0, 1}
Определение языка довольно неформальным:
Язык определения набора двоичных строк, в которых каждая подстрока длины 3 имеет, как хотя бы один нуль
так примеры строк, которые соответствуют этому определению будет 000
, 001
, 1010
и так далее.
Моя проблема возникает с регулярным выражением, которое соответствует этому определению. Я попытался поиграть на http://regexr.com/, но я обнаружил, что «..0» соответствует каждому трём символам с нулем в конце. Я не уверен, как сопоставить каждую подстроку так, как определяется язык, или если это возможно.
Есть ли способ построить регулярное выражение для этой проблемы?
Это здорово, спасибо. Как можно было бы расширить это регулярное выражение, если теперь алфавит должен содержать цифру 2, но неформальный язык не изменился? – JavascriptLoser
Перечитайте подсказки, замените «' 1 »на« '1' или' 2' ». Что-нибудь перестает иметь смысл? (Это задание: чем больше вы пробуете себя, тем больше вы учитесь.) – Amadan
Логика подсказок имеет смысл, но я не знаю, как представить «1» или «2» в качестве шаблона регулярного выражения. – JavascriptLoser