繁体   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