如何在Prolog中绘制快速排序跟踪的运行图



我在prolog中有一个快速排序的代码:

gt(X,Y):- X @> Y.
conc([], List, List).
conc([Head|Tail], List1, [Head|List2]):- conc(Tail, List1, List2).
quicksort([], []).
quicksort([X|Tail], Sorted):-
    split(X,Tail,Small,Big),
    quicksort(Small,SortedSmall),
    quicksort(Big, SortedBig),
    conc(SortedSmall, [X|SortedBig], Sorted).
split(X,[],[],[]).
split(X,[Y|Tail],[Y|Small],Big):-
    gt(X,Y),!,
    split(X,Tail,Small, Big).
split(X,[Y|Tail],Small,[Y|Big]):-
    split(X,Tail,Small,Big).

示例为quicksort([3,2,4,1,5], Sorted)。我几乎画了这个,但我只找到了Small=[2, 1]列表的轨迹,然后我不能对Big编号列表做同样的操作。有人能帮我为这段代码画一张图吗?我想了解正在运行的跟踪程序。我真的很感激!

绘制证明树是一个时髦的主题,并没有完全解决。

证明树包含调试时必需的信息,但是从轨迹推断形状并不容易,因为每一步都是用激活号标记。我们的注意力有限,被证明树暴露的大量信息所困扰。

但形状是可以恢复的:例如,一个解析trace并翻译为(例如)Graphviz的DCG。。。

请耐心等待,我会试着发布一些代码。你的问题给了我一个机会来实现我的小型Prolog IDE(loqt)的一个不错的补充。

(我在这里使用我的SW来渲染树)

相关内容

  • 没有找到相关文章

最新更新