- 1、本文档共111页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
万能的解题金钥匙——搜索;基础概念;广度优先搜索;例题一;分析;分析;分析;分析;程序实现(伪代码);总结与拓展;产生规则也必须作相应改动。设空格当前位置是SI,则有:
(1)空格向上移动:空格的位置减3,即交换SI和SI-3的字符;
(2)空格向左移动:空格的位置减1,即交换SI和SI-1的字符;
(3)空格向右移动:空格的位置加1,即交换SI和SI+1的字符;
(4)空格向下移动:空格的位置加3,即交换SI和SI+3的字符。
如设规则编号为k,则上述四条规则可归纳为一条:
交换SI和SI+(2*k-5)的字符
布局用字符串表示,使得判断重复过程和判断目标的过程变得很简单,只需判断两个字符串是否相等就可以了。按照上述的改进,读者可自己编制的解八数码问题的程序。
;一般广度优先搜索的基本框架;例题二;分析;分析;分析;例题三;例题三;分析;分析;分析;分析;例题四;分析;分析;例题五;分析;受多维数组元素地址的计算方法的启发,可以将矩阵的每一种状态按以下规则对应于一个双字节的整数K:
(1)用一维数组S[1..8]表示一种状态。例如初始状态S[i]=i;
(2)令T[i]表示S[1..i-1]这i-1个数中,比S[i]小的数的个数;
(3) ;可以证明0—40319之间的每一个整数都唯一的对应了一个T数列,也就是说,魔板的每一个状态都与每一个整数一一对应。
∵n!=(n-1)*(n-1)!+(n-1)!
∴n!=(n-1)*(n-1)!+(n-2)*(n-2)!+(n-3)*(n-3)!+……+2*2!+1*1!+1
n!-1=(n-1)*(n-1)!+(n-2)*(n-2)!+(n-3)*(n-3)!+……+2*2!+1*1!
这一式子类似于10k-1=9*10k-1+9*10k-2+……+9*100,对于上面的结论就很容易证明了。
;因此可以用一个0—40319的布尔型映射数组,初始状态为假。如果一种状态已经搜索到,则将其对应的数组元素标记为真。判断一种状态是否与以前的状态重复的时候,只需要检查该状态所对应的数组元素,若为真则该状态一定已经搜索到了。这样省略了查找工作的时间量,虽然多花了40k的空间,却大大提高了时间效率。
在广度搜索当中,扩张出来的新的节点总是有很大的重复,必须对这些节点进行判重操作,最简单判重方法是相当耗时的,它需要将新的节点与已经生成的节点分别进行比较,在搜索的初期阶段,这一步的耗时是不明显的,但随着节点数目增大,判重的耗时相对就大大增加,从而降低了算法的时间效率。为了省去这一个判重工作,往往是利用数据结构当中的哈希表。
源程序见目录下exchange.pas;哈希表的缺点;例题六;例题六;分析;分析;分析;深度优先搜索;例题一;分析;行:因为枚举是按行的,一行只有一颗棋子,所以不必判断。
列:可以用一个b[1..4]的布尔数组记录,当b[i]=true时表示第i列还没有棋子,否则已有棋子。
对角线:如图每个格子所在的对角线有两条,4*4的棋盘分别有7条斜向上和斜向下的对角线,可用两个布尔数组c,d[1..7]判断。;算法分析:
首先我们枚举第一行的棋子的列坐标I,选定一个后,把A[1]赋值为I,把它所在的列(I)、所在的两条对角线(I,I+3)的数组元素赋值为false,再搜索第二行,如此递归搜索直到第四行棋子的列坐标确定,输出。源程序如下:;源程序;一般深度优先搜索的基本框架;例题二;分析;分析;伪代码;
生日蛋糕
条件1:V = nπ
H = m 层
形状:每层都是一个圆柱体。
条件2:
设从下往上数第i(1=i=m)层蛋糕是半径为Ri, 高度为Hi的圆柱。
当im时,要求RiRi+1且HiHi+1。
条件3:
表面积Q最小,令Q= Sπ
问题:
给出的n和m,
找出蛋糕的制作方案(适当的Ri和Hi的值),使S最小。
(除Q外,以上所有数据皆为正整数)
输入
n (n=10000),
m (m=20)
输出
S(若无解则S=0)。;解析法? ;转变思路,搜索?;确定第一层蛋糕的大小
根据上一层蛋糕的大小确定下一层蛋糕该怎么做
看是否符合条件
1)是否做到了m层
2)是否最终体积为0
3)是否当前面积最小
若上述条件成立,则保留当前最优值,否则继续做下一层蛋糕,若重做蛋糕
;Search (i, Ri , Hi , Si , Vi)
{对每层蛋糕进行搜索}
if (i=m) and (Vi =0) then 更新最优值
您可能关注的文档
- 仪表车间2015年二季度比武考试试卷(混合卷)讲解.doc
- 以五大发展理念引领新时期地方税收工作讲解.doc
- 以意逆志,知人论世讲解.ppt
- 仪器课件_第10章_红外吸收光谱法讲解.ppt
- 以租代购方案讲解.ppt
- 仪器设计(试题15-习题集)讲解.doc
- 以KPI为基石的绩效管理讲解.ppt
- 以规范为尺《小学生行为规范》主题班会讲解.ppt
- 优化设备诊断讲解.docx
- 以太网基础讲解.ppt
- 2025届湖北省武汉市新洲区中考历史最后一模试卷含解析.doc
- 辽宁省丹东市第十四中学2025届中考冲刺卷生物试题含解析.doc
- 方兴大道承台砼施工技术交底.docx
- 江苏省扬州市田家炳实验中学2025届中考历史全真模拟试卷含解析.doc
- 2025届黑龙江省杜尔伯特县中考二模化学试题含解析.doc
- 海南省海口九中学海甸分校2025届中考生物模拟试卷含解析.doc
- 江苏省春城中学2025届中考生物全真模拟试卷含解析.doc
- 广东省广州市番禺区广博校2025届中考猜题历史试卷含解析.doc
- 安徽省合肥市重点中学2025届中考四模历史试题含解析.doc
- 河北省衡水市故城县2025届中考生物押题试卷含解析.doc
文档评论(0)