1、什么是搜索?
搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。在竞赛中,搜索法还被当做“救命稻草”——大多数问题都可以使用搜索来谋取部分分数。 搜索策略有很多,常见的有:深度优先搜索、宽度优先搜索、迭代加深搜索等。搜索算法的设计主要是一下几个步骤:确定状态和扩展方式、选用合适的搜索方式、优化。
2、、深度优先搜索与宽度优先搜索 搜索算法设计过程中,主要需要考虑的问题有两个:状态与状态之间的关系(即扩展方式)。如果将状态对应顶点,状态之间的关系对应边,原搜索问题可抽象成一棵搜索树。初始状态对应根节点,目标状态对应目标节点,搜索算法即找到一条从根节点到目标节点的路径(一个可行解)。详见下图: