演示一个在线回溯搜索算法

这是一个演示Artificial Intelligence- a Modern Approach第二版,Figure4.20 ONLINE-DFS-AGENT算法的程序。这个程序显示一个迷宫,然后用这个迷宫运行ONLINE-DFS-AGENT。它像一个debugger一样让你单步执行每一行,显示agent在迷宫中的位置,及程序中每一个变量的值。最酷的是你不仅可以往后执行,还可以用一个进度条把程序拉回以前的状态,反复观看以帮助理解这个算法。
程序开始后进入迷宫创建界面:
演示一个在线回溯搜索算法_第1张图片
这里有一个3x3迷宫,灰色线条代表格子间没有墙,用鼠标点一下线条变成黑色,代表墙。按住CTRL点一个格子设定起点;按shift点格子设定终点。点击Run algorithm按钮开始运行算法。 演示一个在线回溯搜索算法_第2张图片
左上角显示agent的当前位置。左下角的进度条代表算法的进度。右上是程序,加亮的行是即将执行的行。右下显示各个变量的值。
最后补充一点,原书上的程序是错的,是一个死循环。因为除了第一次执行,s都不为null,所以"if s is not null then do"里面的代码将执行,unbacktracked[s']将至少包含s,所以"if unbacktracked[s']"永远不为真,函数永远不能"return stop"。对比程序中的代码和书上的代码可以看出我增加了一个bool变量backtrack,解决了这个问题。
程序及源码如下。算法部分是用标准C++和STL写的,用户界面是WinForm。
http://files.cnblogs.com/yushih/OnlineDfsIllustration.zip

你可能感兴趣的:(算法)