1. 回溯算法的主要特征是什么?
答:把回溯算法看成一个不断地进行各种尝试直至问题解决的过程,这个过程似乎具有迭代性。
2. 用自己的语言来描述,如何用右手规则穿越迷宫。用左手法则是否也能达到同样的效果?
答:可以。
3. 用递归回溯法则解决迷宫问题的核心是什么?
答:出口就在其中的一条线上。如果选对了方向,那么将向解决方案更靠近一步。因此,沿着那条路走,问题就变得简单起来,这就是递归式解法的关键。
4. 在SolveMaze的递归实现中,有哪些简单情景?
答:这个参数是起始位置,它返回一些指示值,说明是否成功。到找到返回TURE,否则返回FALSE。
5. 为什么说穿越迷宫时做标记是重要的?如果未作标记,那么SolveMaze函数将会发生什么情况?
答:因为做标记是递归实现的核心,如果没有标记,那么它只能在一个地方向四周判断,然后不会进入下一步。
6. 在SolveMaze的实现中,为什么要在for循环后调用UnmarkSquare函数?这对于该算法是否必要?
答:必须有的。它让递归进入下一步。
7. SolveMaze函数所返回的布尔结果有何作用?
答:找到返回TURE,否则返回FALSE。这样就判断出循环跳出的条件。
8. 用自己的语言,解释回溯过程在SolveMaze的递归实现中是如何发挥作用的。
答:它可以在错误的时候返回到没有错误的地方,这样一步一步的简化了问题,直至走出迷宫。
9. 在简单的拿子游戏中,开始时的硬币是13个,人类玩家先走第一步,有利还是不利?为什么?
答:有利,因为这样就可以对这个条件判断。然后找到最佳方法。先找到最佳方法,对以后的步骤更有利。
10. 编写一个简单的C语言程序,局势对当前玩家有利时nCoins的值shi TURE,反之为FALSE(提示:使用%运算符)。
11. 什么是最大最小算法?它的名字有什么意义?
答:在任何局势下,最佳走法,简单说,就是让你的对手处在最坏的局势中,最坏的局势就是使得对手只能走出最弱的好棋。这种思想——寻找使对手只能走出最差的局势——被称为“最小最大策略”。他的目标就是将对手的最大机会最小化。
12. 分析一个游戏时,ply这个词是什么意思?
答:单个游戏者的单步动作。
13. 假设您处在下图所示的局势中,分析下两步棋以显示出从您的角度的平分结果:
答:第3种+4+3-2+5的得分是10。
14. 为什么最小最大算法的抽象开发是很有意义的?
答:最小最大算法是一个非常通用的法则,它可以用在各种游戏中而不一览于游戏的形式。
15. 使用哪两种数据结构使得最小最大算法的实现独立于某一特殊游戏的特性?
答:它要有2个互相递归的函数,所以要求:1必须可以限制递归搜索的深度。2。必须可以为为每步棋和每个局势评定一个分数。
16. FindBestMove函数中有3个参数,每个参数的作用是什么?
答:stateT state, int depth, int *pRating.
17. 解释EvaluateStaticPosition函数在最小最大算法的实现过程中的作用。
答:这个函数在游戏结束或已经达到最大递归深度时,简单情景就会出现,这些简单情景允许递归终止。这个函数就是用来执行评估的。