我正在处理非常大(但稀疏)的度量标准图G
,其中有N = 20000
个顶点,但没有那么多边,允许存储(使用scipy.sparse.matrix
类)相应的{ {1}}权重矩阵。
我会对最短路径长度矩阵(图上的距离)感兴趣,但我无法存储N x N
距离矩阵(它不再稀疏)。因此,我选择了少量N x N
个顶点,我有兴趣计算这些顶点之间的k
成对最短路径距离。
函数k x k
(https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.csgraph.dijkstra.html)可能会被调整(使用参数scipy.sparse.csgraph.dijkstra
)但它会计算点到图上所有顶点的点之间的距离 - 所以{{1矩阵。随着运行时间的过度增长,它也可能导致内存问题。
基本上我可以调用一个函数indices
来给我一个图k x N
中顶点i和j之间的最短路径长度。我知道我可以自己实现它,但我更愿意依赖它的优化版本,对我来说这似乎没有在一些标准的Python库(numpy,scipy ......)中实现。
PS:另外,如果你知道一个Python库利用知道dijkstra(G, i, j)
是一个度量图,那么例如两个连接顶点之间的最短路径是相应边的权重等它会提供非常丰富的信息: - )
PS2:请注意,我不需要最短的路径。只有最短的路径长度。
PS3:为了解决问题,这些图表是根据三角形3D形状构建的。这就是为什么这些是稀疏度量图。