编程语言
首页 > 编程语言> > python-为什么在网络x中,一颗恒星比Dijkstra还要快,甚至启发式算法设置为“无”

python-为什么在网络x中,一颗恒星比Dijkstra还要快,甚至启发式算法设置为“无”

作者:互联网

这是我上一个问题的更新版本.我在Jupyter笔记本电脑的两点(您可以在现在的任何网络上尝试)之间在NetworkX中运行这两种算法.结果表明,即使启发式算法为“无”,“ star”也要快得多.我认为“无”表示它是Dijkstra.我错了吗?

import osmnx as ox
import networkx as nx
G = ox.graph_from_place('Manhattan, New York, USA', network_type='drive')
#change to a simple network in order to run Astar
G_simple=nx.Graph(G)

Dijkstra:

%%time
nx.dijkstra_path(G_simple, 42434910, 595314027,  weight='length') #the node is random selected from nodes in the graph

计算时间为:

CPU times: user 15.4 ms, sys: 1.86 ms, total: 17.2 ms
    Wall time: 17.1 ms

一个明星:

%%time
nx.astar_path(G_simple, 42434910, 595314027, heuristic=None, weight='length')

计算时间为:

CPU times: user 8.8 ms, sys: 313 µs, total: 9.12 ms
Wall time: 9.18 ms

解决方法:

到达目标节点时,正在使用的Dijkstra implementation NetworkX不会停止. A *实现可以.

标签:a-star,dijkstra,networkx,python,time
来源: https://codeday.me/bug/20191025/1931181.html