我正在编写一个程序,我需要查看字符串是否与特定模式匹配。现在我已经在Prolog中实现了这个规则matchPattern(S),超过20种不同的定义。
我最终通过模式检查谓词运行所有二进制字符串达到一定长度。该程序相当慢(正如Prolog经常那样),并且因为有很多不同的定义,所以我最好订购它们,以便最匹配的那些是最早的顺序,因此首先由Prolog匹配,避免回溯为尽我所能。
我现在正在使用SWI Prolog,但我可以访问SICStus,所以我愿意使用它或者我可以免费获得的任何Prolog解释器。
答案 0 :(得分:2)
SWI-Prolog有profile/3和show_profile/2可以帮助您完成任务。
如果模式之间存在共同部分,则将模式规则分解并应用剪切可以改善运行时。这种分析应与统计数据结合起来。
答案 1 :(得分:-2)
你应该考虑使用DCG和削减。
答案 2 :(得分:-3)
你应该研究削减。这个的prolog语法是:
!