knu/csc/appl-math/c3s2/sys-prog

синтез і аналіз мовних процесорів

Зміст:

Скінченно-автоматні мови

Ознайомившись з деякими результатами теорії скінчених автоматів, спробуємо з’ясувати, які мови (множини слів) є скінчено-автоматними.

Базові мови

Твердження: Скінчено автоматними є наступні множини:

  1. порожня словарна множина — ;

  2. словарна множина, що складається з одного -слова — ;

  3. множина , .

Доведення: в кожному випадку нам доведеться конструктивно побудувати відповідний скінчений автомат:

  1. Довільний скінчений автомат з пустою множиною заключних станів (а мінімальний — з пустою множиною станів) допускає ;

  2. Розглянемо автомат , у якому не визначено ні для яких . Тоді .

  3. Розглянемо автомат , у якому функція визначена лише для пари , а саме: . Тоді .

Операції над мовами

Твердження: Якщо та , що визначають відповідно мови та , то скінченно-автоматними мовами будуть:

  1. ;

  2. ;

  3. .

Доведення: в кожному випадку нам доведеться конструктивно побудувати відповідний скінчений автомат:

  1. Побудуємо автомат такий, що :

    • , де — новий стан ;

    • Функцію визначимо таким чином:

    • Множина заключних станів:

    Побудований таким чином автомат взагалі кажучи недетермінований.

    Індукцією по показуємо, що тоді і тільки тоді, коли або .

  2. Побудуємо автомат такий, що :

    • ;

    • ;

    • Функцію визначимо таким чином:

    • Множина заключних станів:

  3. Побудуємо автомат такий, що :

    • , де — новий стан ;

    • Функцію визначимо таким чином:

    • Множина заключних станів .

Скінченні автомати та праволінійні граматики

Породжуюча граматика — це четвірка

де:

Класифікація граматик Хомського

В залежності від структури правил граматики діляться на чотири типи:

В класі скінченно-автоматних граматик виділимо так звані праволінійні граматики — це граматики, які в схемі Р мають правила вигляду:

де , .

Нескладно довести, що клас праволінійних граматик співпадає з класом граматик типу 3.

Мова породжена граматикою

Ланцюжок безпосередньо виводиться з ланцюжка (позначається ), якщо , та в схемі граматики є правило виду . Оскільки поняття “безпосередньо виводиться” розглядається на парах ланцюжків, то в подальшому символ буде трактуватися як бінарне відношення.

Ланцюжок виводиться з ланцюжка (позначається ), якщо існує скінчена послідовність виду . Або кажуть, що бінарне відношення — це рефлексивно-транзитивне замикання бінарного відношення .

Мова, яку породжує граматика (позначається ) — це множина термінальних ланцюжків:

Праволінійна граматика скінченний автомат

Теорема. Клас мов, що породжуються праволінійними граматиками, співпадає з класом мов, які розпізнаються скінченими автоматами.

Доведення. Спочатку покажемо, що для довільної праволінійної граматики можна побудувати скінчений автомат , такий що .

Розглянемо правила праволінійної граматики. Вони бувають двох типів: , і .

На основі правил граматики побудуємо схему нової граматики, яка буде еквівалентною початковій, а саме:

де — це нові нетермінали граматики .

Очевидно, що граматика буде еквівалентна граматиці .

Далі, на основі граматики побудуємо скінчений автомат , таким чином:

Індукцією по довжині вхідного слова покажемо, що якщо , то :

Доведення навпаки є очевидним.

Контрольні запитання

  1. Які три базові скінченно-автоматні мови ви знаєте?

  2. Доведіть, що мови з попереднього питання справді є скінченно-автоматними.

  3. Які три операції над скінченно-автоматними мовами ви знаєте?

  4. Доведіть, що результати операцій з попереднього питання справді є скінченно-автоматними.

  5. Що таке породжуюча граматика?

  6. Які чотири типи граматик за Хомським ви знаєте?

  7. Що таке праволінійна граматика?

  8. Дайте визначення безпосереднього виведення, виведення, породженої граматикою мови.

  9. Доведіть, що скінченний автомат це майже праволінійна граматика.

(традиційні відповіді можна переглянути у коментарях у вихідному коді цієї сторінки)

Назад до лекцій

Назад на головну