我正在制作俄罗斯方块作为一个有趣的副业项目(不是作业),并希望实现 AI,让电脑自己玩。我听说可以使用 BFS 搜索可用位置,然后创建最合理下落位置的聚合分数来完成。但我对 BFS 和 DFS 算法有些困惑。我最好的学习方式是画出来...我的绘图正确吗?
谢谢!
谢谢!
Push root into stack
Loop until stack is empty
Pop node N on top of stack
Mark N as visited
For each children M of N
If M has not been visited (M.visited() == false)
Push M on top of stack
我不会详细说明广度优先搜索,算法完全相同。 不同之处在于数据结构及其行为。 队列是FIFO(先进先出)的,因此您将在开始访问下一级别的节点之前访问同一级别的所有节点。
首先,我认为您的遍历似乎还不错(从快速概述来看)。我将在下面给您提供一些有用的链接。
我以前在YouTube上找到过一些不错的视频,但这里有一个(不是我见过的最好的),涵盖了 http://www.youtube.com/watch?v=eXaaYoTKBlE。如果您只是出于兴趣而做,请制作两个版本,一个使用DFS,一个使用BFS,并对它们进行基准测试以观察差异。此外,如果您想追踪一些内容以便更好地理解,请从http://www.aispace.org/downloads.shtml下载图形搜索器和其他任何您发现有用的工具。最后但并非最不重要的是,关于DFS和BFS的stackoverflow问题 http://www.stackoverflow.com/questions/687731/。