160 likes | 289 Views
Лекция 3. Регулярные множества, регулярные выражения. Определение 3.1. Пусть - некоторый алфавит. Регулярное множество в алфавите определяется рекурсивно следующим образом: 1. пустое множество является регулярным в алфавите ; 2. { } – регулярное множество в алфавите ;
E N D
Лекция 3 Регулярные множества, регулярные выражения
Определение 3.1 • Пусть - некоторый алфавит. Регулярное множество в алфавите определяется рекурсивно следующим образом: • 1. пустое множество является регулярным в алфавите ; • 2. {} – регулярное множество в алфавите ; • 3. если а , то {а} – регулярное множество в алфавите ; • 4. R является регулярным множеством, если R представимо в виде 5. PQ, или 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) – регулярное выражение, обозначающее регулярное множество PQ, • б) (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 • 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