1 / 17

搜索与其他算法不同,是一种相当“万能”的方法,使用要求非常低 相对的,最坏情况下的效率常常是指数级的 没有其他思路时,这是一种最常见的、好写的拿分方法

搜索. 陈皓. 搜索. 搜索与其他算法不同,是一种相当“万能”的方法,使用要求非常低 相对的,最坏情况下的效率常常是指数级的 没有其他思路时,这是一种最常见的、好写的拿分方法. 搜索. 搜索的目的是从状态空间(树、图 … )中找到所需要的状态. 状态树. 两种遍历方式. 深度优先搜索( DFS ). 经典问题:八皇后问题. 如何能够在 8×8 的国际象棋棋盘上放置八个 皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线 上 统计摆放方案数,两种方案不同当且仅当棋盘上标号不同,不考虑旋转等情况.

pooky
Télécharger la présentation

搜索与其他算法不同,是一种相当“万能”的方法,使用要求非常低 相对的,最坏情况下的效率常常是指数级的 没有其他思路时,这是一种最常见的、好写的拿分方法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 搜索 陈皓

  2. 搜索 • 搜索与其他算法不同,是一种相当“万能”的方法,使用要求非常低 • 相对的,最坏情况下的效率常常是指数级的 • 没有其他思路时,这是一种最常见的、好写的拿分方法

  3. 搜索 • 搜索的目的是从状态空间(树、图…)中找到所需要的状态

  4. 状态树

  5. 两种遍历方式 • 深度优先搜索(DFS)

  6. 经典问题:八皇后问题 • 如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上 • 统计摆放方案数,两种方案不同当且仅当棋盘上标号不同,不考虑旋转等情况

  7. NOIP2009 靶形数独

  8. NOIP2009 靶形数独 • Dancing Links?! • 搜索树剪枝 • 从选择少的格子开始搜 • 可行性剪枝 • 提高运算速度 • lowbit

  9. 两种遍历方式 • 广度优先搜索(BFS)

  10. 经典问题:八数码问题 • 在3×3的棋盘上,有8个数,分别是1,2,3,4,5,6,7,8 和一个空格,给定一个初始状态和目标状态,如图 • 问,给定状态至少经过几次变换才能到达目标状态。每次变换是指把空格上下左右其中的一个数移到空格处。

  11. 加速:双向广搜 • 用两个队列从初始与目标状态轮流扩展新结点,直到两边都搜索到同一个状态,就找了一条从初始到目标的路径。

  12. 迭代加深搜索 • 搜索时限制搜索树的深度,不断增加搜索树深度 • 适合搜索树又深又宽、但是解并不是很深的情况 • 重复搜索的时间可以忽略

  13. NOIP2002 字串变换 • 已知有两个字串 A$, B$ 及一组字串变换的规则(至多6个规则):A1$ -> B1$A2$ -> B2$  规则的含义为:在 A$中的子串 A1$ 可以变换为 B1$、A2$ 可以变换为 B2$ …。    例如:A$='abcd'B$='xyz'  变换规则为:    ‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’  则此时,A$ 可以经过一系列的变换变为 B$,其变换的过程为:   ‘abcd’->‘xud’->‘xy’->‘xyz’  共进行了三次变换,使得 A$ 变换为B$。 • 若在 10 步(包含 10步)以内能将 A$ 变换为 B$ ,则输出最少的变换步数;否则输出"NO ANSWER!"

  14. 记忆化搜索 • 例题:n个事件,每个事件有一个确定的占用时间以及它的价值,同一时刻只能处理一个事件,问能获得的最大价值。

  15. 暴力搜索? • 按开始时间排序,按顺序枚举是否选择此事件 • 重复搜索!

  16. 记录已搜索状态 • 已经搜过的结点,无需重复搜索

  17. 参考资料 • 维基百科:搜索、树、状态空间、八皇后问题 • NOIP 2002,2009 • Jon Kleinburg, ÉvaTardos, Algorithm Design

More Related