Написана программа на языке Пролог, моделирующая работу конечного автомата с магазинной памятью в пакете SWIpl
конечный автомат, программа, Пролог
Написана программа на языке Пролог, моделирующая работу конечного автомата с магазинной памятью в пакете SWIpl. Программа состоит из двух частей. В первой части описано строение конкретно конечного автомата, во второй части описана работа этого автомата. В этой программе конечный автомат допускает слова по пустому магазину [1]. Программа протестирована на трех различных автоматах. Для каждого автомата было задано десять запросов, на половину запросов программа должна была дать ответ «да», а на вторую половину – «нет». На все запросы были получены правильные ответы. В постановку задачи можно внести изменения, например, потребовать, чтобы автомат допускал слова по заключительным состояниям [1], или убрать слова «с магазинной памятью», или делать какие-либо более сложные запросы.
В курсе «Проектирование и разработка интеллектуальных систем» подобные задачи предлагались магистрам в качестве курсовых работ.
В качестве примера приведена пара запросов к программе и ее ответы:
?- dop(q0,[1,0,0,1,1,1],[z0],50).
true.
?-dop(q0,[1,0,0,1,1,1,1,1],[z0],50).
false.
?-dop(q0,[1,0,0,1,1,1,1,1],[z0],500).
false.
Ниже приведено несколько строк из первой части программы:
per(q1,0,0,q0,[0,0]).
eper(q2,z0,q4,[]).
Eper – это команда для моделирование e-перехода автомата [1], per – это команда для моделирование перехода автомата.
1. Д. Хопкрофт, Р. Мотвани, Дж. Ульман. Введение в теорию автоматов, языков и вычислений, Москва, 2002.