1. 程式人生 > >數據結構:五岔路口交通管理紅綠燈設計

數據結構:五岔路口交通管理紅綠燈設計

enter width ssp 固定 依次 time target 岔路口 選擇

技術分享圖片 我們可以知道這是一個“圖”的著色問題:設置交通燈的問題等價於對圖的頂點染色問題,要求對圖上的每一個頂點染一種顏色,並且要求有線相連的兩個頂點不能用同一種顏色。 首先要考慮,為什麽可行路線是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:我只是標出了度數,然後根據頂點的度數進行排序,依次對度數最大的頂點進行塗色,最後的塗色顏色數目,就是我們需要的設定的交通燈的顏色數目,連線的不能塗同一個顏色,這樣來保證不沖突

數據結構:五岔路口交通管理紅綠燈設計