数据结构和算法python语言描述——红绿灯问题自我总结

本文介绍了如何将红绿灯问题抽象为图的顶点分组问题,探讨了使用贪心算法解决该问题的思路,强调了算法在面对复杂问题时寻找‘可接受解’的重要性。同时,讨论了将算法转化为Python代码时的颜色、分组和图结构表示,并总结了算法设计中的枚举法、贪心法、分治法、回溯法和动态规划法等常见模式。
摘要由CSDN通过智能技术生成

数据结构和算法python语言描述

关于图的顶点分组和算法(交叉路红绿灯问题)
将红绿灯问题抽象成图数结构上的顶点分组,要求相邻顶点不能分在一起的原则,要求分组尽量少。用枚举法的组合数未顶点数的指数函数,代价过高
考虑一种简单的算法:贪婪算法。贪心算法是一种典型的算法设计思路,其中的基本先想法是更具当时掌握的信息,尽可能的向得到的解的方向前进,直到不能继续在换一个方向。这样可能不能找到最优解,但是能找到“可接受的”解。

图1.2 为一个交叉路口的道路状况,E和C为单行道

这里写图片描述
算法的梗概如下:
输入:图1.3 # 记录途中的顶点连接关系
集合verts保存图中所有的顶点 # 建立初始状态
设置集合groups为空集 # 用于记录得到的分组,元素为顶点的集合
while存在未着色的顶点: # 每次迭代使用贪心算法找到一个新的分组
选一种新的颜色
在为着色的顶点找中尽可能多的无连线的点着色
记录新的着色的顶点组

& 算法的精化和python的描述
将上述的伪代码转化为python函数时,如何表示颜色,如何记录得到的分组,如何表示图结构?在书中使用顺序的整数表示颜色,用集合来表示分组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值