數據結構:五岔路口交通管理紅綠燈設計
阿新 • • 發佈:2018-03-03
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:我只是標出了度數,然後根據頂點的度數進行排序,依次對度數最大的頂點進行塗色,最後的塗色顏色數目,就是我們需要的設定的交通燈的顏色數目,連線的不能塗同一個顏色,這樣來保證不沖突
數據結構:五岔路口交通管理紅綠燈設計