Методическая разработка предназначена для самостоятельной работы студентов специальности «Прикладная информатика»



бет2/3
Дата12.06.2016
өлшемі398.09 Kb.
#130981
түріМетодическая разработка
1   2   3

Теорема 2.2. Класс регулярных языков замкнут относительно основных теоретико - множественных операций – объединения, пересечения и дополнения.

Приводимое доказательство конструктивно – излагаются алгоритмы построения соответствующих автоматов. Пусть L1 и L2 – регулярные языки, распознаваемые конечными автоматами К1={Q1, A, q10, g1, F1} и К2={Q2, A, q20, g2, F2} соответственно; считаем, что Q1={q10, q11, q12, ..., q1f} и Q2={q20, q21, q22, ..., q2h}. Автомат К={Q, A, q0, g, F}, распознающий язык L1L2, строим следующим образом. Полагаем Q=Q1хQ2; каждое состояние конструируемого автомата содержит две компоненты, левую и правую. Начальным состоянием нового автомата считаем (q10,q20), а функцию переходов g определяем следующим образом:



g((q1i,q2j)k)=(g1(q1i,ak),g2(q2jk))

Очевидно, по первой компоненте автомат К моделирует действия автомата К1, а по второй компоненте – действия автомата К2. Входное слово принадлежит объединению языков L1 и L2 тогда и только тогда, когда после его обработки автомат К окажется в состоянии, у которого либо первая компонента принадлежит совокупности F1, либо вторая компонента принадлежит совокупности F2.Таким образом, следует положить:



F=(F1хQ2)(Q1хF2).

Все компоненты автомата К определены, его построение закончено.

Автомат К={Q, A, q0, g, F}, распознающий язык L1L2, отличается от К только последней своей компонентой. Следует положить

F=F1хF2.

Пусть К={Q, A, q0, g, F} – конечный автомат, распознающий язык L. Произвольное слово из А* принадлежит языку Lс=А*\L тогда и только тогда, когда после его обработки автомат К оказывается в состоянии, не принадлежащем F. Поэтому автоматом, распознающим язык Lс, является конечный автомат Кс={Q, A, q0, g, Q\F}. Образно говоря, для того, чтобы получить конечный автомат, распознающий дополнение регулярного языка, надо в автомате, распознающем исходный язык, поменять местами «хорошие» и «плохие» состояния.

Теорема доказана.

На рис. 2.14 представлены два конечных автомата, распознающих языки L1 и L2. На рис. 2.15 и 2.16 изображены автоматы, распознающие языки L1L2 и L1L2 соответственно.










На рис. 2.17 представлен автомат, распознающий язык L3, представляющий собой дополнение к языку L2. На рис. 2.18 изображен автомат, распознающий разность языков L1 и L2 (или пересечение языков L1 и L3).







Заметим, что часто автоматы, распознающие объединение и пересечение языков, строятся существенно проще. Это связано с тем, что некоторые состояния из множества состояний Q=Q1хQ2 могут быть недостижимыми. Рассмотрим следующий пример. Пусть требуется построить автомат, распознающий объединение языков L1 и L2; автоматы K1 и K2, распознающие эти языки, изображены на рис. 2.19.




Диаграмму переходов автомата K (рис. 2.20), распознающего язык L1L2, строим следующим образом. Вводим вершину, соответствующую начальному состоянию (q01,q02). По букве a автомат K1 из состояния q01 переходит в состояние q11, а автомат K2 – из q02 в q12. Следовательно, автомат K из состояния (q01,q02) перейдет в состояние (q11,q12). Добавим в диаграмму соответствующую вершину и ведущую в нее дугу. Т.к. по букве b автомат K1 переходит из q01 в q21, а автомат K2 – из q02 в q22, то автомат K из состояния (q01,q02) перейдет в состояние (q21,q22). Соответствующая вершина и дуга добавляются в диаграмму. Рассмотрим вершину (q21,q22). По букве a автомат K1 из q21 переходит в q11, а автомат K2 – из q22 в q12, следовательно; автомат K из состояния (q21,q22) перейдет в состояние (q11,q12), которое уже присутствует на диаграмме. Поэтому в диаграмму добавляется только соответствующая дуга. По букве b автомат K1 остается в состоянии q21, а автомат K2 переходит из q22 в q02, поэтому автомат K по букве b из состояния (q21,q22) переходит в состояние (q21,q02). В диаграмму добавляются вершина (q21,q02) и ведущая в нее дуга. Рассматривая далее вершины (q11,q12) и (q21,q02), мы обнаружим, что новых вершин не возникает, в диаграмму добавляются лишь дуги, ведущие в уже существующие вершины. «Хорошими» будут являться состояния (q21,q02) и (q21,q22).

Точно так же строится диаграмма конечного автомата K, распознающего язык L1L2 (рис. 2.21). Автомат K отличается от автомата K только множеством «хороших» состояний.


Сейчас приведем пример языка, не являющегося регулярным. Пусть хf, здесь х – произвольная буква рассматриваемого алфавита, обозначает слово, состоящее из буквы х, повторенной f раз, f{1, 2, 3,...}. Запись хfуh, где х и у – произвольные буквы алфавита, f{1, 2, 3,...} и h{1, 2, 3,...}, обозначает результат приписывания справа к слову хf слова уh. Через La-b обозначим бесконечный язык, каждое слово которого имеет вид anbn, т.е. в слове, принадлежащем языку, сначала n раз повторяется буква а, затем такое же число раз повторяется буква b, где n=1, 2, 3,....



Теорема 2.3. Язык La-b нерегулярен.

Доказательство проводим методом от противного. Пусть данный язык регулярен. Тогда существует распознающий La-b конечный автомат Кa-b, число состояний этого автомата обозначим w. Далее через qz условно обозначим состояние, в котором оказывается автомат Кa-b после того, как он, начиная от своего начального состояния q0, обработал z букв а подряд, z=1, 2, 3,.... Учитывая, что общее число состояний Кa-b равно w, делаем вывод, что среди состояний, обозначаемых q1, q2, ... , qw+1, имеется по меньшей мере одно с двумя обозначениями. Пусть qi и qj, здесь ij, – два обозначения некоторого состояния qk. Так как слова aibi и ajbj принадлежат языку La-b, то как слово bi, так и слово bj переводит автомат Кa-b из состояния qk, в которое он попадает в результате обработки из начального состояния слова ai или слова aj, в состояние из множества F. Но тогда процесс работы данного автомата над не принадлежащим языку La-b словом =aibj протекает следующим образом: обработав, начиная от состояния q0 начальную часть ai слова , автомат оказывается в состоянии qk; далее, обработав, начиная от состояния qk заключительную часть bj входного слова , автомат оказывается в «хорошем» состоянии. Таким образом, слово принадлежит языку, распознаваемому автоматом Кa-b. Полученное противоречие означает справедливость сформулированной теоремы.

Как отмечалось выше, требуемая информация об обработанной части входного слова «помнится» состояниями автомата. Так как число состояний конечно, то память конечного автомата является ограниченной, не достаточной для запоминания сколь угодно большого числа букв a, прошедших перед появлением на входе первой буквы b.

Через L,, где , , – фиксированные слова алфавита А={a, b, c}, обозначим язык, состоящий из слов вида  i, здесь i обозначает повторенное i раз слово , i=0, 1, 2, ... (слово 0 считаем по определению пустым). Рассмотрим в качестве примера язык Labcbca,cab (здесь =bca, =abc, =cab), данный язык регулярен, диаграмма соответствующего конечного автомата представлена на рис. 2.22. В результате обработки начальной части bca слова  i автомат из начального состояния q0 переходит в состояние q3; далее, обрабатывая подслово , автомат реализует цикл q3, q4, q5, q3 (этот цикл выполняется i раз); заключительная часть обеспечивает переход автомата из состояния q3 в «хорошее» состояние q8. Отметим, что, следуя указанному принципу при построении диаграммы конечного автомата для языка Labcbca,асb, мы встретимся с осложнением: из состояния q3 по букве а следует идти в q4, если этой буквой начинается очередное подслово , и в q6, если этой буквой начинается заключительное подслово . Путь преодоления возникающей неоднозначности указан далее, в п.3.






Примеры.
В нижеперечисленных примерах 2.1-2.19 требуется построить конечный автомат, распознающий язык L. В примерах 2.1-2.8 алфавит А={a,b,c}. В примерах 2.9-2.19 алфавит А={0,1,2,…9}
Пример 2.1. L тогда и только тогда, когда в слове встречается не более трех букв а подряд.

Пример 2.2. L тогда и только тогда, когда в слове сочетание ab встречается не более двух раз.

Пример 2.3. L тогда и только тогда, когда в слове содержится подслово bbсс.

Пример 2.4. L тогда и только тогда, когда слово имеет длину не более 8 и содержащит одинаковое число букв a и b.

Пример 2.5. L тогда и только тогда, когда слово содержит четное число букв.

Пример 2.6. L тогда и только тогда, когда слово содержит нечетное число букв а.

Пример 2.7. L тогда и только тогда, когда при наличии в слове буквы a там встречается также и буква b.

Пример 2.8. L тогда и только тогда, когда каждая буква алфавита встречается в слове не более двух раз.

Пример 2.9. L=L(4).

Пример 2.10. L=L(6).

Пример 2.11. L=L(7).

Пример 2.12. L=L(8).

Пример 2.13. L=L(10).

Пример 2.14. L=L(15).

Пример 2.15. L=L(20).

Пример 2.16. L=L(25).

Пример 2.17. L=L(30).

Пример 2.18. L=L(50).

Пример 2.19. L=L(125).
Пример 2.20.

Построить конечные автоматы, распознающие объединение, пересечение и разность языков, заданных конечными автоматами, диаграммы которых представлены на рис. 2.22.






Пример 2.21.

Построить конечные автоматы, распознающие объединение, пересечение и разность языков, заданных конечными автоматами, диаграммы которых представлены на рис. 2.23.






Пример 2.22.

Построить конечные автоматы, распознающие объединение, пересечение и разность языков, заданных конечными автоматами, диаграммы которых представлены на рис. 2.24.






Пример 2.23.

Построить конечные автоматы, распознающие объединение, пересечение и разность языков, заданных конечными автоматами, диаграммы которых представлены на рис. 2.25.






3. Недетерминированные конечные автоматы и определяемые ими языки.
Недетерминированный конечный автомат определяем как совокупность К*={Q, A, q0, g*, F}, где Q, A, q0 и F имеют тот же смысл, что в п.2, а функция переходов g* является отображением типа QxА[2Q\]. Напомним, что для любого множества М через 2М обозначается множество всех подмножеств из М; символ  обозначает пустое множество. Совокупность g*(qi,аj) – это всегда непустое подмножество состояний автомата, в любое из которых он может перейти из состояния qi под воздействием буквы аj, здесь qiQ, аjА.

В отличие от недетерминированных автоматов, конечные автоматы, введенные в предыдущем пункте, именуем детерминированными. Детерминированный конечный автомат является частным случаем недетерминированного, он получается из последнего в предположении, что все множества g*(qi,аj) являются одноэлементными.

Будучи запущен в работу над произвольным словом из своего начального состояния, недетерминированный конечный автомат может функционировать по-разному. Язык L(К*), распознаваемый недетерминированным конечным автоматом К*, определяем следующим образом: слово принадлежит языку L(К*) тогда и только тогда, когда имеется последовательность состояний автомата

т

акая, что





.
. .


при этом

Иными словами, слово принадлежит языку L(К*) тогда и только тогда, когда существует способ работы данного автомата над данным словом такой, что после завершения обработки автомат оказывается в состоянии, принадлежащем множеству F.

На рис. 3.1 дан пример недетерминированного конечного автомата К1* (причина недетерминированности заключается в том, что под воздействием буквы а автомат из состояния q0 может либо перейти в состояние q1, либо остаться в состоянии q0). Легко видеть, что язык L(К1*) совпадает с ранее введенным регулярным языком L4.




Теорема 3.1. Языки, определяемые недетерминированными конечными автоматами, являются регулярными языками.

По произвольному недетерминированному конечному автомату К*={Q, A, q0, g*, F}, распознающему язык L(К*), детерминированный автомат К={Q, A, q0, g, F} такой, что L(К)=L(К*), строим следующим образом. Полагаем Q=2Q\, т.е. состояниями автомата К считаем непустые подмножества состояний автомата К*, при этом определяем q0={q0}. Функцию переходов автомата К строим таким образом, чтобы, обработав из q0 произвольное слово , этот автомат приходил в состояние, представляющее собой подмножество состояний исходного автомата К*, в каждое из которых К* может перейти из своего начального состояния в результате обработки некоторым способом данного слова . Достижение указанной цели обеспечивается следующим определением функции g:



qug(qi,aj)  ( qvqi) такое, что {qug*(qv,аj)}.

Так как слово принадлежит L(К*) тогда и только тогда, когда существует способ работы автомата К* над данным словом такой, что после завершения обработки автомат оказывается в одном из состояний множества F, совокупность F определяем следующим образом: произвольное состояние qiF тогда и только тогда, когда qiF.

Построенный изложенным способом детерминированный конечный автомат распознает тот же язык, что и исходный автомат К*. Теорема доказана.

Далее в данном пособии недетерминированность рассматриваемых автоматов будет оговариваться дополнительно, под термином «конечный автомат» всегда понимается детерминированный конечный автомат.

Два автомата называем эквивалентными, если они распознают один и тот же язык. Согласно изложенному в доказательстве теоремы 3.1 алгоритму, для недетерминированного конечного автомата с N состояниями всегда можно построить эквивалентный ему детерминированный конечный автомат, имеющий 2N–1 состояние. В действительности число требуемых состояний может оказаться меньшим. На рис. 3.2 представлен недетерминированный автомат К*, имеющий 3 состояния. Диаграмму переходов эквивалентного ему детерминированный конечного автомата К (см. рис. 3.3) строим следующим образом. Вводим вершину - состояние {q0}. Из своего начального состояния q0 автомат К* по букве а либо переходит в q1, либо остается в q0; по букве b автомат переходит в q2. Поэтому автомат К по букве а из {q0} переходит в состояние {q0,q1}, а по букве b переходит в состояние {q2}. Из состояний совокупности {q0,q1} по букве а автомат К* переходит в состояния той же совокупности, а по букве b как из состояния q0, так и из состояния q1 реализуется переход в q2. Поэтому автомат К по букве а из {q0,q1} переходит в то же состояние {q0,q1}, а по букве b переходит в состояние {q2}. Из состояния q2 автомат К* по букве а переходит в q0, а по букве b – остается в q2. Поэтому автомат К по букве а из {q2} переходит в {q0}, а по букве b – остается в {q2}. Построение автомата К закончено. Другие мыслимые состояния-подмножества оказываются излишними, они недостижимы; начав работу из своего начального состояния, автомат может оказываться только в трех введенных состояниях (включая начальное).



Концепция недетерминированного конечного автомата легко применяется для построения автомата, распознающего объединение двух регулярных языков. Пусть L1 и L2 – регулярные языки, распознаваемые конечными автоматами К1={Q1, A, q10, g1, F1} и К2={Q2, A, q20, g2, F2} соответственно. Пусть D1 и D2 – диаграммы переходов, определяющие эти конечные автоматы. Для построения диаграммы переходов D автомата, распознающего объединение языков L1 и L2, объединяем эти диаграммы следующим образом. Вводим новую вершину - состояние q0. По каждой букве х входного алфавита А из q0 проводим две дуги с надписанной буквой х; верхняя дуга имеет своим концом вершину g1(q10,х), т.е. состояние, в которое переходит из своего начального состояния под воздействием буквы х первый автомат, а нижняя – вершину g2(q20,х), т.е. состояние, в которое переходит из своего начального состояния под воздействием буквы х второй автомат. Начальным состоянием построенного автомата считаем q0; множество F его «хороших» состояний определяем как объединение множеств F1 и F2. Специально отметим, что в случае, когда хотя бы в одном из автоматов К1, К2 начальное состояние является «хорошим», в F следует включить состояние q0. На первом такте обработки любого непустого входного слова автомат имеет возможность перехода из q0 либо по верхней, либо по нижней дуге с надписанной буквой х. Если реализован переход по верхней дуге, то далее фактически работает автомат К1 и проверяется принадлежность слова языку L1; если реализован переход по нижней дуге, далее работает автомат К2 и проверяется принадлежность слова языку L2; построенный автомат в результате обработки произвольного входного слова может оказаться в состоянии, принадлежащем подмножеству F, тогда и только тогда, когда принадлежит объединению языков L1 и L2. На рис. 3.4 представлена диаграмма переходов построенного по изложенной схеме недетерминированного конечного автомата, распознающего множество чисел, каждое из которых кратно 2 или 5.

В заключение отметим, что для любых слов , и в произвольном алфавите А определяемый ими язык L, (см. п.2) является регулярным. Диаграмма (вообще говоря, недетерминированного) конечного автомата, определяющего этот язык, строится аналогично представленной на рис. 2.13 диаграмме автомата, определяющего язык Labcbca,cab.





Достарыңызбен бөлісу:
1   2   3




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет