Регулярные множества, регулярные выражения Лекция 3

реклама
Лекция 3
Регулярные множества,
регулярные выражения
Определение 3.1
• Пусть  - некоторый алфавит. Регулярное множество
в алфавите  определяется рекурсивно следующим
образом:
• 1. пустое множество является регулярным в
алфавите ;
• 2. {} – регулярное множество в алфавите ;
• 3. если а , то {а} – регулярное множество в
алфавите ;
• 4. R является регулярным множеством, если R
представимо в виде 5. PQ, или PQ, или P*, где P и
Q – регулярные множества в алфавите ;
• 6. других регулярных множеств в алфавите  нет.
• Таким образом, множество в алфавите  является
регулярным тогда и только тогда, когда оно либо
пусто, либо содержит единственную пустую цепочку,
либо содержит некоторый символ этого алфавита,
либо получено из регулярных множеств в данном
алфавите посредством операций объединения,
конкатенации или итерации, примененных к
регулярным множествам.
• Заметим, что из определения регулярного множества
следует, что:
• 1. любое конечное множество является регулярным
множеством;
• 2. объединение любого числа конечных множеств
является также регулярным множеством;
•
3. некоторое бесконечное множество является
регулярным тогда и только тогда, когда оно
составлено из символов некоторого алфавита с
использованием операции итерации (т.е. оно
содержит все возможные цепочки, которые можно
построить из символов этого алфавита), либо когда
это множество является объединением любого
числа так построенных бесконечных множеств и
любого числа конечных множеств (см также
свойства регулярных выражений).
• Пример 3.1.
• 1. {1} – регулярное множество,
• {1,2} – регулярное множество, полученное
посредством выполнения операции объединения
над регулярными множествами {1} и {2},
• {12} – регулярное множество, полученное
посредством выполнения операции конкатенации
над регулярными множествами {1} и {2},
• {1,2,12} – регулярное множество, полученное
посредством выполнения операций конкатенации
(над регулярными множествами {1} и {2}) и двух
операций объединения
• По определению язык – это множество цепочек.
Таким образом, любое регулярное множество
цепочек также есть язык. Задать такой язык
(некоторое регулярное множество) можно задав
регулярное выражение, обозначающее это
регулярное множество.
Определение 3.2
• Регулярные выражения в алфавите  и регулярные
множества, которые они обозначают, определяются
рекурсивно следующим образом:
• 1.  - регулярное выражение, обозначающее
регулярное множество ,
• 2.  – регулярное выражение, обозначающее
множество {},
• 3. если а  , то а – регулярное выражение,
обозначающее регулярное множество { а },
• 4. если p и q – регулярные выражения,
обозначающие регулярные множества P и Q
соответственно, то:
• а) (p + q) – регулярное выражение, обозначающее
регулярное множество PQ,
• б) (pq) – регулярное выражение, обозначающее
регулярное множество PQ,
• в) (p)* - регулярное выражение, обозначающее P*;
• 5. ничто другое не является регулярным
выражением.
• Пример 3.2. Приведем несколько примеров
регулярных выражений и обозначаемых ими
множеств:
• 1) 01 обозначает множество {01}
• 2) 0* обозначает множество {0}*
• 3) (0+1)* обозначает множество {0,1}*
• 4) (0+1)*011 обозначает множество всех цепочек,
составленных из нулей и единиц и оканчивающихся
цепочкой 011.
• 5) (a+b)(a+b+0+1)* обозначает множество всех
цепочек из {0,1,a,b}*, начинающихся с а или b
• 6) (00+11)*((01+10)(00+11)*(01+10)(00+11)*)*
обозначает множество всех цепочек нулей и
единиц, содержащих четное число нулей и четное
число единиц.
• Для каждого регулярного множества можно найти, по
крайней мере, одно регулярное выражение,
обозначающее это множество, и для каждого
регулярного выражения можно построить регулярное
множество, обозначаемое этим выражением. Для
каждого регулярного множества существует
бесконечно много обозначающих его регулярных
выражений.
Определение 3.3
• Будем говорить, что два регулярных выражения
равны (=), если они обозначают одно и тоже
множество.
Основные алгебраические свойства
регулярных выражений
•
•
•
•
•
•
1.
2.
3.
4.
5.
6.
 +  = ,  +  = 
+=+
 + ( + ) = ( + ) +  =  +  + 
() = () = 
 =  =  и  =  = 
( + ) =  + 
•
•
•
•
•
•
•
•
•
•
7. ( + ) =  + 
8. ** = *
9. (*)* = *
10. * = *  *
11. * =  + *
12. * =  и * = 
13. (* + *)* = (**)* = ( + )*
14. ()* = ()*
15. (*)** = (+)*
16. (*)* = (+)* +  и (*)* = (+)* + 
• Доказательство:
• Пусть  и  обозначают множества L1 и L2
соответственно. Тогда +  обозначает L1  L2, а  +
 обозначает L2  L1. Но L1  L2 = L2  L1 по
определению объединения. Следовательно,  +  = 
+  (Доказать отдельные равенства самостоятельно).
Задание 4
• Описать свойства цепочек, принадлежащих языку,
заданному указанным регулярным выражением.
Привести примеры четырех цепочек, принадлежащих
данному языку.
1. 0(0+1)*(a+b)
2. 1(0+1+2)*(a+b)(1+2)*
3. (0+1+2)*(a+b)* 21
4. (1+2)+(a+b+с)(1+2)*22
5. (0+2)*(a+b)(1+2)*11
6. 33(3+4+5)*(1+2)*7
7. 7(6+7+8)*(a+b)(1+2)*6
8. (a+b)(1+2)*(6+7+8)*1
9. (1+2+3)*(1+2)5
10. (4+5)(4+5+6)*(7+8)*9
11. (6+7)*(8+9)(1+2)*8
12. (1+2+3)*(4+5+6)*(1+2)
13. (0+1)(a+b)*(3+4+5)*7
14. (3+4)*5(6+7)*9
15. 1(2+3+4)*7(5+6)*8
16. 3(4+5)*(6+7)(8+9)*1
17. (a+b)(1+2+4)*(6+7)
18. (a+b)*2(3+4)*6
•
•
•
•
•
•
•
•
•
•
19. (1+2)*(4+5)(3+6)*7
20. (4+5)*(1+2)(6+7)*81
21. (3+4)*5(6+7)*
22. (5+6+7)*(a+b)(1+2)*
23. (0+2)(a+b)*(1+2)*1
24. (3+4)*(a+b)(1+2)
25. (2)*(a+b)(1+2)*3
26. 1(0)*(1+2)*12
27. 3(2)*(a+b)(4+5)*
28. 1(3+2)*4(1+2)*
•
•
•
•
•
•
•
•
•
•
29. (0+2)(a+b)*(1+2)*
30. (1+2)*2(1+2)*1
31. (8+7)(6+9)*(1+2)90
32. (3+2+4)*(1+5+2)*(6+7)+
33. (1+5)(3+4)*(6+7+8)*1
34. (4+5+6)*567(76+77)*9
35. 121(21+32+41)*7(52+62)*8
36. 123(34+25)*(63+71)(18+92)*1
37. (1a+2b)(12+21+43)*(6+7)
38. (a2+b3)*2121(113+421)*611
•
•
•
•
•
•
•
•
•
•
•
•
39. (121+211)*(4234+5546)(563+656)*7
40. (34+45)*(541+222)(226+347)*81
41. (13+64)*57(68+79)*
42. (52+62+74)*(a1+b1)(12+23)*
43. (012+221)(a+b)*(13343+24444)*14
44. (30+48)*(a+b)(111+232)+
45. (23)*(1qqa+b322)(231+4e2)*3
46. 134(02)*(11+22)*132
47. 332(221)*(111a+2222b)(4ww+322)*
48. 1221(23+s2)*42(12+22)*
49. (0kd+2)(dsaa+bss)+(saz1+ddw2)*
50. (32q1+2xsw)*2222(1sd+2df)*12
Скачать