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

如何从LightGraphs.jl的Edge中自动提取顶点编号?

在LightGraphs.jl中从Edge提取顶点的正确方法

嘿,我刚好熟悉LightGraphs.jl的用法,你遇到的这个问题其实是因为Edge类型的访问逻辑和你习惯的方式不一样——它不是通过下标或者直接访问属性来获取顶点的,而是要用库提供的专用函数~

单个Edge的顶点提取

对于你代码里的edge1这个Edge对象,正确获取起点和终点的方式是使用src()和dst()函数:

g = cycle_graph(4)
path = a_star(g, 1, 3)
edge1 = path[1]

# 获取Edge的起点(对应你示例里的1)
start_node = src(edge1)
# 获取Edge的终点(对应你示例里的2)
end_node = dst(edge1)

为什么之前的方法无效?

  • edge1[1]不行:LightGraphs的Edge类型没有实现下标访问接口,所以不能用数组下标来取顶点
  • edge1.From不行:这个类型根本没有名为From的字段,这可能是你从其他编程语言的图库带来的习惯,LightGraphs的设计里是用src()(source的缩写)和dst()(destination的缩写)来处理的

快速提取完整路径的所有顶点

如果你最终目的是收集路径上所有节点的信息,其实不用逐个处理Edge,可以直接把整个路径的顶点序列提取出来:

# 先收集所有Edge的起点
path_nodes = [src(e) for e in path]
# 再加上最后一个Edge的终点,得到完整路径
push!(path_nodes, dst(last(path)))

# 此时path_nodes就是[1, 2, 3],正好是从1到3的完整节点路径

这样你就能直接拿到所有需要的节点,方便后续处理它们的相关信息啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:07:39