Prolog跟踪输出到搜索树

时间:2018-12-06 20:31:37

标签: debugging prolog binary-search-tree trace

我正在尝试将跟踪输出从prolog转换为搜索树,但是我不确定它是否正确。 感谢您提供有关如何根据跟踪信息制作搜索树的任何帮助。

Database/Input:

rara([X|L],A,M):- 
    rara(L,[Y|A],M).

rara([M|L],L,[M]).

rara(L,M):- 
    rara(L,[],M). 

Query:

rara([a,b,c,d],X).

Trace output:
Call: (8) rara([a, b, c, d], _G922) ? creep
Call: (9) rara([a, b, c, d], [], _G922) ? creep
Call: (10) rara([b, c, d], [_G1043], _G922) ? creep
Call: (11) rara([c, d], [_G1046, _G1043], _G922) ? creep
Call: (12) rara([d], [_G1049, _G1046, _G1043], _G922) ? creep
Call: (13) rara([], [_G1052, _G1049, _G1046, _G1043], _G922) ? creep
Fail: (13) rara([], [_G1052, _G1049, _G1046, _G1043], _G922) ? creep
Redo: (12) rara([d], [_G1049, _G1046, _G1043], _G922) ? creep
Fail: (12) rara([d], [_G1049, _G1046, _G1043], _G922) ? creep
Redo: (11) rara([c, d], [_G1046, _G1043], _G922) ? creep
Fail: (11) rara([c, d], [_G1046, _G1043], _G922) ? creep
Redo: (10) rara([b, c, d], [_G1043], _G922) ? creep
Fail: (10) rara([b, c, d], [_G1043], _G922) ? creep
Redo: (9) rara([a, b, c, d], [], _G922) ? creep
Fail: (9) rara([a, b, c, d], [], _G922) ? creep
Fail: (8) rara([a, b, c, d], _G922) ? creep

当前搜索树:

                     rara([a,b,c,d],X).

                |                                 |
   rara([a, b, c, d], _G922)          rara([b, c, d], [_G1043], _G922)
   X = _G922                                   |        
                                rara([c, d], [_G1046, _G1043], _G922)  
                                           |
                      rara([d], [_G1049, _G1046, _G1043], _G922)
                                        |
               rara([], [_G1052, _G1049, _G1046, _G1043], _G922)

0 个答案:

没有答案