4

我正在编写一个程序,我需要查看字符串是否与特定模式匹配。现在我已经在 Prolog 中实现了这个作为规则 matchPattern(S),有超过 20 种不同的定义。

我最终通过模式检查谓词将所有二进制字符串运行到​​一定长度。该程序相当慢(正如Prolog通常那样),并且由于有很多不同的定义,我理想地希望对它们进行排序,以便最匹配的那些在排序中最早,因此由Prolog首先匹配,避免回溯尽我所能。

我现在正在使用 SWI Prolog,但我可以访问 SICStus,所以我愿意使用它或我可以免费获得的任何 Prolog 解释器。

4

3 回答 3

1

SWI-Prolog 有profile/3show_profile/2可以帮助你完成任务。

如果模式之间存在公共部分,则左考虑您的模式规则并应用削减可以改善运行时间。此类分析应与统计数据相结合。

于 2012-06-14T07:02:40.467 回答
-2

你应该考虑使用 DCG 和削减。

于 2012-06-13T20:23:31.030 回答
-3

你应该看看削减。序言语法是:

!
于 2012-06-13T22:03:47.863 回答