本篇记录的是算法课的一次实验报告,这次实验很有意思,笔者断断续续花了两周时间做实验、与大佬交流经验和写报告。最终实验报告99分 ,得到了老师的肯定,所以请放心阅读。本篇只讲思路,不含代码,也没有图(懒得画),想直接copy的可以离开啦
文章共分为4个部分,分别是回溯法介绍,地图填色问题介绍,剪枝策略的设计,算法效率分析。
做实验前首先要搞懂什么是回溯法,多看看多学学怎么设计剪枝策略之类的知识对做实验有很大帮助
回溯算法是一种遍历问题的整个解空间树,以找到所有可行解或一个最优解的算法。随着问题规模增大,朴素回溯法的效率越来越低。而剪枝策略可以剪掉找不到可行解的分支,减少搜索,提高搜索效率。因此设计好的剪枝策略时提高回溯算法效率的关键。
搞懂回溯法肯定也要搞懂什么是地图填色问题吧,关键不在于理解填色规则的字面意思,而在于要把问题转化为数学问题,便于算法的设计(这点挺重要的,少了报告就不够完整。很多科目的老师们都强调把问题转化为数学问题再编程实现,有点数模的味道)
地图填色问题是指使用不同的颜色为地图不同区域着色,使得具有共同边界的区域颜色不同。由于地图填色与地图区域内部无关,因此每个区域可以看成一个顶点,顶点间用边连接表示这两个区域相邻。于是地图填色问题就转化成了图(数据结构意义的图)填色问题。
设计剪枝策略前,得先整个朴素回溯法的代码,然后设计了新的剪枝策略就往这个代码里加(朴素回溯法比较简单,就不贴代码啦)
然后就是设计剪枝策略,每设计完一个都要利用小规模问题测试正确性,然后尝试三个地图le450_5a、le450_15b、le450_25a的填色,列出填色情况和算
本文发布于:2024-02-04 09:59:57,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170704651254585.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |