《实用算法的分析与程序设计》Chapt 6 隐式图的基本算法
显式图:给出了图中的各结点及边,要求按照某种规则系统地遍历图中的每个结点,以便给出图的结构信息
隐式图:仅给出初始结点、目标结点以及生成子结点的约束条件(题意隐含给出),要求按扩展规则应用于扩展结点的过程,找出其他结点,使得隐式图的足够大的一部分编程显式,直到包含目标结点为止。
隐式图的基本算法有两种:
- 盲目搜索
- 结点的扩展次序不受目标结点位置影响,扩展结点不估计路径代价。这种求解实际上是产生问题状态空间的全部结点及相互关系,搜索效率低
- 启发式搜索
- 结点扩展次序受问题的性质和目标结点的一般方向的影响,扩展结点时要估计由初始结点经结点至目标结点的路径代价。它只需要产生全部的状态空间的部分结点及相互关系就可以求解问题了,因此搜索效率高
6.1 回溯法的讨论
需要用计算机求解的试题一般有两种类型:
1. 能够用简明正确的数学公式揭示问题:好的数学模型建立了客观事物间准确的运算关系,运用这个数学模型求解是很何时的。组合数学对常见计数问题都建立了数学模型。
2. 不能对给定问题建立数学模型。或即使有数学模型但解该模型的准确方法也不一定能运用现成算法。在需要枚举方案时,常会遇到这种情况。
[例1] n皇后问题
一个n x n的国际象棋棋盘上放置n个皇后.使其不能相互攻击.即任何两个皇后
都不能处在棋盘的同一行、同一列、同一条斜线上,试问共有多少种摆法?