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

在Sage中如何指定有向图关联矩阵的顶点与边顺序?

如何在SageMath中指定有向图关联矩阵的顶点和边顺序

刚好我之前也折腾过类似的需求,在SageMath里自定义关联矩阵的顶点行顺序和边列顺序其实非常直接,咱们结合你的具体例子一步步来:

1. 指定顶点顺序(行的排列)

incidence_matrix方法的vertices参数就是用来控制行顺序的!你只需要把想要的顶点顺序做成一个列表,传给这个参数就行。比如你想要的顺序是s、x、y、z、t,就直接传vertices=['s', 'x', 'y', 'z', 't'],这样矩阵的每一行就严格按照这个顺序对应顶点。

2. 指定边顺序(列的排列)

要让边的列顺序和你最初定义的edges列表完全一致,你只需要把这个edges列表直接传给incidence_matrix的edges参数即可。这里要注意,Sage会自动识别带权重的边元组,不需要额外处理权重部分。

完整代码示例

# 定义你的边集
edges = [('s', 'x', 3), ('s', 'y', 5), ('x', 'y', 2), ('x', 'z', 6), 
         ('y', 'x', 1), ('y', 'z', 4), ('y', 't', 6), ('z', 't', 2), 
         ('t', 's', 3), ('t', 'z', 7)]
# 创建有向图
g = DiGraph(edges)

# 生成指定顺序的关联矩阵
incidence_mat = g.incidence_matrix(
    oriented=True,  # 保持有向图特性:-1表示出边,1表示入边,0表示无关
    sparse=False,   # 若需要稠密矩阵可设为False,默认是稀疏矩阵
    vertices=['s', 'x', 'y', 'z', 't'],  # 指定顶点行顺序
    edges=edges     # 指定边列顺序,与你定义的edges列表完全一致
)

# 查看结果
print(incidence_mat)

顺序验证

  • 行顺序:从上到下依次对应s、x、y、z、t,完全符合你的要求;
  • 列顺序:从左到右严格遵循你给定的edges列表的顺序,第一列对应('s','x',3),第二列对应('s','y',5),以此类推。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:20:19