簡體   English   中英

使用堆棧查找加權圖的最短路徑

[英]Finding Shortest Paths of weighted graph using stacks

我將得到這種圖形的某種形式,如下圖所示。 我已經搜索了一些算法,但似乎無法解決它們。 實際上,使用Floyd-Warshall算法是有可能的,但是不幸的是,我只允許使用堆棧(而不是矩陣)。 我還尋找了Dijkstra的算法,但是無法解決問題。 圖片

顯然,我的目標是使所有最短的路徑從一個點到達另一點。 正如我提到的,我將以向量字符串的形式從堆棧中輸出解決方案。 我想我必須訪問每個節點,而我最擔心的是在搜索過程中堆積成一個循環甚至失去軌道。 另請注意,這不是有向圖 如果Dijkstra的算法在這里適用,那么如果有人指導我,我將不勝感激,我將非常感謝您提供的任何幫助,建議,想法,甚至是在搜索時不會陷入混亂或失去軌道的願景。

提前致謝。

如果您只想獲得從某個選定節點到所有其他節點的所有最短路徑的值,則可以使用Dijkstra算法-它基本上是增強BFS。 一旦您了解了BFS背后的想法,您對Dijkstra的理解就不會有任何問題。 實際上,用單個queue實現BFS比使用arrays要容易得多。 您必須使用stacks是否有一些正式的要求(學校嗎?)。 如果是這樣的話,那是很奇怪的。。。但是,您仍然可以用完全無效的方式模擬一個有兩個stacksqueue

(順便說一下,DFS使用堆棧)

如果要擁有從所有節點到所有其他節點的所有最短路徑,則可以從每個節點運行Dijkstra,也可以嘗試使用Bellman-Ford,它雖然速度更快,但較難掌握。

如果只想從單個節點到其他節點的最短路徑,則(位擴展)雙向BFS將是最佳選擇。

如果您有Silverlight插件,則可以50%的試用率來嘗試這個小應用程序,該程序由我編寫: http : //grzesiaka.home.pl/GraphTutor/,您會發現您對算法感興趣的步驟逐步展示(數據結構和偽代碼)。 希望它能對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM