【问题标题】:How to draw a search tree in prolog?如何在prolog中绘制搜索树?
【发布时间】:2014-08-13 01:44:45
【问题描述】:

我需要知道如何为特定查询绘制搜索树以及如何在 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).

【问题讨论】:

  • 这是家庭作业吗?
  • 是的,但我需要清楚地理解它

标签: prolog trace search-tree


【解决方案1】:

我将告诉你我们是如何学会为查询绘制搜索树的

?- 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]

所有步骤都是在执行事实和规则时发生的。如果您无法理解您的程序是如何工作的,我建议您在执行时使用跟踪模式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2021-12-24
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多