我需要知道如何为特定查询绘制搜索树,以及如何在prolog中跟踪代码,这是一个示例:
mystery([], []).
mystery([b,a|XS], [z,z|YS]) :- mystery(XS, YS).
mystery([X|XS], [X|YS]) :- mystery(XS, YS).
a)为以下查询绘制搜索树:
?- mystery([b,a,b,a,b], Z).
答案 0 :(得分:0)
我要告诉你我们是如何学会为查询绘制搜索树的
?- mystery([b,a,b], Z).
与您的相似,这样您就可以了解搜索树的绘制方式,并能够为您的练习制作一个。
?- mystery([b,a,b],Z)
(1st solution) / \ (2nd solution)
/ \
Z = Z' Z = Z'
L'= [b] L' = [a,b]
mystery(L',Z') mystery(L',Z')
| |
| |
Z'= Z" L" = [b]
L" = [] Z' = Z"
mystery(L",Z") mystery(L",Z")
| |
| |
Z" = [] L''' = []
Z' = [b] Z" = Z'''
Z = [z,z,b] mystery(L''',Z''')
|
|
Z''' = []
Z" = [b]
Z' = [a,b]
Z = [b,a,b]
执行事实和规则时会发生所有步骤。如果您无法理解您的程序是如何工作的,我建议您在执行时使用跟踪模式。