RE: строка нечетной длины над {0, 1}, содержащая ровно два 0 [закрыто]
Я только начал изучать формальный язык и теорию автоматов, а недавно узнал о регулярных выражениях, поэтому я не знаю никаких сложных символов, поэтому, пожалуйста, придерживайтесь базовых символов.
Вопрос в следующем: напишите регулярное выражение для следующего языка над {0, 1}
, которое представляет собой набор всех строк нечетной длины, содержащих ровно два 0
s.
Я закончил первую часть (нечетную часть), она должна быть:
(0+1)[(0+1)(0+1)]*
( +
это то же самое, что |
(или) я полагаю, мы узнали это как +
)
0
s, это становится действительно запутанным. Я вижу только, что могу использовать *
с 1
только потому, что # из 0
s ограничены 2
.
Но если я делаю (11)*
, я не могу получить перестановку 0
s внутри 1
s. (например, не могу получить 10101
с (11)*
).
Что я знаю:
- только
1
s может использовать*
- в регулярном выражении будут использоваться только два
0
s - способ сделать нечетную длину-это добавить нечетное число. 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-подстроки, состоящие только из0
B0
C1
и общее количество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