RE: строка нечетной длины над {0, 1}, содержащая ровно два 0 [закрыто]
Я только начал изучать формальный язык и теорию автоматов, а недавно узнал о регулярных выражениях, поэтому я не знаю никаких сложных символов, поэтому, пожалуйста, придерживайтесь базовых символов.
Вопрос в следующем: напишите регулярное выражение для следующего языка над {0, 1}, которое представляет собой набор всех строк нечетной длины, содержащих ровно два 0s.
Я закончил первую часть (нечетную часть), она должна быть:
(0+1)[(0+1)(0+1)]* ( + это то же самое, что | (или) я полагаю, мы узнали это как +)
0s, это становится действительно запутанным. Я вижу только, что могу использовать * с 1 только потому, что # из 0s ограничены 2.
Но если я делаю (11)*, я не могу получить перестановку 0s внутри 1 s. (например, не могу получить 10101 с (11)*).
Что я знаю:
- только
1s может использовать* - в регулярном выражении будут использоваться только два
0s - способ сделать нечетную длину-это добавить нечетное число. length to an even length (четная длина должна иметь пустую строку внутри набора)
- нечетная длина не должна использовать
*, так как 2 нечетных = четных, поэтому только четная длина может использовать*.
Для возможных подсказок или ответа, пожалуйста, используйте 0, 1, +/|, *, (, ) только... Некоторые другие выражения я не смогу понять.
1 ответ:
Регулярный язык над
{0, 1}, который представляет собой набор всех строк нечетной длины, содержащих ровно два0.Что означает этот язык?
Примечание языковая строка может состоять из двух
0и любое количество1таким образом, общая длина строки нечетна. Других ограничений нет.1и еще0Ан появляются в любом порядке причем в любом узоре.Как мы знаем,
even+odd=odd. Таким образом, в строке есть как минимум три длины и нечетное число1потому что количество0в строке-два.Поэтому регулярное выражение должно быть примерно таким:
A, где A, B, C-подстроки, состоящие только из0B0C1и общее количество1в A, B, C нечетно, следовательно, все не может быть^(nul) в выражении.Теперь, поскольку общее число
Примечание: строка нечетной длины не может быть null.1в A, B, C = нечетно, поэтому это может быть что-то вроде: либо(1)two even and one odd, либо (2)all three are odd.Регулярное Выражение:
1(11)*01(11)*01(11)* + 1(11)*0(11)*0(11)* + (11)*01(11)*0(11)* + (11)*0(11)*01(11)* // all odd A odd, B C even B odd, A C even A B even, C odd