数据结构和算法python语言描述
关于图的顶点分组和算法(交叉路红绿灯问题)
将红绿灯问题抽象成图数结构上的顶点分组,要求相邻顶点不能分在一起的原则,要求分组尽量少。用枚举法的组合数未顶点数的指数函数,代价过高
考虑一种简单的算法:贪婪算法。贪心算法是一种典型的算法设计思路,其中的基本先想法是更具当时掌握的信息,尽可能的向得到的解的方向前进,直到不能继续在换一个方向。这样可能不能找到最优解,但是能找到“可接受的”解。
算法的梗概如下:
输入:图1.3 # 记录途中的顶点连接关系
集合verts保存图中所有的顶点 # 建立初始状态
设置集合groups为空集 # 用于记录得到的分组,元素为顶点的集合
while存在未着色的顶点: # 每次迭代使用贪心算法找到一个新的分组
选一种新的颜色
在为着色的顶点找中尽可能多的无连线的点着色
记录新的着色的顶点组
& 算法的精化和python的描述
将上述的伪代码转化为python函数时,如何表示颜色,如何记录得到的分组,如何表示图结构?在书中使用顺序的整数表示颜色,用集合来表示分组。