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

使用Python的NetworkX生成指定节点邻接矩阵的问题求助

问题解决:生成预期的邻接矩阵与节点图

问题分析

你的代码核心问题在于加边逻辑完全不匹配N=2的场景:

  • 循环中u的取值为0和1,全部进入第一个条件分支u % (2 * N) < N,但计算出的v值(如u-2*N、u-N)均为负数,对应的节点不存在,因此没有任何边被添加,导致邻接矩阵全为0,节点图是孤立节点。
  • 节点编号使用u+1,生成的是节点1、2,和你提到的节点0、1有偏差,但这不是核心问题。

修正代码

针对N=2的场景,直接简化逻辑生成预期的相连节点与邻接矩阵:

import networkx as nx
N = 2

# 生成符合预期图的节点位置(左右排列)
def pos():
    yield (0, 0)
    yield (1, 0)

G = nx.Graph()
it_pos = pos()
# 添加节点0、1
for u in range(N):
    G.add_node(u, pos=next(it_pos))

# 添加节点间的边(符合预期图的连接)
G.add_edge(0, 1)

# 绘制可视化图
nx.draw(G, nx.get_node_attributes(G, 'pos'), with_labels=True, font_weight='bold')
# 获取邻接矩阵
A = nx.adjacency_matrix(G).todense()
print(A)

输出结果

运行后得到的邻接矩阵为:

matrix([[0, 1],
        [1, 0]])

节点可视化图会显示两个相连的节点(0和1),与预期一致。

扩展说明

如果你的“特定编号规则”是针对更大规模的网络(而非仅N=2),需要明确规则细节后调整条件分支中的v计算逻辑,确保生成的v对应已存在的节点。当前代码中的条件判断逻辑更适合周期性扩展的大型网络,但不适用于N=2的基础场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:30:41