OnionGrief / Chipollino

преобразования регулярных выражений и конечных автоматов
Other
19 stars 4 forks source link

Monoid refactor #214

Closed xtoter closed 1 year ago

xtoter commented 1 year ago

Тут буду потихоньку собирать запоздалые фиксы моноида

xtoter commented 1 year ago

UPD.

xtoter commented 1 year ago

Пока не нашел примера который бы терял классы эквивалентности, старые примеры начали проходить. Также из-за другого способа поиска эквивалентных состояний в новом алгоритме вроде адекватно работает для НКА (и без eps переходов), по крайней мере мне пока не удалось сломать. Пример приведенный в (#199) у меня строится моментально.

TonitaN commented 1 year ago

Проверьте, пожалуйста, на подопытной регулярке и автомате:

R = ab(bc|ca|)(ab|bc|ca|a)*bab(bc|ca|ab|cb|ac)*
A1 = Reverse.MergeBisim.Reverse.MergeBisim.IlieYu R !!
A2 = Minimize.Determinize.Glushkov R !!

До рефакторинга трансмоноид считался для минимального ДКА ночь, и результата дождаться не удалось всё равно. Сколько сейчас получается по времени?

mathhyyn commented 1 year ago

сегодня мы этого не узнаем

R = {ab(bc|ca|)(ab|bc|ca|a)*bab(bc|ca|ab|cb|ac)*}
A1 = Reverse.MergeBisim.Reverse.MergeBisim.IlieYu R !!
A2 = Minimize.Determinize.Glushkov R !!
A3 = MyhillNerode A2 !!

image

xtoter commented 1 year ago

До рефакторинга трансмоноид считался для минимального ДКА ночь, и результата дождаться не удалось всё равно. Сколько сейчас получается по времени?

A1 = Reverse.MergeBisim.Reverse.MergeBisim.IlieYu R !! - для этого считается необозримо долго (на час запустил, перебирает слова длины 17 и конца не видно ¯_(ツ)_/¯) судя по картинке там много чего image

A2 = Minimize.Determinize.Glushkov R !! тут уже лучше, я на самом деле не знаю каков должен быть адекватный результат, но вроде время нормальное (фотопруф) image UPD. вроде исправил багу с вылетом на винде

TonitaN commented 1 year ago

Ну там в минимальном ДКА больше 20 состояний, а в этом НКА всего 9. Интересно, почему на НКА настолько дольше работает?

xtoter commented 1 year ago

12 часов для A1 = Reverse.MergeBisim.Reverse.MergeBisim.IlieYu R !! не дали результата, видимо таки прийдется вводить eps для НКА

xtoter commented 1 year ago

Надеюсь осознал почему так долго строятся некоторые НКА, полюбуйтесь на таблицу переходов( image

xtoter commented 1 year ago

Сливать пока не буду (жду логов), но был бы признателен если кто-нибудь потестировал бы, вроде должен был все баги исправить UPD. Логи отдельно пилят, сказали вливать 🙃

xendalm commented 1 year ago

В следующий раз обязательно отмечу, что можно не делить на 11 коммитов

xtoter commented 1 year ago

Зато каждый коммит привязан к изменению🙃

TonitaN commented 1 year ago

Скорость существенно улучшилась - пока что не удалось найти короткий пример, который бы завешивал моноид. Корректность КЭ будем окончательно проверять, когда в логах будут таблицы - так удобнее.