地图填色问题的回溯解法(设计剪枝策略)

阅读: 评论:0

地图填色问题的回溯解法(设计剪枝策略)

地图填色问题的回溯解法(设计剪枝策略)

文章目录

  • 前言
  • 一、回溯法介绍
  • 二、地图填色问题介绍
  • 三、剪枝策略的设计
    • 策略1:顶点搜索顺序
    • 策略2:向前1步探测
    • 策略3:失败策略合集
      • 策略3.1:从最大完全子图找首个着色点
      • 策略3.2:回溯到相邻的时间最近着色的点
  • 算法效率分析
  • 总结


前言

本篇记录的是算法课的一次实验报告,这次实验很有意思,笔者断断续续花了两周时间做实验、与大佬交流经验和写报告。最终实验报告99分 ,得到了老师的肯定,所以请放心阅读。本篇只讲思路,不含代码,也没有图(懒得画),想直接copy的可以离开啦


文章共分为4个部分,分别是回溯法介绍,地图填色问题介绍,剪枝策略的设计,算法效率分析。

一、回溯法介绍

做实验前首先要搞懂什么是回溯法,多看看多学学怎么设计剪枝策略之类的知识对做实验有很大帮助

回溯算法是一种遍历问题的整个解空间树,以找到所有可行解或一个最优解的算法。随着问题规模增大,朴素回溯法的效率越来越低。而剪枝策略可以剪掉找不到可行解的分支,减少搜索,提高搜索效率。因此设计好的剪枝策略时提高回溯算法效率的关键。

二、地图填色问题介绍

搞懂回溯法肯定也要搞懂什么是地图填色问题吧,关键不在于理解填色规则的字面意思,而在于要把问题转化为数学问题,便于算法的设计(这点挺重要的,少了报告就不够完整。很多科目的老师们都强调把问题转化为数学问题再编程实现,有点数模的味道)

地图填色问题是指使用不同的颜色为地图不同区域着色,使得具有共同边界的区域颜色不同。由于地图填色与地图区域内部无关,因此每个区域可以看成一个顶点,顶点间用边连接表示这两个区域相邻。于是地图填色问题就转化成了图(数据结构意义的图)填色问题。

三、剪枝策略的设计

设计剪枝策略前,得先整个朴素回溯法的代码,然后设计了新的剪枝策略就往这个代码里加(朴素回溯法比较简单,就不贴代码啦)

然后就是设计剪枝策略,每设计完一个都要利用小规模问题测试正确性,然后尝试三个地图le450_5a、le450_15b、le450_25a的填色,列出填色情况和算

本文发布于:2024-02-04 09:59:57,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170704651254585.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:解法   策略   地图
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23