debugging - Prolog 跟踪输出到搜索树
问题描述
我正在尝试将跟踪输出从 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)
解决方案
推荐阅读
- swiftui - 没有披露指示器的 SwiftUI NavigationButton?
- javascript - 更新 Vuex 商店中二维数组中的项目
- c - 如何在risc-v中实现printf函数?
- docker - Stilliard/pure-ftpd:允许其他 docker 容器的 ftp?
- c++ - 这两个中哪一个是实现标头的正确方法?
- c - 父进程在挂起时仍然收到信号
- python - 为什么我的 Python 正则表达式不匹配查询字符串的一部分?
- amazon-web-services - %matplotlib 内联魔术命令无法从 AWS-EMR Jupyterhub Notebook 中的先前单元格读取变量
- javascript - 如何将程序从从 onload 开始更改为从 Space press 开始?
- android - 为什么应用程序的所有本地化都不起作用?