Курсови проекти

Детерминиран краен автомат

Детерминиран краен автомат

by Гергана Тончева -
Number of replies: 2

Здравейте,
Към момента имам написан код, който решава проблема с ДКА, но не е по поставените изисквания (нещата се случват малко по-примитивно). Имам няколко въпроса относно предстоящата ми оптимизация:

  • Какво точно наричаме език на автомата? (набор от всички състояния или набор от всички настъпващи събития, или нещо друго...)
  • Преобразуване на регулярен израз към автомат, как точно се случват нещата тук? (при възможност, бих желала малко примерчета)
  • Сечение/обединение/конкатенация и т.н., какво представляват за автомата? (достатъчно е обяснение за едно, от там нататък мисля, че нещата се подразбират)

Благодаря!

Поздрави,
Гергана Тончева

In reply to Гергана Тончева

Re: Детерминиран краен автомат

by Стефан Ангелов -
Здравейте.

Не съм от екипа по СД, но бих могъл да хвърля малко светлина относно математиката зад автоматите.
1. По дефиниция под език на автомата (или автоматен език) разбираме всички думи, които след обработка през автомата водят до достигане на крайно състояние.
2. Преобразуването на регулярен израз към автомат е нелека задача със сигурност. Бих препоръчал да прочетеш някои книги по темата, защото отговорът не е еднозначен, но почти винаги се крие зад доказателството на теоремата на Клини (всеки регулярен език е автоматен). Препоръчвам книгите Introduction to Automata Theory, Languages and Computation и Introduction to the Theory of Computation по темата. Там има и много примери.
3. За да може да се обясни това, трябва да се знае дефиницията на ДКА. ДКА наричаме петорка от множества и функции - имаме множество на състоянията, азбука, множество на финалните състояния, начално състояние и функция на прехода. Оттук следва, че за да обединим например два автомата, трябва да обединим и множествата, от които се съставя. Най-лесно това се прави чрез епсилон-преход (тоест нулев) от начално състояние на обединения автомат към началните състояния на двата автомата. По същия начин може да мислиш и за останалите операции.

Надявам се да съм бил от помощ поне малко.

Поздрави,
Стефан Ангелов
In reply to Гергана Тончева

Re: Детерминиран краен автомат

by Калин Николов -
Здравейте,

Добре е да се запознаете с формалните дефиниции, тъй като те са важни при работата с автомати. Можете да видите книгата на Радослав Павлов. Също така, във ФМИ е популярна книгата "Увод в дискретната математика" на К. Манев, можете да потърсите и нея. Материали online също има в изобилие, само внимавайте да са от качествен източник.
 
Поздрави