Проблема с регулярным выражением
-
18-09-2019 - |
Вопрос
Что такое регулярное выражение для языка 0м1н где m+n четно?
Решение
Если вы имеете в виду строку 000...111...
где длина строки четная, вы можете использовать ^(00)*(01)?(11)*$
Другие советы
Хорошо, значит, нужно считать за ноль случаи, когда они нечетные, а когда четные.Для этого требуется два состояния: одно для четных нулей, другое для нечетных нулей.Тогда для случая нечетного нуля вам нужно иметь 1 единицу, а затем четное количество единиц.Для четного случая вам просто нужно четное количество единиц.
Написать DFA легко, но я не знаю, как его построить, поэтому рискну предположить регулярное выражение:
(0 (00)* 1 (11)*) \/ (00)*(11)*
Не связан с StackOverflow