- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
专业最好文档,专业为你服务,急你所急,供你所需
文档下载最佳的地方
PAGE
专业最好文档,专业为你服务,急你所急,供你所需
文档下载最佳的地方
实验四 回溯法(4学时)
上机实验一般应包括以下几个步骤:
(1)、准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机。
(2)、上机输入和调试自己所编的程序。一人一组,独立上机调试,上机时出现的问题,最好独立解决。
(3)、上机结束后,整理出实验报告。实验报告应包括:题目、程序清单、运行结果、对运行情况所作的分析。
一、实验目的与要求
掌握回溯法的基本思想方法;理解回溯法的基本思想,理解回溯法算法的两个基本要素最优子结构性质和子问题的重叠性质。熟练掌握典型的回溯法问题。
了解适用于用回溯法求解的问题类型,并能设计相应回溯法算法;
掌握回溯法算法复杂性分析方法分析问题复杂性。
二、实验内容(以下题目要求采用回溯法算法完成):
1、N皇后问题
八皇后问题是十九世纪著名的数学家高斯于1850年提出的。问题是:在8×8的棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。可以把八皇后问题扩展到n皇后问题,即在n×n的棋盘上摆放n个皇后,使任意两个皇后都不能处于同一行、同一列或同一斜线上。如下图所示:
其中图中的一个解为:4 6 8 2 7 1 3 5
N皇后问题(含八皇后问题的扩展,规则同八皇后):在N*N的棋盘上,放置N个皇后,要求每一横行每一列,每一对角线上均只能放置一个皇后,求解可能的方案及方案数。
1.运用回溯法,设计解决上述问题的算法,设计出用回溯法计算出在N*N的棋盘上,放置N个皇后,要求每一横行每一列,每一对角线上均只能放置一个皇后,并返回每个皇后的位置。
2.掌握回溯算法的应用。
2、 0-1背包问题
给定n种物品和一背包。物品i的重量是wi0,其价值为vi0,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 利用回溯法试设计一个算法求出0-1背包问题的解,也就??求出一个解向量xi
(xi = 0 或1,xi = 0表示物体i不放入背包,xi =1表示把物体i放入背包),
3、装载问题
有两艘船,它们的可装载的货物重量分别为才c1,c2,给定一批货物,其重量保存在数组w【i】中了,问这批货物能否用此两艘船送出。
三、实验步骤
理解算法思想和问题要求;
编程实现题目要求;
上机输入和调试自己所编的程序;
验证分析实验结果;
整理出实验报告。
四、实验要求
1)上述题目任选两道做。
2)独立完成程序代码的编写
3)独立完成实验及实验报告
附:实验报告的主要内容
一.实验目的
二.问题描述
三.解题思路
四.算法设计
包含:数据结构与核心算法的设计描述、函数调用及主函数设计、主要算法流程图等
五.程序调试及运行结果分析
六.实验总结
附录:程序清单 (程序过长,只附主要部分)
五、实验原理
一、回溯法的基本思想:
有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。
回溯法的基本做法是搜索,是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。
回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意结点时,先判断该结点是否包含问题的解:1) 如果肯定不包含,则跳过这个结点;2) 如果可能包含,进入该子树,继续按深度优先策略搜索;3) 若某结点 i 的所有子结点都不可能包含问题的解,则回溯到 i 的父结点,生成下一个结点,继续搜索。回溯法求问题的所有解时,要回溯到根,且根结点的所有子树都被搜索遍才结束。在它求问题的一个解时,只要搜索到问题的一个解就结束。
二、设计回溯法的步骤:
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
三、回溯法的求解过程:
初始时,令解向量X为空,然后,从根结点出发,选择S1的第一个元素作为解向量X的第一个分量,即x1=a11,如果X=(x1)是问题的部分解,则继续扩展解向量X,选择S2的第一个元素作为解向量X的第2个分量,否则,选择S1的下一个元素作为解向量X的第一个分量,即x1=a12。依此类推,一般情况下,如果X=(x1,x2,…,xi)是问题的部分解,则选择Si+1的第一个元素作为解向量X的第i+1个分量时,有下面三种情况:
(1)如果X=(x1,x2,…,xi+1)是问题的最终解,则输出这个解。如果问题只希望得到一个解,则结束搜索,否则继续搜索其他解;
(2)如果X=(x1,x2,…,xi+1)是问题的部分解,则继续构
文档评论(0)