秒懂算法 | 满m叉树模型——图的m可着色问题的回溯算法

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 实例图解该问题回溯算法求解过程。

image.png


实例图解该问题回溯算法求解过程。

01、实例构造

给定如图5-43所示的无向连通图和m=3。

image.png


图的m着色问题的搜索过程如图5-44~图5-49所示。从根节点A开始,节点A是当前的活节点,也是当前的扩展节点,它代表的状态是给定无向连通图中任何一个顶点还没有着色,如图5-44(a)所示。沿着x1=1分支扩展,满足约束条件,生成的节点B成为活节点,并且成为当前的扩展节点,如图5-44(b)所示。扩展节点B沿着x2=1分支扩展,不满足约束条件,生成的节点被剪掉。然后沿着x2=2分支扩展,满足约束条件,生成的节点C成为活节点,并且成为当前的扩展节点,如图5-44(c)所示。扩展节点C沿着x3=1,2分支扩展,均不满足约束条件,生成的节点被剪掉。然后沿着x3=3分支扩展,满足约束条件,生成的节点D成为活节点,并且成为当前的扩展节点,如图5-44(d)所示。

image.png


图5-44 图的m着色问题的搜索过程(一)

扩展节点D沿着x4=1分支扩展,满足约束条件,生成的节点E成为活节点,并且成为当前的扩展节点,如图5-45(a)所示。扩展节点E沿着x5=1,2分支扩展,均不满足约束条件,生成的节点被剪掉。然后沿着x5=3分支扩展,满足约束条件,生成的节点F是叶子节点。此时,找到了一种着色方案,如图5-45(b)所示。从叶子节点F回溯到活节点E,节点E的所有孩子节点已搜索完毕,因此它成为死节点。继续回溯到活节点D,节点D再次成为扩展节点,如图5-45(c)所示。

image.png


图5-45 图的m着色问题的搜索过程(二)

扩展节点D沿着x4=2和x4=3分支扩展,均不满足约束条件,生成的节点被剪掉。再回溯到活节点C。节点C的所有孩子节点搜索完毕,它成为死节点,继续回溯到活节点B,节点B再次成为扩展节点,如图5-46(a)所示。扩展节点B沿着x2=3分支继续扩展,满足约束条件,生成的节点G成为活节点,并且成为当前的扩展节点,如图5-46(b)所示。扩展节点G沿着x3=1分支扩展,不满足约束条件,生成的节点被剪掉;然后沿着x3=2分支扩展,满足约束条件,生成的节点H成为活节点,并且成为当前的扩展节点,如图5-46(c)所示。

image.png


图5-46 图的m着色问题的搜索过程(三)

扩展节点H沿着x4=1分支扩展,满足约束条件,生成的节点I成为活节点,并且成为当前的扩展节点,如图5-47(a)所示。扩展节点I沿着x5=1分支扩展,不满足约束条件,生成的节点被剪掉;然后沿着x5=2分支扩展,满足约束条件,J已经是叶子节点,找到第2种着色方案,如图5-47(b)所示。从叶子节点J回溯到活节点I,节点I再次成为扩展节点,如图5-47(c)所示。

image.png


图5-47 图的m着色问题的搜索过程(四)

沿着节点I的 x5=3分支扩展的节点不满足约束条件,被剪掉。此时节点I成为死节点。继续回溯到活节点H,节点H再次成为扩展节点,如图5-48(a)所示。沿着节点H的x4=2,3分支扩展的节点不满足约束条件,被剪掉。此时节点H成为死节点。继续回溯到活节点G,节点G再次成为扩展节点,如图5-48(b)所示。沿着节点G的x3=3分支扩展的节点不满足约束条件,被剪掉。此时节点G成为死节点。继续回溯到活节点B,节点B的孩子节点已搜索完毕,继续回溯到节点A,如图5-48(c)所示。

image.png


图5-48 图的m着色问题的搜索过程(五)

以此类推,扩展节点A沿着x1=2,3分支扩展的情况如图5-49所示。

image.png


图5-49 图的m着色问题的搜索过程(六)

最终找到6种着色方案,分别为根节点A到如图5-49(b)所示的叶子节点F、J、O、S、X、I的路径,即(1,2,3,1,3)、(1,3,2,1,2)、(2,1,3,2,3)、(2,3,1,2,1)、(3,1,2,3,2)和(3,2,1,3,1)。

目录
相关文章
|
12天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
4天前
|
算法
树的遍历算法有哪些?
不同的遍历算法适用于不同的应用场景。深度优先搜索常用于搜索、路径查找等问题;广度优先搜索则在图的最短路径、层次相关的问题中较为常用;而二叉搜索树的遍历在数据排序、查找等方面有重要应用。
9 2
|
10天前
|
机器学习/深度学习 人工智能 算法
青否数字人声音克隆算法升级,16个超真实直播声音模型免费送!
青否数字人的声音克隆算法全面升级,能够完美克隆真人的音调、语速、情感和呼吸。提供16种超真实的直播声音模型,支持3大AI直播类型和6大核心AIGC技术,60秒快速开播,助力商家轻松赚钱。AI讲品、互动和售卖功能强大,支持多平台直播,确保每场直播话术不重复,智能互动和真实感十足。新手小白也能轻松上手,有效规避违规风险。
|
12天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
12天前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
11天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
12天前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
12天前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
12天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
12天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
下一篇
无影云桌面