是否有可能通过合理的努力可视化 PROLOG 如何找到查询的结果?这将有助于了解它是通过哪些路径找到的,例如一些重复条目(例如,在家族树查询中找到一个亲戚两次)。
问问题
436 次
2 回答
0
据我所知,拥有增强型纯 Prolog 解释器的标准方法是增强标准纯 Prolog 解释器:
solve( T ) :-
( T = (A , B) -> solve(A) , solve(B)
; T = (A ; B) -> (solve(A) ; solve(B))
; T ).
我们可以copy_term/2
在每个步骤上使用,并将复制的术语收集到差异列表中:
solve( T, [Q|R], Z ) :- copy_term(T,Q),
( T = (A , B) -> solve(A,R,S) , solve(B,S,Z)
; T = (A ; B) -> (solve(A,R,Z) ; solve(B,R,Z))
; T, R = Z ).
被称为solve( AQuery, PathTaken, [])
。
未测试。
于 2013-08-25T15:33:16.050 回答
0
我只能找到prolog-graph来执行类似的任务,但还没有尝试过。作者声称它“为给定的 Prolog 查询生成解析树的图像”。
于 2014-12-25T07:20:19.030 回答