Данный репозиторий представляет собой учебную практику по теории автоматов на МатМехе УрФу, ориентированную на создание программы для построения моноида переходов ДКА, а также таблицы Кэли.
Кроме того, целью ставилось создание алгоритма для генерации 25-30 случайных таблиц переходов ДКА, на основе которых будут строиться таблицы перехода ДКА по словам и таблицы Кэли в форме PDF-таблиц.
-
Склонировать этот репозиторий:
$ git clone https://github.com/tooBusyNow/monoid-auto-app.git
-
Открыть директорию monoid-auto-app и установить зависимости:
$ pip3 install -r .\requirements.txt
-
Скачать и установить на систему MiKTeX с официального сайта
Находясь в директории monoid-auto-app, прописать в терминале:
$ python .\src\run.py
После чего откроется окно выбора режима:
Как уже было сказано, программа поддерживает 2 режима работы: ручной ввод ДКА через таблицу, либо генерация 25-30 таблиц переходов ДКА, на основе которых составляются таблицы моноидов и таблицы Кэли.
Окно ручного ввода таблицы выглядит следующим образом:
Размер таблицы можно регулировать, однако в рамках проекта он должен варьироваться от 2x2 до 5x3. На практике это ограничение является полностью искусственным - таблицу можно расширять бесконечно. Так что при необходимости можно написать разработчиками и попросить внести изменения.
К слову, сделать это несложно:
Рассмотрим это для примера, взятого отсюда, c. 27. Изменяем размеры таблицы и вводим значения, после чего сразу же открывается окно с демонстрацией построенных таблиц моноида и Кэли:
Отдельно можно посмотреть и всю характеристику для построенного моноида:
Теперь перейдем к рассмотрению второго режима работы - режима генерации таблиц ДКА и соответствующих им таблиц переходов ДКА по словам и таблиц Кэли. Чтобы перейти к этому режиму - можно даже не перезапускать приложение, а просто нажать "Обратно к выбору режима", увидим вот такое окно:
Если навестись мышью на каждое поле - можно увидеть, какие значения ввода мы ожидаем от пользователя. Опять же, изменить эти ограничения при необходимости не представляет никакой сложности.
Однако вернемся к нашему примеру. Пусть мы хотим построить 30 вариантов различных таблиц переходов ДКА из 4 вершин и алфавитом из 2 символов, выставляем соответствующие значения и жмём "ОК", через какое-то время получим сообщение об успешной генерации:
После этого можно перейти в директорию gen_files и посмотреть результаты построения, вот небольшое превью: