2016華爲軟件精英挑戰賽:賽題及其答疑彙總

注:本文文字均摘自官方指定網站和論壇,權威且可信,答疑見中間部分,非常全,衆玩家可放心閱讀。

同時文末給出了包括自己在內的諸多玩家的解法。

前言

賽題源自“未來網絡”業務發放中的路由計算問題。算路問題屬於基礎算法問題,在圖論、網絡、交通等各個方面均有着廣泛的研究與運用,裏面不乏一些經典的算法,例如最短路中的廣度優先搜索,Dijkstra算法等。網絡算路問題的更優算法實現對於網絡資源高效配置具有重要價值。
1 問題定義
給定一個帶權重的有向圖G=(V,E),V爲頂點集,E爲有向邊集,每一條有向邊均有一個權重。對於給定的頂點s、t,以及V的子集V',尋找從s到t的不成環有向路徑P,使得P經過V'中所有的頂點(對經過V'中節點的順序不做要求)。
若不存在這樣的有向路徑P,則輸出無解,程序運行時間越短,則視爲結果越優;若存在這樣的有向路徑P,則輸出所得到的路徑,路徑的權重越小,則視爲結果越優,在輸出路徑權重一樣的前提下,程序運行時間越短,則視爲結果越優。
說明:
1)圖中所有權重均爲[1,20]內的整數;
個人吐槽:沒有復權值,經典Dijkstra算法可能適用
2)任一有向邊的起點不等於終點;
個人吐槽:極端情況被踢出,減小難度
3)連接頂點A至頂點B的有向邊可能超過一條,其權重可能一樣,也可能不一樣;
個人吐槽:不一樣就取較小者
4)該有向圖的頂點不會超過600個,每個頂點出度(以該點爲起點的有向邊的數量)不超過8;
5)V'中元素個數不超過50;
個人吐槽:指定點集越多,耗時越誇張,難點之一,優化點之一。
6)從s到t的不成環有向路徑P是指,P爲由一系列有向邊組成的從s至t的有向連通路徑,且不允許重複經過任一節點;
7)路徑的權重是指所有組成該路徑的所有有向邊的權重之和。
2 輸入與輸出
輸入文件格式
以兩個.csv 文件(csv 是以逗號爲分隔符的文本文件)給出輸入數據,一個爲圖的數據(G),一個爲需要計算的路徑信息(s,t,V')。文件每行以換行符(ASCII'\n'即0x0a)爲結尾。

1)圖的數據中,每一行包含如下的信息:
LinkID,SourceID,DestinationID,Cost
其中,LinkID 爲該有向邊的索引,SourceID 爲該有向邊的起始頂點的索引,DestinationID爲該有向邊的終止頂點的索引,Cost 爲該有向邊的權重。頂點與有向邊的索引均從0 開始 編號(不一定連續,但用例保證索引不重複)。
2)路徑信息中,只有一行如下數據:
SourceID,DestinationID,IncludingSet
其中,SourceID 爲該路徑的起點,DestinationID 爲該路徑的終點,IncludingSet 表示必須經過的頂點集合V',其中不同的頂點索引之間用'|'分割。
輸出文件格式
輸出文件同樣爲一個.csv 文件。
1)如果該測試用例存在滿足要求的有向路徑P,則按P 經過的有向邊順序,依次輸出有向邊的索引,索引之間用'|'分割;
2)如果該測試用例不存在滿足要求的有向路徑P,則輸出兩個字符NA;
3)只允許輸出最多一條有向路徑。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章