1

是否有可能通过合理的努力可视化 PROLOG 如何找到查询的结果?这将有助于了解它是通过哪些路径找到的,例如一些重复条目(例如,在家族树查询中找到一个亲戚两次)。

4

2 回答 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 回答