【发布时间】:2020-04-21 16:08:15
【问题描述】:
我一直在尝试在 PROLOG 中制作一个不确定的有限自动机,这是我的代码:
state(1).
state(2).
state(3).
initial_state(1).
final_state(3).
alphabet(a).
alphabet(b).
delta(1, b, 2).
delta(2, a, 2).
delta(2, a, 3).
delta(3, b, 2).
accept([X|[]], Q) :-
alphabet(X),
delta(Q, X, Q1),
final_state(Q1).
accept([X|XS], Q) :-
alphabet(X),
delta(Q, X, Q1),
accept(XS, Q1).
accept 是一个给定字符串和状态的函数,它会告诉我们它是否被自动机接受。 问题是,当我尝试查看字符串 baba ([b,a,b,a]) 是否被自动机 (accept([b,a,b,a],1)) 接受时,我得到了正确的结果,即不对。
【问题讨论】:
-
相关:github.com/l-flat/lflat 您可以在大多数 Prolog 系统上运行它。