我有一张大型(加权、有向)图表(>100,000个节点),我想在该图表中计算大量的随机最短路径。因此,我想随机选择两个节点(假设为k次)并计算最短路径。其中一种方法是使用networkx或igraph模块,像下面这样使用for循环:
pairs=np.random.choice(np.arange(0,len(graph.nodes)), [k,2])
for pair in pairs:
graph.get_shortest_paths(pair[0],pair[1], weights='weight')
这种方法是可行的,但是需要花费很长时间。特别是与为特定源节点计算所有路径相比较。实质上,在每一次迭代中,该过程会重新加载图形并从头开始进行处理。那么是否有一种方法,可以从将图形结构加载到内存中并在每次迭代中不重复进行演算中受益,而无需计算所有最短路径(这将需要太长时间,因为这些将是n *(n-1)条路径)。
换句话说,我能否以有效的方式计算出所有最短路径的随机子集?