Скінченні автомати та алгоритми з ними
Скінчений автомат без виходів: , де
-
— вхідний алфавіт;
-
— множина станів;
-
— початковий стан;
-
— множина фінальних (заключних) станів;
-
— функція переходів (автомат, знаходячись у певному стані та читаючи черговий символ зі вхідного слова переходить в інший стан згідно цієї функції доти, поки не закінчилось слово та поки існують відповідні переходи).
Функція переходів є не всюди визначеною та може бути багатозначною (у випадку недетермінованого автомату).
Слово — слово нульової довжини. Таким чином, для будь-якого символу або слова справедливо: . Якщо автомат допускає -переходи, то використовується функція переходів вигляду замість звичайної для задання такого автомату.
Автомат сприймає (допускає, розпізнає) слово , якщо, читаючи по одному символу з цього слова (за кожен такт роботи — зліва направо) і виконуючи переходи відповідно до функції переходів , починаючи з стану , він потрапляє через $$ | w | \mathcal{f} \in F$$. |
Останні кілька позначень:
-
— довжина слова ;
-
— потужність множини .
Автомат на вході програми (та на виході, де потрібно) подається у вигляді текстового файлу наступної структури:
-
;
-
;
-
;
-
, — перелічені через проміжок кількість та всі стани з множини ;
-
— всі такі трійки, що , через проміжок, по одній на рядок — до кінця файлу.
Розробити та реалізувати представлення скінченного автомата в пам’яті ЕОМ.
Варіанти
-
Встановити, які літери вхідного алфавіту не сприймає скінченний детермінований автомат.
-
Виявити недосяжні та тупикові стани скінченного автомату.
-
Розробіть алгоритм та реалізуйте програму, що моделює роботу недетермінованого скінченного автомата.
-
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати .
-
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати .
-
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де та — наперед задані (фіксовані) слова, а — деяке слово, таке що допускається скінченним автоматом. На вхід алгоритму подавати та .
-
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду , де — наперед задане (фіксоване) слово, а та — деякі слова, такі що допускається скінченним автоматом. На вхід алгоритму подавати .
-
Знайти всі слова (без періодичних фрагментів), що сприймаються заданим скінченним автоматом.
-
Виявити, чи допускає скінченний автомат всі можливі (виходячи з алфівіту) слова заданої довжини .
-
Реалізувати алгоритм пошуку слова мінімальної довжини, що допускається двома скінченними автоматами.
-
Реалізувати алгоритм мінімізації детермінованого скінченного автомата.
-
Реалізувати алгоритм перетворення недетермінованого скінченного автомата (без -переходів) в еквівалентний йому детермінований скінченний автомат.
-
Виявити, чи є еквівалентними два задані детерміновані скінченні автомати.
-
Виявити, чи допускає скінченний автомат слова довільної довжини.
-
Виявити, чи допускає скінченний автомат слова довільної непарної довжини.
-
Виявити, чи допускає скінченний автомат слова довільної, але виключно парної довжини.
-
Виявити, чи є еквівалентними два задані недетерміновані скінченні автомати.
-
Побудувати регулярний вираз, що задає мову, яка розпізнається скінченним автоматом (мову слів, що ним сприймаються).
-
Виявити, чи є еквівалентними два задані детерміновані скінченні автомати, що допускають -переходи.