- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
回溯法的应用(实验报告)
华南师范大学本科生实验报告
姓名_张俊发_ 学号 20082101032
院系_计算机学院_ 专业_ 计算机科学与技术 _
年级 2008级 班级_ 2班 _
小组实验任务分工_ 独立完成
实验时间 2010 年_6_月 1 _日
实验名称 回溯法的应用
指导老师及职称 陈振洲
华南师范大学教务处编印
实验课程:算法分析与设计
实验名称:回溯法的应用 (综设型实验)
第一部分 实验内容
1.实验目标
(1)
熟悉使用回溯法求解问题的基本思路。
(2)掌握回溯算法的程序实现方法。
(3)理解回溯算法的特点。
2. 实验任务
(1)从所给定的题目中选择一题,使用回溯法求解之。
(2)用文字来描述你的算法思路,包括解空间、限界函数、算法主要步骤等。
(3)在Windows环境下使用C/C++语言编程实现算法。
(4)记录运行结果,包括输入数据,问题解答及运行时间。
(5)分析算法最坏情况下时间复杂度和空间复杂度。
(6)谈谈实验后的感想,包括关于该问题或类似问题的求解算法的建议。
3. 实验设备及环境
PC;C/C++等编程语言。
4. 实验主要步骤
根据实验目标,明确实验的具体任务;
设计求解问题的回溯算法,并编写程序实现算法;
设计实验数据并运行程序、记录运行的结果;
分析算法时空性能;
实验后的心得体会。
第二部分 问题及算法
问题描述
国际象棋的棋盘上有八八六十四个格子(这里简化为5*6=30个格子), 黑白相间, 棋子放在格子中. 棋中的马走“日”字, 即横二竖一, 或横一竖二. 马从棋盘的某个格子出发, 走29 步, 是否能走过其他29 个格子各一次? 如果能够, 则说存在一条马的周游路线. 如果马从某个格子出发, 不重复地走过了其余29个格子, 第30 步又回到了出发点, 则说存在一条马的周游闭路.
按照从上到下,从左到右对棋盘的方格编号,如下所示: 1???? ?2???? ?3???? ?4???? 5?????6 7???? ?8??? ??9??? ??10? ???11? ???12 13???? 14???? ?15???? 16????? 17?? ??18 19??? ?20??????21???? 22????? 23??? ?24 25??? ?26??????27???? 28????? 29???? 30 马的走法是“日”字形路线,例如当马在位置15的时候,它可以到达2、4、7、11、19、23、26和28。但是规定马是不能跳出棋盘外的,例如从位置1只能到达9和14。
2. 回溯法的一般思路
对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。这棵树的每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况;从而得出结果。
回溯法中,首先需要明确下面三个概念:
(一)约束函数:约束函数是根据题意定出的。通过描述合法解的一般特征用于去除不合法的解,从而避免继续搜索出这个不合法解的剩余部分。因此,约束函数是对于任何状态空间树上的节点都有效、等价的。
(二)状态空间树:刚刚已经提到,状态空间树是一个对所有解的图形描述。树上的每个子节点的解都只有一个部分与父节点不同。
(三)扩展节点、活结点、死结点:所谓扩展节点,就是当前正在求出它的子节点的节点,在DFS中,只允许有一个扩展节点。活结点就是通过与约束函数的对照,节点本身和其父节点均满足约束函数要求的节点;死结点反之。由此很容易知道死结点是不必求出其子节点的(没有意义)。
求解问题的回溯算法描述
Backtrack(x,y,dep);
(1)棋盘board[5][6]每个点初始化为0,输入起始点的坐标x,y,棋盘起始点board[x][y]赋值为1,保存起始点坐标为xstart,ystart,步数dep赋值为1。
(2)每个点从八个方向去试探,若全部试完则转(7)。
(3)通过约束函数check(x,y)检查这一步是否还在棋盘内,不是则转(2)。
(4)试探成功则,步数+1,board[x][y]=dep,前进一步再试探即递归调用Backtrack(x,y,dep);
(5)正确解(步数等于30,下一步可以回到起始点)还未找到则转(2)。
(6)已找到一种解则记录并打印。
(7)退回一步(回溯),若未退到头则转(2)。
(8)已退到头则结束或打印无解。
算法实现的关键技巧
棋中的马走“日”字, 即横二竖一, 或横一竖二,在每个点都有八个方向可以走,用一个二维数组dir
您可能关注的文档
- 2Unit 5 Music词汇.ppt
- 人教版高一英语必修2 5单元知识点.ppt
- Polymer Chemistry lecture-功能高分子材料-220408.ppt
- 最新人教版七年级英语下册过关卷.docx
- 七年级下unit1重点单词短语句子默写.doc
- 毛豆儿的樱桃树.ppt
- 樱桃树学习用具公司案例分析.ppt
- 化学专业英语第一章.ppt
- 第9课 we like sports.doc
- B4Unit4语言点.ppt
- 浙江省宁波市鄞州区董玉娣中学2025届化学九上期末调研模拟试题含解析.doc
- 红河学院《语言学导论》2022-2023学年第一学期期末试卷.doc
- 新课程高中数学微积分基本定理导新人教A版选修教案.docx
- 脾心痛病人的护理常规课件.pptx
- 卧床病人的家庭护理及保健.pptx
- 2021高考:【地理06】高中地理综合题的分析思路和答题方法集锦 28.pdf
- 2025年公务员考试申论素材解析及真题应用案例分析.docx
- 八年级疫情防控主题教育班会教案.docx
- 齐齐哈尔大学《民族艺术》2023-2024学年第一学期期末试卷.doc
- 河北农业大学现代科技学院《生物反应与分离综合实验》2023-2024学年第二学期期末试卷.doc
最近下载
- 通达信改良主力追踪指标公式(超准确).docx VIP
- 2025年布袋木偶行业深度研究报告.docx
- 2025海淀区高中信息技术学业水平合格性考试(样卷).docx
- 项目管理人员安全教育培训总结心得体会建筑施工管理人员.pptx VIP
- 项目管理人员安全教育培训.pptx VIP
- (人教PEP版2025新教材)四年级英语上册unit 5 全单元课件.pptx
- 税务会计(第3版)梁文涛技能训练及实战演练参考答案.pdf VIP
- 跨国公司经营与管理试卷.docx VIP
- 2026西藏日喀则市桑珠孜区选(聘)任社区工作者207人考试参考试题及答案解析.docx VIP
- (六年级)人教版六年级上册英语知识点.docx VIP
原创力文档


文档评论(0)