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

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 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)。

目录
相关文章
|
4天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
14 1
|
2天前
|
机器学习/深度学习 算法 数据可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
10 0
|
2天前
|
机器学习/深度学习 算法 数据可视化
【Python机器学习专栏】决策树算法的实现与解释
【4月更文挑战第30天】本文探讨了决策树算法,一种流行的监督学习方法,用于分类和回归。文章阐述了决策树的基本原理,其中内部节点代表特征判断,分支表示判断结果,叶节点代表类别。信息增益等标准用于衡量特征重要性。通过Python的scikit-learn库展示了构建鸢尾花数据集分类器的示例,包括训练、预测、评估和可视化决策树。最后,讨论了模型解释和特征重要性评估在优化中的作用。
|
4天前
|
机器学习/深度学习 算法 搜索推荐
R语言LASSO特征选择、决策树CART算法和CHAID算法电商网站购物行为预测分析
R语言LASSO特征选择、决策树CART算法和CHAID算法电商网站购物行为预测分析
|
4天前
|
算法 数据可视化 前端开发
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(下)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
12 0
|
4天前
|
算法 数据可视化 数据挖掘
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(上)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
12 0
|
5天前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【4月更文挑战第28天】在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过精确的数据预处理、选择合适的学习算法以及进行细致的参数调优来提升模型的性能。我们将介绍一系列实用的技术和策略,包括特征工程、模型评估、超参数调整以及使用集成学习方法来增强模型的泛化能力。通过这些方法,读者将能够更好地理解并应用机器学习技术来解决实际问题。
|
7天前
|
算法
数据结构与算法-AVL树入门
数据结构与算法-AVL树入门
10 0
|
7天前
|
算法
数据结构与算法-Trie树添加与搜索
数据结构与算法-Trie树添加与搜索
5 0
|
7天前
|
机器学习/深度学习 数据采集 算法
共享单车需求量数据用CART决策树、随机森林以及XGBOOST算法登记分类及影响因素分析
共享单车需求量数据用CART决策树、随机森林以及XGBOOST算法登记分类及影响因素分析
14 0