【发布时间】:2020-06-22 03:16:17
【问题描述】:
下图的边为[(0,1),(1,2),(3,3),(3,4),(1,1),(5,5),(5,6)],应该有如下连接的组件顶点集:[0, 1, 2], [3, 4], [5, 6]。
图表设置
import graph_tool as gt
from graph_tool.topology import label_components
edges = [(0,1),(1,2),(3,3),(3,4),(1,1),(5,5),(5,6)]
g = gt.Graph()
g.set_directed(False)
g.add_edge_list(edges)
从连通分量中提取顶点
lc = label_components(g)
[gt.GraphView(g, vfilt=lc[0].a == _).get_vertices() for _ in range(len(lc[1]))] # [1]
输出
[array([0, 1, 2], dtype=uint64), array([3, 4], dtype=uint64), array([5, 6], dtype=uint64)]
我的问题是,这真的是最好的方法吗? [1] 似乎比必要的更复杂。也许文档中有一个我没有找到的函数。
【问题讨论】:
-
请注意Code Review 的存在,这是一个致力于通过审查改进工作代码的网站。至关重要的是,在发布之前阅读此内容: codereview.stackexchange.com/help/how-to-ask
-
非常感谢,但需要明确的是,我的问题实际上是为了在文档中找到有用的功能,而不是寻求代码改进。
-
请注意,您并没有真正在问题的“图表设置”部分设置图表。不过,请参阅下面的建议解决方案。
-
哎呀 - 忘记添加边缘列表
-
感谢您的回答 - 我明天早上会审查
标签: python graph-tool