簡體   English   中英

Python-Dijkstra的大規模算法

[英]Python - Dijkstra's algorithm on a large scale

我有一個大型網絡,大約有400個節點,我要做的是計算您可以在網絡上進行的每條可能的路由。 這意味着要遍歷節點,並且要計算從節點1到節點2,節點1到節點3到節點1到節點400的路由的總權重。

然后,從節點2到節點3,從節點2到節點4到節點2到節點400。

(僅供參考,我每天使用HTML / CSS時對python的了解非常有限)

我一直在使用發現的以下代碼: http : //bytes.com/topic/python/insights/877227-dijkstras-algorithm-finding-shortest-route

但是,由於我的網絡規模很大,計算從任何節點到任何節點的每種可能方式都需要非常非常長的時間。

據我所鏈接的算法的理解,它依次從起始節點訪問每個節點,並為其賦予一個值,該值是從起始處到達該節點所需的權重(我想它還記錄了到到達每個特定節點?)。 如果找到到達該節點的較短路徑,它將覆蓋之前的路徑。 一旦到達目的地,它將停止並返回結果。

我認為,如果可以對腳本進行少量編輯,是否可以像往常一樣訪問所有節點,並打印出最短路徑並權衡每個路徑的報告,而不是停在特定的目的地? 這樣,該算法僅需運行400次,每個可能的起始位置運行一次。

感謝您提供的任何建議,我希望這很清楚!

您可以使用Python圖形模塊NetworkX ,該模塊具有所有對最短路徑( 加權未加權 )的方法。 從某種意義上來說,它們是經過優化的,因為它們使用最知名的算法來執行此類任務。

您所建議的調整只會改變其對可能路線進行排序的方法,僅此而已。 您需要的是通過使用假設來徹底改變遍歷,而且djikstra實際上在大規模上並不是那么有效。

暫無
暫無

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

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