graph-tool - 在图形工具中查找源和目标之间的所有路径,返回边而不是顶点
问题描述
堆栈溢出!
我有一个有向图,需要找到源顶点和目标顶点之间的所有路径。在几个顶点之间,有多个边。使用图形工具,可能会建议使用graph_tool.topology.all_paths(g, source, target)
,但是,此顶点迭代器中包含的列表仅用于顶点;请参阅下面的一些输出。由于顶点之间存在多条边,因此会出现多次路径,例如[ 0 4 8 13]
and[0 4 13]
我无法区分这些路径。
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
我需要边缘形式的路径,以便能够沿每条路径迭代边缘属性。为了解决这个问题,我只能想到一种方法(除了重写大量代码):创建中间顶点以避免在任意两个顶点之间出现多条边。对于两个顶点之间的任何平行边,它们都将连接到各自的唯一中间顶点,以唯一地定义从graph_tool.topology.all_paths(g, source, target)
.
有没有办法以源顶点和目标顶点之间的边的形式返回所有路径?
解决方案
最近已将其添加到图形工具中:https ://git.skewed.de/count0/graph-tool/commit/5457d04f5f37c7a49e87b67c666c1a865e206b9a
您只需要传递edges=True
参数:
for p in all_paths(g, u, v, edges=True):
for e in p:
print(e) # e is an edge descriptor
推荐阅读
- browser - 基于真实浏览器的负载测试或浏览器级用户测试
- flutter - 将长文本包装到容器中,导致溢出 Flutter
- docker - chown(容器文件)的执行被挂起
- laravel - 如何在 laravel 中使用 Spatie 为所有使用播种机的用户添加分配角色?
- ios - 如何使用 swifty 变量解析这种类型的 Json swift,我希望将单元号转换为数组并从标签中获取详细信息
- ios - 错误:参数类型“日期?” 不符合预期类型“ReferenceConvertible”
- java - 使用 Morphia 的 MongDB Atlas SRV 连接
- php - Codeigniter(3) 表单验证对于 GET 方法总是返回 FALSE
- javascript - 在javascript中使用split函数后如何推送变量?
- android - 找不到 react-native-fs 路径?