{% include mathjax %}
Скінчений автомат без виходів:
-
$$A = {a, b, c, \ldots}$$ — вхідний алфавіт; -
$$S = {0, 1, 2, \ldots}$$ — множина станів; -
$$s_0 \in S$$ — початковий стан; -
$$F \subseteq S$$ — множина фінальних (заключних) станів; -
$$f: S \times A \to S$$ — функція переходів (автомат, знаходячись у певному стані та читаючи черговий символ зі вхідного слова переходить в інший стан згідно цієї функції доти, поки не закінчилось слово та поки існують відповідні переходи).
Функція переходів є не всюди визначеною та може бути багатозначною (у випадку недетермінованого автомату).
Слово
Автомат
Останні кілька позначень:
-
$$\mid w\mid$$ — довжина слова$$w$$ ; -
$$|M|$$ — потужність множини$$M$$ .
Автомат
-
$$|A|$$ ; -
$$|S|$$ ; -
$$s_0$$ ; -
$$|F|$$ ,$$f_1 \in F, \ldots, f_{|F|} \in F$$ — перелічені через проміжок кількість та всі стани з множини$$F$$ ; -
$$s, a, s'$$ — всі такі трійки, що$$(s, a, s') \in f$$ , через проміжок, по одній на рядок — до кінця файлу.
Розробити та реалізувати представлення скінченного автомата в пам'яті ЕОМ.
-
Встановити, які літери вхідного алфавіту не сприймає скінченний детермінований автомат.
-
Виявити недосяжні та тупикові стани скінченного автомату.
-
Розробіть алгоритм та реалізуйте програму, що моделює роботу недетермінованого скінченного автомата.
-
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду
$$w = w_0 w_1$$ , де$$w_0$$ — наперед задане (фіксоване) слово, а$$w_1$$ — деяке слово, таке що$$w$$ допускається скінченним автоматом. На вхід алгоритму подавати$$w_0$$ . -
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду
$$w = w_1 w_0$$ , де$$w_0$$ — наперед задане (фіксоване) слово, а$$w_1$$ — деяке слово, таке що$$w$$ допускається скінченним автоматом. На вхід алгоритму подавати$$w_0$$ . -
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду
$$w = w_1 w_0 w_2$$ , де$$w_1$$ та$$w_2$$ — наперед задані (фіксовані) слова, а$$w_0$$ — деяке слово, таке що$$w$$ допускається скінченним автоматом. На вхід алгоритму подавати$$w_1$$ та$$w_2$$ . -
Розробити та реалізувати алгоритм перевірки: чи допускає скінченний автомат слова виду
$$w = w_1 w_0 w_2$$ , де$$w_0$$ — наперед задане (фіксоване) слово, а$$w_1$$ та$$w_2$$ — деякі слова, такі що$$w$$ допускається скінченним автоматом. На вхід алгоритму подавати$$w_0$$ . -
$$^\star$$ Знайти всі слова (без періодичних фрагментів), що сприймаються заданим скінченним автоматом. -
$$^\star$$ Виявити, чи допускає скінченний автомат всі можливі (виходячи з алфівіту) слова заданої довжини$$k$$ . -
$$^{\star\star}$$ Реалізувати алгоритм пошуку слова мінімальної довжини, що допускається двома скінченними автоматами. -
$$^{\star\star}$$ Реалізувати алгоритм мінімізації детермінованого скінченного автомата. -
$$^{\star\star}$$ Реалізувати алгоритм перетворення недетермінованого скінченного автомата (без$$\varepsilon$$ -переходів) в еквівалентний йому детермінований скінченний автомат. -
$$^{\star\star}$$ Виявити, чи є еквівалентними два задані детерміновані скінченні автомати. -
$$^{\star\star\star}$$ Виявити, чи допускає скінченний автомат слова довільної довжини. -
$$^{\star\star\star}$$ Виявити, чи допускає скінченний автомат слова довільної непарної довжини. -
$$^{\star\star\star}$$ Виявити, чи допускає скінченний автомат слова довільної, але виключно парної довжини. -
$$^{\star\star\star\star}$$ Виявити, чи є еквівалентними два задані недетерміновані скінченні автомати. -
$$^{\star\star\star\star}$$ Побудувати регулярний вираз, що задає мову, яка розпізнається скінченним автоматом (мову слів, що ним сприймаються). -
$$^{\star\star\star\star}$$ Виявити, чи є еквівалентними два задані детерміновані скінченні автомати, що допускають$$\varepsilon$$ -переходи.