![](/img/trans.png)
[英]What data structures should I use if I want to implement a meet in the middle attack in C++?
[英]C++ - what data structures for Dijkstra's should I use?
任務是:
找到兩個城市之間的最短路徑。 城市與單行道相連。 城市以這種方式存在於 a.txt 文件中:
// 從 // // 到 // // 距離 //
例如:
倫敦 格拉斯哥 180
曼徹斯特利物浦 80
約克劍橋 415
約克曼徹斯特 260
格拉斯哥約克 315
格拉斯哥 曼徹斯特 315
給定源城市 S 和目標城市 T,找到最短路徑。 計算距離並檢索所采用的路徑。
問題是:我根本不允許使用任何 STL 容器。 不能使用 std::list、std::vector、std::pair、std::set 等容器。但是,我能夠使用我自己實現的動態數據結構。
我不知道我應該實現哪些數據結構以及如何實現它們。 另外,我應該使用優先級隊列、堆還是其他東西? 還想知道鄰接表或鄰接矩陣。
我真的不在乎解決方案是否經過優化。
我一直在谷歌搜索,但我發現所有 Dijkstras 算法實現都使用大量 STL 容器,我不允許使用這些容器。
任何提示、提示或鏈接都將受到贊賞。 謝謝你。
要編寫 Dijkstra 的最短路徑算法,您只需要實現一個優先級隊列(最小堆)。
我首先推薦堆。 集合的實現涉及(幾乎)平衡的二叉搜索樹,如 AVL 或紅黑樹或 Treap(笛卡爾樹),這樣的代碼比實現堆要難幾個數量級。 此外,所有這些解決方案都具有相同的運行時間O(log n)
,因此更容易編碼的解決方案首先出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.