- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘要
当今科技快速发展,利用计算机处理实际问题变得异常关键。尤其是利用计算机实现算法设计具要重大意义。算法设计和分析,其实能够解释为一个优化问题,通常是对能够利用计算机处理离散型问题优化。关键目标就是为了处理某一问题而提出多种不一样处理方案,而且要针对具体问题做细致空间和时间复杂度分析。本文是利用动态计划法处理租用游艇问题和回溯法处理部落卫队问题。利用C++编程实现算法。
动态计划算法是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题解得到原问题解。首先找出最优解性质,并刻画其结构特征,然后递归定义最优值(写出动态计划方程)而且以自底向上方法计算出最优值,最终依据计算最优值时得到信息,结构一个最优解。
回溯法算法是确定了解空间组织结构后,回溯法从开始节点(根结点)出发,以深度优先方法搜索整个解空间。这个开始节点就成为一个活结点,同时也成为目前扩展结点。在目前扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新或节点,并成为目前扩展结点。假如在目前扩展结点处不能再向纵深方向移动,则目前扩展结点就成为死结点。换句话说,这个节点,这个结点不再是一个活结点。此时,应往回(回溯)移动至最近一个活结点处,并使这个活结点成为目前扩展结点。回溯法即以这种工作方法递归在解空间中搜索,直到找到所要求解或解空间中以无活结点为止。即经过确定初始解和剪枝函数标准画出状态图进行搜索产生全部可行解。
关键字:动态计划法、租用游艇问题、回溯法、部落卫队问题、C++
目 录
TOC \o 1-3 \h \z \u 一、 动态规划法解决租用游艇问题 2
1.1问题重述 2
1.2 问题分析 2
1.3 算法原理与设计 2
1.3.1 算法原理 2
1.3.2 算法设计 3
1.4 算法实现与结果 4
1.5结果描述 5
二、回溯法解决部落卫队问题 6
2.1问题重述 6
2.2问题分析 6
2.3算法原理及设计 6
2.3.1算法原理 6
2.3.2算法设计 7
2.4算法实现 8
2.5结果描述 10
三、总结 12
参考文献 13
一、 动态计划法处理租用游艇问题
1.1问题重述
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,…,n。有能够游艇出租站用游艇并在下游任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间租金为r(i,j),1=ij=n。试设计一个算法,计算游艇出租站1到出租站n所需最少租金。
对于给定游艇出租站i 到游艇出租站j 之间租金为r(i,j),1=ij=n,编程计算从游艇出租站1 到游艇出租站n所需最少租金。 由文件提供输入数据。文件第1 行中有1 个正整数n(n=200),表示有n个游艇出租站。接下来n-1 行是一个半矩阵r(i,j),1=ij=n。程序运行结束时,将计算出从游艇出租站1 到游艇出租站n所需最少租金输出到文件中。
输入文件示例 输出文件示例 12
3 12
5 15
7
1.2 问题分析
将每个出租站看作一个点,站和站之间关系能够用有向无环图表示,同时站和站之间租金为边权。此问题可转化成求站1到站n最短路径问题。用动态计划求解,递推方程以下所表示:
定义f[i][j]为站点i到站点j最少租金。fi
1=i,j=n.初始最优解为f1
1.3 算法原理和设计
1.3.1 算法原理
本文关键适用动态计划法思想求解,其基础思想时将原问题分解为若干个子问题,先求解子问题,然后从这些子问题解得到原问题解。该方法关键应用于最优化问题,这类问题会有多个可能解,每个解全部有一个值,而动态计划找出其中最优(最大或最)值解。若存在若干个取最优值解话,它只取其中一个。在求解过程中,该方法也是经过求解局部子问题解达成全局最优解,但和分治法和贪心法不一样是,动态计划许可这些子问题不独立,也许可其经过本身子问题解作出选择,该方法对每一个子问题只解一次,并将结果保留起来,避免每次碰到时全部要反复计算。所以,动态计划法所针正确问题有一个显著特征,即它所对应子问题树 中子问题展现大量反复。动态计划法关键就在于,对于反复出现子问题,只在第一次碰到时加以求解,并把答案保留起来,让以后再碰到时直接引用,无须重新求解。
设计动态计划法通常包含以下4个步骤为:
找出最优解性质,并刻画其结构特征;
递归地定义最优值;
以自底向上方法计算出最优解;
依据计算最优值得到信息,结构最优解。
1.3.2 算法设计
int main()
{
int num,i,j,k;
for(k=2;knum;k++)
{
for(i=0;inum-k;i++
原创力文档


文档评论(0)