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

如何用图论/Numpy优化缠结网络问题?

问题描述

假设有一个m×n数组,每行的每个元素与下一行的某个元素存在一一对应“连接”。给定一个(m-1)×n的连接数组,每行是0到n-1的随机排列,第i行描述第i+1行与第i行的连接关系。例如[[0,2,1],[1,2,0]],第一行表示第0行的第0个元素连接到第1行的第0个索引,第0行的第1个元素连接到第1行的第2个索引,第0行的第2个元素连接到第1行的第1个索引。

期望输出:调整数组,让每个元素的连接对象处于同一列(对应缠结网络问题的目标效果)。

我的思路

我计划调整连接矩阵的各行,例如将[[0,2,1],[1,2,0]]调整为[[0,2,1],[1,0,2]]。但当行数较多时,调整第m+1行后需要调整后续所有行以保持连接关系,从下往上处理似乎是最优方式,但该过程计算成本很高。

我的代码
import numpy as np

np.random.seed(42)
array = np.random.random(1000*10001).reshape(10001,1000)
connections = np.zeros(1000*10000, dtype=int).reshape(10000,1000)
for i in range(10000):
    connections[i] = np.random.permutation(1000)
i_range = connections.shape[0]-2
indices = np.arange(i_range, -1,-1)

for i in indices:
    connections[i:] = connections[i:, connections[i]] # 这是计算成本最高的步骤
for i in range(connections.shape[0]):
    array[i+1] = array[i+1,connections[i]]
技术问询

我认为可以借助图论、Numpy功能或其他方法更高效地实现该需求,请问在Python中优化这段代码的最佳方案是什么?感谢您的帮助!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:57:12