Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсова2.doc
Скачиваний:
8
Добавлен:
11.07.2019
Размер:
214.02 Кб
Скачать

Приклад перетворення регулярної граматики до автоматному увазі

Розглянемо як приклад наступну просту регулярну Граммати ¬ ку: G ({"a ","(". "*".")"."{"."}"}. {SCK}, P, S) (символи а , (.*,).{,} З множест ¬ ва термінальних символів граматики взяті в лапки, щоб виділити їх серед фігурних дужок, що позначають саме безліч):

Р:

S -> З *) | До}

С (* | Са | З {| З} | З (| З * | С) К - »{| Ка | К (| К * | К) | К {

Якщо припустити, що а тут - це будь-який алфавітно-цифровий символ, кро ¬ ме символів (, *,), {. }, То ця граматика описує два типи коментарів, допустимих в мові програмування Borland Pascal. Перетворимо її в авто ¬ ароматних вигляд.

Крок 1. Побудуємо безліч VN '= {S, С, К}.

Крок 2.Починаємо переглядати безліч правил Р граматики G. Для правила S -> ■ З *) в безліч VN 'включаємо символ S1, а саме правило раз ¬ бив на два: S -> ■ S1) і S1 -> ■ З *; включаємо ці правила в безліч правил Р'. Правило S -> ■ К} переносимо в безліч правил Р 'без змін.Для правила С -> ■ (* в безліч VN 'включаємо символ С1, а саме правило разби ¬ ваем на два: С -> ■ С1 * і С1 (; включаємо ці два правила у безліч правил Р'. Правила С -> Са | З {| З} | З (| З * | С) переносимо в безліч правил Р 'без ви ¬ змін.

Правила К-> {| Ка | К (| К * | К) | К {переносимо в безліч правил Р 'без ви ¬ змін.

ШагЗ. Правил виду А-* В або А-»Х в безлічі правил Р 'не міститься. Крок 4. Переходимо до кроку 5.

Крок 5. Цільовим символом граматики G 'стає символ S. У підсумку отримуємо автоматну граматику:

G '({"а ","("."*".")"."{" • "}"} ■ {S.S1.C.C1.K}. Р '. S): Р':

S -> S1) | К} S1 -> С *

С - »С1 * | Са | З {| З} | З (| З * | С) С1 -> (

к - »{| Ка | К (| к * | К) | до {

Ця граматика, так само як і розглянута вище, описує два типи комм ¬ таріев, допустимих в мові програмування Borland Pascal.

Кінцеві автомати Визначення кінцевого автомата

Кінцевим автоматом (КА) називають п'ятірку такого вигляду:

M (QV, 5, q0, F),

де

Q - множина станів автомата;

V - кінцева множина допустимих вхідних символів (алфавіт автомата);5 - функція переходів, що відображає V * Q (декартовій твір множин) в безліч підмножин QR (QJ, тобто 5 (a, q) = R, aeV, qeQ RcQ q0 - початковий стан автомата Q q0eQ

F - непорожня множина кінцевих станів автомата, FcQ F * 0.КА називають повністю визначеним, якщо в кожному його стані існує функція переходу для всіх можливих вхідних символів, тобто: Vae V, VqeQ 35 (a, q) = R, RcQ.

Робота кінцевого автомата є послідовність кроків (або тактів).На кожному кроці роботи автомат знаходиться в одному зі своїх станів Q, (в поточному стані), на наступному кроці він може перейти в інше перебуваючи ¬ ня або залишитися в поточному стані. Те, в який стан автомат перейде на наступному кроці роботи, визначає функція переходів 5.Вона залежить не тільки від поточного стану, а й від символу з алфавіту V, поданого на вхід автомата. Коли функція переходу допускає кілька наступних станів автомата, то КА може перейти в будь-яке з цих станів. На початку роботи ав ¬ томат завжди знаходиться в початковому стані q0.Робота КА продовжується до тих пір, поки на його вхід надходять символи з вхідного ланцюжка coeV +. Видно, що конфігурацію КА на кожному кроці роботи можна визначити як (q, co, n), де q - поточний стан автомата, qeQ; со - ланцюжок вхідних симво ¬ лов, coeV +;п - положення покажчика в ланцюжку символів, neNu {0}, n <| зі | (N - безліч натуральних чисел). Конфігурація автомата на наступному кроці - це (q ', co, n + l), якщо q'e5 (a, q) і символ aeV знаходиться в позиції n + 1 ланцюжка зі. Початкова конфігурація автомата: (q0, co, 0);заключна конфігурація ав ¬ томата: (f, з, n), feQ п = | зі |, вона є кінцевою конфігурацією, якщо feF.

Мова, заданий кінцевим автоматом

КА M (QV, 5, q0, F) приймає ланцюжок символів coeV +, якщо, отримавши на вхід цей ланцюжок, він з початкового стану q0 може перейти в один з кінцевих со ¬ стоянь feF. В іншому випадку К А не приймає ланцюжок символів.

Мова ЦМ), заданий КА MCQjVAqo.F), - це множина всіх ланцюжків симво ¬ лов, які приймаються цим автоматом. Два КА еквівалентні, якщо вони за ¬ дають один і той же мова.

Всі КА є розпізнавачем для регулярних мов [4, т. 1, 15, 28].