问题描述
我在 prolog 中有以下代码,我希望能够测试一个变量的出现:
mon_afn(
afn(
[
sommet(etat(0),[arc(b,etat(0)),arc(a,etat(1))]),sommet(etat(1),etat(2))])
],%liste d'adjacence
etat(0),%etat initial
[etat(2)] %etats acceptant
)).
accepte(AFN,MOT):-forall(AFN,accepte_(AFN,MOT)).
accepte_(AFN,MOT) :-
afn(LISTEADJ,INITIAL,ACCEPTANTS) = AFN,accepte_(MOT,LISTEADJ,ACCEPTANTS,INITIAL).
accepte_([],_,ACC) :-
member(ACC,ACCEPTANTS).
accepte_([LETTRE|MOT],ACC) :-
member(sommet(ACC,L),LISTEADJ),member(arc(LETTRE,D),D).
accepte_2 允许确定一个字符串是否被 NFA 接受,我的 accepte_ / 2 和 accepte_ / 4 谓词按我的意愿工作,但我想要一个 accepte/2 谓词 它将执行以下操作:
? mon_afd(X),accepte(X,['a','b']).
true.
我不想要的:
? mon_afd(X),'b']).
AFN = afn([sommet(etat(0),etat(2))])],etat(0),[etat(2)]);
false.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)