You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

给定全图SciPy CSR距离矩阵时高效计算子图稀疏距离矩阵的方法

W子集k近邻CSR矩阵高效计算方案

核心设计目标

完全匹配带早停的最短路径计算逻辑:为每个W内的顶点计算最短路径时,一旦累计收集到k个属于W的邻点,立即终止该顶点的后续图遍历,避免全量计算冗余。

预处理步骤

  • 基于输入的SciPy CSR矩阵D,直接提取其indptr、indices、data数组,无需重复解析图结构
  • 构建长度为n的布尔标记数组is_W,对应顶点属于W的位置标记为True,整体遍历复杂度O(n)
  • 构建W顶点的索引映射w_idx_map,仅为属于W的顶点记录其在新矩阵E中的连续行/列索引,复杂度O(|W|)

带早停的批量最短路径计算

  • 为每个W内的源点初始化独立的小顶堆优先队列,存储从对应源点出发已发现的最短路径距离
  • 为每个源点维护已收集邻点计数collected_cnt,初始值为0
  • 全局统一推进遍历流程:
  • 从各源点的优先队列中弹出当前距离最小的顶点,若该顶点属于W且与当前源点不重合,则记录该源点到该顶点的最短距离,同时将collected_cnt加1
  • 当某源点的collected_cnt达到k时,直接清空该源点的优先队列,不再扩展该源点的任何后续邻接节点
  • 弹出顶点后,按照D的邻接表结构正常扩展邻居节点、更新堆内的距离值,直到所有源点的collected_cnt达到k

最终E矩阵构造

  • 将每个源点收集到的k个邻点,按最短距离升序排序
  • 按照SciPy CSR矩阵的标准结构(indptr、indices、data)组装最终矩阵,保证每行恰好包含k个非零条目,格式与输入的D完全兼容

效率对比

  • 相比全量Dijkstra方案:早停机制下仅需遍历从源点出发、到第k个W类邻点为止的最短路径覆盖范围,通常仅需遍历全图10%~20%的节点,算力消耗降低80%以上,且无需为非W顶点分配全量距离数组,内存占用仅为原方案的1/|W|
  • 相比矩阵切片方案:计算的是W顶点之间的图上最短路径距离,不受原始D中W内部无直接边的限制,可保证每行恰好k个邻点
  • 相比逐点独立BFS/最短路方案:所有源点共享同一份D的邻接表结构,避免重复加载、重复遍历无关节点的开销,批量计算的缓存命中率更高

内容的提问来源于stack exchange,提问作者Skrodde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 01:15:08