Регулярные множества и регулярные выражения
В данном разделе мы рассмотрим класс множеств цепочек над конечным словарем, которые очень легко описать формулами некоторого вида. Эти множества называются регулярными.
Определение 1. Пусть V1 и V2 — множества цепочек. Определим три операции на этих множествах.
1. Объединение: V1 ÈV2 ={a| a Î V1} или a Î V2.
2. Конкатенация (произведение, склеивание): Vl ·V2 = {ab|a Î V1,a Î V2} Знак операции конкатенации обычно опускается.
Пример: V, = {abc, ba},V2 = {b, cb}. V1V2 ={abcb, abccb, bab, bacb}.
Обозначим Vn произведение n множеств V:Vn =VV...V,V° ={e} (здесь e-пустая цепочка).
Пример: V1 = {abc, ba}, V12 = {abcabc, abcba, baba, baabc}.
3. Итерация: V* = V0ÈV1ÈV2 È... = Èa=0∞Vn.
Пример: V = {a, bc}, V* = {e, a, bc, aa, abc, bcbc, bca, aaa, aabc,...}.
Определение 4.13. Класс регулярных множеств над конечным словарем V определяется так:
1. — регулярное множество;
2. {e} — регулярное множество;
3. ("aÎV){a} — регулярное множество;
4. Если S и Т — регулярные множества, то регулярны:
- объединение SÈT;
- конкатенация ST;
|
|
- итерация S* и Т*.
5. Если множество не может быть построено конечным числом применения правил 1-4, то оно нерегулярно.
Примеры регулярных множеств: {ab, ba}* {aa}; {b}({c}È{d, ab}*). Примеры нерегулярных множеств: {anbn| n > 0}; {a | в цепочке a количества вхождений символов а и b совпадают}.