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

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

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

Скінчений автомат без виходів: , де

Функція переходів є не всюди визначеною та може бути багатозначною (у випадку недетермінованого автомату).

Слово — слово нульової довжини. Таким чином, для будь-якого символу або слова справедливо: . Якщо автомат допускає -переходи, то використовується функція переходів вигляду замість звичайної для задання такого автомату.

Автомат сприймає (допускає, розпізнає) слово , якщо, читаючи по одному символу з цього слова (за кожен такт роботи — зліва направо) і виконуючи переходи відповідно до функції переходів , починаючи з стану , він потрапляє через $$ w \mathcal{f} \in F$$.

Останні кілька позначень:

Автомат на вході програми (та на виході, де потрібно) подається у вигляді текстового файлу наступної структури:

  1. ;

  2. ;

  3. ;

  4. , — перелічені через проміжок кількість та всі стани з множини ;

  5. — всі такі трійки, що , через проміжок, по одній на рядок — до кінця файлу.

Розробити та реалізувати представлення скінченного автомата в пам’яті ЕОМ.

Варіанти

  1. Встановити, які літери вхідного алфавіту не сприймає скінченний детермінований автомат.

  2. Виявити недосяжні та тупикові стани скінченного автомату.

  3. Розробіть алгоритм та реалізуйте програму, що моделює роботу недетермінованого скінченного автомата.

  4. Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати .

  5. Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати .

  6. Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де та — наперед задані (фіксовані) слова, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати та .

  7. Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а та — деякі слова, такі що допускається скінченним автоматом. На вхід алгоритму подавати .

  8. Знайти всі слова (без періодичних фрагментів), що сприймаються заданим скінченним автоматом.

  9. Виявити, чи допускає скінченний автомат всі можливі (виходячи з алфівіту) слова заданої довжини .

  10. Реалізувати алгоритм пошуку слова мінімальної довжини, що допускається двома скінченними автоматами.

  11. Реалізувати алгоритм мінімізації детермінованого скінченного автомата.

  12. Реалізувати алгоритм перетворення недетермінованого скінченного автомата (без -переходів) в еквівалентний йому детермінований скінченний автомат.

  13. Виявити, чи є еквівалентними два задані детерміновані скінченні автомати.

  14. Виявити, чи допускає скінченний автомат слова довільної довжини.

  15. Виявити, чи допускає скінченний автомат слова довільної непарної довжини.

  16. Виявити, чи допускає скінченний автомат слова довільної, але виключно парної довжини.

  17. Виявити, чи є еквівалентними два задані недетерміновані скінченні автомати.

  18. Побудувати регулярний вираз, що задає мову, яка розпізнається скінченним автоматом (мову слів, що ним сприймаються).

  19. Виявити, чи є еквівалентними два задані детерміновані скінченні автомати, що допускають -переходи.

Назад до усіх лаб

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