码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构:五岔路口交通管理红绿灯设计

时间:2018-03-03 18:14:51      阅读:442      评论:0      收藏:0      [点我收藏+]

标签:不同   岔路口   解法   man   head   数据   不能   comm   https   

技术分享图片
我们可以知道这是一个“图”的着色问题:设置交通灯的问题等价于对图的顶点染色问题,要求对图上的每一个顶点染一种颜色,并且要求有线相连的两个顶点不能用同一种颜色。
首先要考虑,为什么可行路线是13条?当然可以通过穷举得出,如果用公式:则是:
技术分享图片或者技术分享图片
注:一条路线必须包括一出一进两个方向
第一种答案的解法:
一、固定E为入口,则有C_4^1=4的可能;
二、除去E(因为E只有一个入向),剩下ABCD四个路口,然后因为C只有一个出方向,所以从剩下的ABD中选择一个入口,即C_3^1;
三、再从剩下的三个出口任选一个(包括C)组成出入路线:C_3^1?C_3^1 = 9;
        四、4+9=13,这便是最后答案。
 
第二种答案的解法:
一、考虑5个路口组成一出一进的路线,则有A_5^2=20种方案,
二、因为E只有入口,故去除以E为入口,ABD为出口的路线C_3^1=3种;
三、又因为C只有出口,所以除去以C为出口,ABD为入口的路线C_3^1=3种,
四、再去掉一种是C为入口,E为出口的路线,故20-3-3-1=13种。
 
 
接下来我们将得到的13个路线分别用不同的圆圈来表示,而交叉路线(通路之间的矛盾关系)用两个圆圈之间的连线来表示,则有这样的分析图:
技术分享图片
我们以第一个路线AB为例进行分析,当路线AB是通路时,可以发现路线BC、BD、DA、EA均与AB有交叉,因此将AB的圆圈与其他四个圆圈用线连接:
技术分享图片
同理,可以找出所有的连接线:
首先是AB、AC、AD的连接线:
技术分享图片
然后是BA、BC、BD的连接线:
技术分享图片
 
接下来是DA、DB、DC的连接线以及最后计算出每个顶点的度数(有多少条线,则度数即为所求):
技术分享图片
最后我们可以得到关于这个问题的图模型的表示,我们将这个顶点的度数进行排序,依次对度数最大的顶点进行涂色,最后的涂色颜色数目,就是我们需要的设定的交通灯的颜色数目。


1楼 hilljiang2017-07-02 18:18发表 [回复] [引用] [举报]

技术分享图片
请问根据度数涂色,那么如果3度的灯亮了,B→C和D→B和A→D三条路是可通行的,这明显车会相撞的啊
Re: 猫猫被注册了2017-08-28 20:56发表 [回复] [引用] [举报]
技术分享图片
回复hilljiang:我只是标出了度数,然后根据顶点的度数进行排序,依次对度数最大的顶点进行涂色,最后的涂色颜色数目,就是我们需要的设定的交通灯的颜色数目,连线的不能涂同一个颜色,这样来保证不冲突

数据结构:五岔路口交通管理红绿灯设计

标签:不同   岔路口   解法   man   head   数据   不能   comm   https   

原文地址:https://www.cnblogs.com/hjlweilong/p/8497152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!