Modest opinions  
by a humble autodidact
这是一个演示Artificial Intelligence- a Modern Approach第二版,Figure4.20 ONLINE-DFS-AGENT算法的程序。这个程序显示一个迷宫,然后用这个迷宫运行ONLINE-DFS-AGENT。它像一个debugger一样让你单步执行每一行,显示agent在迷宫中的位置,及程序中每一个变量的值。最酷的是你不仅可以往后执行,还可以用一个进度条把程序拉回以前的状态,反复观看以帮助理解这个算法。
程序开始后进入迷宫创建界面:

这里有一个3x3迷宫,灰色线条代表格子间没有墙,用鼠标点一下线条变成黑色,代表墙。按住CTRL点一个格子设定起点;按shift点格子设定终点。点击Run algorithm按钮开始运行算法。
左上角显示agent的当前位置。左下角的进度条代表算法的进度。右上是程序,加亮的行是即将执行的行。右下显示各个变量的值。
最后补充一点,原书上的程序是错的,是一个死循环。因为除了第一次执行,s都不为null,所以"if s is not null then do"里面的代码将执行,unbacktracked[s']将至少包含s,所以"if unbacktracked[s']"永远不为真,函数永远不能"return stop"。对比程序中的代码和书上的代码可以看出我增加了一个bool变量backtrack,解决了这个问题。
程序及源码如下。算法部分是用标准C++和STL写的,用户界面是WinForm。
https://files.cnblogs.com/yushih/OnlineDfsIllustration.zip

posted on 2008-06-24 20:11  yushih  阅读(1096)  评论(1编辑  收藏  举报