- 1、本文档共44页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6-搜索方法
搜索方法及竞赛题目讲解 彭超 2006.8 状态空间搜索 搜索被称为“通用解题法”,在算法中占有重要的地位。 有巨大的局限性和自身的灵活性。 首先建立“状态空间”然后“盲目”搜索。常用方法:深度优先搜索,广度优先搜索,双向广度优先搜索,迭代加深,… 优化策略:剪枝、启发式、… 状态空间 状态:问题在某一时刻进展状况的数学描述。 状态转移:问题从一种状态到另一种或几种状态的操作。 状态空间:一个“图”,图结点对应于状态,点之间的边对应于状态转移。 搜索:寻找一种可行的操作序列,从起始状态经过一系列状态转移,达到目标状态。 例:过河问题 某人要带一条狗、一只鸡、一箩米过河,但小船除需要人划外,最多只能载一物过河,而当人不在场时,狗要咬鸡、鸡要吃米。问此人应如何过河? 例:过河问题 状态:建立四元组(人,狗,鸡,米)。用0表示在左岸,1表示在右岸。 起始状态(0,0,0,0),终止状态(1,1,1,1) 状态转移规则: (a,b,c,d) →(1-a,1-b,c,d)(当a=b) →(1-a,b,1-c,d)(当a=c) →(1-a,b,c,1-d)(当a=d) →(1-a,b,c,d) 约束:(a,b,c,d)中,当a≠b时b≠c;当a≠c时c≠d 例:过河问题 搜索: (0,0,0,0) →(1,1,0,0) →(1,0,1,0) →(0,0,1,0) →(1,0,1,1) →(1,0,0,1) →(1,1,1,0) →(1,0,0,0) 例:过河问题 搜索: →(1,0,1,1) →(0,0,0,1)→(1,1,0,1)→(0,1,0,1) →(1,1,1,1)ok →(0,0,1,0)→(1,0,1,1)→(0,0,1,1) →(0,0,1,1) →(1,1,1,0) →(0,0,1,0)→(1,0,1,1)→(0,0,1,1) →(0,1,0,0)→(1,1,0,1)→(0,1,0,1) →(1,1,1,1)ok →(0,1,1,0) 例:过河问题 搜索在“图”中进行,但图不需要事先建立(“隐式图”)。 搜索过程就是对图的遍历过程,可以得到一棵“搜索树”。 搜索树的结点个数、分枝数、深度,决定着搜索的效率。 例:过河问题 搜索树 过河问题的程序实现 普通状态可以用4个整数表示 压缩状态用4个bit表示(char型有8个bit,足够用)。 用深度优先(DFS, Depth First Search)或广度优先(BFS, Breath First Search)。 回溯(DFS)的基本结构 判断是否到了底层。是,则返回上一层 否则,对于各种可能情况: if possible 加入标记 进入下一层 清除标记 else if 所有情况列举完毕 返回上一层 DFS zju 1711《Sum It Up》 zju 1004《Anagrams by Stack》 zju 1204《Additive equations》 zju 1984《Genetic Code》 zju 1457《Prime Ring Problem》 zju 1008《Gnome Tetravex》 zju 1411《Anniversary》 zju 1267《Mapping the Route》 zju 1482《Partitions》 zju 1990《Subway Tree Systems》 Sum It Up (zju 1711) 输入正整数t、n,然后是n个正整数(单调非递增)。若n个数中某几个数的和是t,输出这些加法表达式(表达式不重复输出) ;无解输出“NONE” Sum It Up (zju 1711) 状态:计算中间值r 转移规则: r →r-ai(取第i个数ai) →r (不取第i个数) 起始状态:所输入的t 中止状态:0 Anagrams by Stack (zju 1004) 有一个字母序列,对它每个元素进行入栈、出栈操作。判断是否能得到指定输出序列,如果可以,输出相应的栈操作。 Prime Ring Problem (zju 1457) n个数排一圆环,要求相邻两个数和为素数。 Genetic Code (zju 1984) 输入整数n,输出一个长度为n的由‘N’、’O’、’P’组成的字符串,要求任意相邻
您可能关注的文档
- 强化项目管理控制开发成本.pdf
- 阿长(上课).ppt
- 2010高分子化学A卷.doc
- 多核多线程支持.ppt
- 第一节 无机非金属材料的主角——硅导学案.doc
- 工程学院课程教学进度表.doc 建筑AUTOCAD2008.doc
- 抗渗混凝土的配制及施工应用.pdf
- 防污染论文2008932084.doc
- 初中数学下学期教研组工作计划.doc
- 切为了孩子(家长会发言).doc
- 国家安全教育大学生读本高教社2024年8月版课件全套合集(包括绪论总共11章PPT课件).pdf
- 国家安全教育大学生读本高教2024版课件-第三章更好统筹发展和安全.pptx
- 国家安全教育大学生读本高教社2024年8月版教材讲义-第四章 坚持以人民安全为宗旨.docx
- 国家安全教育大学生读本高教2024版课件-第九章筑牢其他各领域国家安全屏障-.pptx
- 国家安全教育大学生读本高教2024版课件-第一章完全准确领会总体国家安全观.pptx
- 国家安全教育大学生读本高教社2024年8月版-导论课件.pptx
- (已瘦身)国家安全教育大学生读本高教社2024年8月版课件全套合集(包括绪论总共11章PPT课件).pptx
- 市直单位党员干部2024年度组织生活会对照检查材料四个带头+上年度查摆问题整改落实情况+自我批评意见.docx
- 某中学委员会关于巡察整改进展情况的报告材料.docx
- 经验交流发言材料:“五向发力”建强堡垒 集聚高质量发展动能.docx
文档评论(0)