gpt4 book ai didi

prolog - Prolog DCG限制

转载 作者:行者123 更新时间:2023-12-04 14:47:15 26 4
gpt4 key购买 nike

我想将DCG用作发电机。截至目前,语法为

s-->a,b.
a-->[].
a-->a,c.
c-->[t1].
c-->[t2].
b-->[t3].
b-->[t4].

我想生成所有 s,其中 a的长度是 < someNumber

使用 ?- phrase(a,X),length(X,Y),Y<4.,我可以获得少于4个项目的所有 a。但是,当所有组合用尽时,系统(SWI-Prolog 6.2.5)似乎停滞了。
有时以前,类似的问题是 asked here。但是,对于Prolog来说,我是新手,无法使其与上面的语法一起使用。有任何想法吗?

更新:(canrememberthename)有条评论被删除,不知何故。无论如何,建议使用 between(1,4,Y),length(X,Y),phrase(a,X).设置限制。将我的代码更改为 a-->c,a.后,此方法运行良好

最佳答案

非末端a//0既是递归的又是'epsilon'(生成空序列),并且词组/2将在空产生后立即循环。

您可以解决问题边界列表的长度:

?- between(1,4,Y),length(X,Y),phrase(a,X).

并且,如您已经做的那样,删除左递归。

关于prolog - Prolog DCG限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com