使用 igraph 方法 `write_dimacs` 的问题
Problems using the method `write_dimacs` of igraph
我在使用 igraph python 库的方法 write_dimacs
时遇到问题:
由于某些我不明白的原因,当我尝试使用它时出现错误:KeyError: 'Attribute does not exist'
(请参阅下面的完整输出)。
这是在我的系统上重现错误的示例代码片段 (mac os x 10.10.5, python 3.5.1, python-igraph -0.7.1.post6):
from igraph import *
g = Graph.Read_Edgelist("graph3.txt")
print(g)
# This works fine
g.write_adjacency("graph4.txt")
# This gives the error
g.write_dimacs("graph5.txt")
如果我明确地将其他参数传递给该方法,我也会遇到同样的错误,例如:g.write_dimacs("graph5.txt", 1)
输出:
IGRAPH D--- 15 22 --
+ edges:
1->2 1->8 1->11 1->14 2->3 2->6 3->4 4->5 5->4 5->1 6->4 6->7 7->4 8->9 8->11
8->12 9->10 10->9 10->5 11->12 12->13 13->10
Traceback (most recent call last):
File "test.py", line 10, in <module>
g.write_dimacs("graph5.txt")
File "build/bdist.macosx-10.10-intel/egg/igraph/__init__.py", line 1676, in write_dimacs
KeyError: 'Attribute does not exist'
有人知道发生了什么事吗?
提前致谢。
write_dimacs
方法用于在DIMACS maximum flow problem format中编写igraph图。此格式要求您:
- 指定最大流问题的
source
顶点
- 指定最大流问题的
target
顶点
- 指定边的容量
源和目标顶点是根据图的 source
和 target
属性定义的。假定容量来自 capacity
边缘属性。 igraph 的文档在这里有一个错误:文档说如果缺少 capacity
属性,它会简单地假设所有容量都等于 1,但事实并非如此 - 您需要显式传递容量,或提供指定边缘容量的边缘属性的名称。
对于您的情况,最简单的方法如下:
g.write_dimacs("graph5.txt", source=0, target=1, capacity=[1]*g.ecount())
这里我简单地定义了两个任意顶点作为源和目标。
我在使用 igraph python 库的方法 write_dimacs
时遇到问题:
由于某些我不明白的原因,当我尝试使用它时出现错误:KeyError: 'Attribute does not exist'
(请参阅下面的完整输出)。
这是在我的系统上重现错误的示例代码片段 (mac os x 10.10.5, python 3.5.1, python-igraph -0.7.1.post6):
from igraph import *
g = Graph.Read_Edgelist("graph3.txt")
print(g)
# This works fine
g.write_adjacency("graph4.txt")
# This gives the error
g.write_dimacs("graph5.txt")
如果我明确地将其他参数传递给该方法,我也会遇到同样的错误,例如:g.write_dimacs("graph5.txt", 1)
输出:
IGRAPH D--- 15 22 --
+ edges:
1->2 1->8 1->11 1->14 2->3 2->6 3->4 4->5 5->4 5->1 6->4 6->7 7->4 8->9 8->11
8->12 9->10 10->9 10->5 11->12 12->13 13->10
Traceback (most recent call last):
File "test.py", line 10, in <module>
g.write_dimacs("graph5.txt")
File "build/bdist.macosx-10.10-intel/egg/igraph/__init__.py", line 1676, in write_dimacs
KeyError: 'Attribute does not exist'
有人知道发生了什么事吗?
提前致谢。
write_dimacs
方法用于在DIMACS maximum flow problem format中编写igraph图。此格式要求您:
- 指定最大流问题的
source
顶点 - 指定最大流问题的
target
顶点 - 指定边的容量
源和目标顶点是根据图的 source
和 target
属性定义的。假定容量来自 capacity
边缘属性。 igraph 的文档在这里有一个错误:文档说如果缺少 capacity
属性,它会简单地假设所有容量都等于 1,但事实并非如此 - 您需要显式传递容量,或提供指定边缘容量的边缘属性的名称。
对于您的情况,最简单的方法如下:
g.write_dimacs("graph5.txt", source=0, target=1, capacity=[1]*g.ecount())
这里我简单地定义了两个任意顶点作为源和目标。