我使用C#.NET進行編程。在實現Dijkstra算法時,通常使用優先級隊列或堆來確定下一個要訪問的節點。不幸的是,C#本身不提供這些數據結構。我不能,也不想在數組上實現Dijkstra(這很慢)。什麼是最好的選擇?Dijkstra算法實現的最佳數據結構是什麼? C#
回答
從.NET 2.0開始,您可以使用SortedDictionary<K,V>
來實現您的優先級隊列。它的Keys
屬性返回一個有序集合。您可以提取其第一個項目以獲取代表您的「下一個最佳」邊緣的條目的關鍵字。 V
需要是List<T>
,其中T
是您存儲在Dijkstra隊列中的元素。
@Patryk'myDict.Keys.First()'讓你獲得列表的關鍵;刪除它的第一個項目,如果列表爲空,則刪除該項。 – dasblinkenlight
我可以找到某處它是什麼時間複雜性? (First()方法) – Patryk
@Patryk是的,它在[docs](http://msdn.microsoft.com/en-us/library/f7fta44c.aspx)中提及(間接,但是):「SortedDictionary
有幾個優先級隊列實現爲.NET提供包括本
http://www.itu.dk/research/c5/
PowerCollections提供了相當數量的集合類不存在的基類庫,雖然這個答案的評論
https://stackoverflow.com/a/102434/141172
表明PowerCollections中的優先級隊列沒有最佳實現。
你可以看看這個鏈接。它支持實施與C#Generics
- 1. 實現此算法的最佳方法是什麼?
- 2. Dijkstra的算法實現
- 3. 什麼是你知道的最快的Dijkstra實現(用C++)?
- 4. 最佳結構圖在序言中實現Dijkstra
- 5. 實現這種結構的最佳方式是什麼?
- 6. 實現數據庫同步的最佳方法是什麼?
- 7. 實現算法和數據結構的
- 8. Apache Spark - 三維數據的最佳數據結構是什麼
- 9. 什麼是實現WebSphere的RTC構建的最佳方法
- 10. 什麼是最好的自動完成/建議算法,數據結構[C++/C]
- 11. 實現工作集合的最佳算法是什麼?
- 12. 用enum實現層次結構的最佳C#模式是什麼?
- 13. 什麼是存儲位置信息的最佳數據結構?
- 14. 什麼是C#中固定深度樹狀數據的最佳數據結構?
- 15. 什麼是Dijkstra算法中的INT_MAX?
- 16. 線段搜索的最佳數據結構是什麼?
- 17. 安全導航運算符的最佳實現是什麼
- 18. 什麼是最近n秒內存儲數據點的最佳數據結構
- 19. 需要雙向1到N映射的數據的最佳數據結構/算法是什麼?
- 20. C++什麼是對象「樁」的二維數組的最佳數據結構?
- 21. Multigraph的最佳實現是什麼?
- 22. 什麼是一組單詞的最佳數據結構?
- 23. 什麼是租賃系統的最佳數據庫結構?
- 24. A *什麼是開放集合的最佳數據結構?
- 25. 什麼是地圖樹的最佳數據結構
- 26. 什麼是存儲表格數據結構的最佳類型?
- 27. 什麼是文本自動完成的最佳數據結構?
- 28. 什麼是我們的最佳數據庫結構...:
- 29. 什麼是嵌入式文檔MongoDB的最佳數據結構?
- 30. 存儲此數據結構的最佳方式是什麼?
爲什麼 「關閉」 票最短路徑算法?這是一個很好的,可回答的問題... – dasblinkenlight
當你搜索'優先隊列或堆'和C#時,谷歌會說什麼? –
@dasblinkenlight沒有OP沒有顯示任何努力。通過快速搜索很容易找到大量的實現。還有一個可回答的問題不適合SO。 –