首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pygraph中使用超图,需要验证示例的正确性

在pygraph中使用超图,需要验证示例的正确性
EN

Stack Overflow用户
提问于 2012-03-12 03:57:42
回答 1查看 3K关注 0票数 0

我试着在pygraph中使用超图,下面是我插入的一个简单示例:

代码语言:javascript
复制
hgr = hypergraph()
hgr.add_nodes(["A1", "B1", "C1", "D1"]) 
hgr.add_nodes(["A2", "B2", "C2", "D2"])
hgr.add_nodes(["A3", "B3", "C3", "D3"])
hgr.add_nodes(["A4", "B4", "C4", "D4"])

hgr.add_hyperedge(("A1", "A2", "A3", "A4"))
hgr.add_hyperedge(("B1", "B2", "B3", "B4"))
hgr.add_hyperedge(("C1", "C2", "C3", "C4"))
hgr.add_hyperedge(("D1", "D2", "D3", "D4"))

h_dot = write(hgr)
h_gvv = gv.readstring(h_dot)
gv.layout(h_gvv,'dot')
gv.render(h_gvv, 'png', 'hypergraph.png')

我得到的图片是(点击查看全尺寸版本):

请确认这是使用pygraph创建超图形的正确方法。

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-05-05 19:25:11

由于每条超边不是节点的集合,而是表示为一个节点,因此您应该像对节点所做的那样,对hyperedges使用唯一(简单)的标识符,然后将它们link到节点。

考虑一下Wikipedia article for hypergraphs中的示例图

要在pygraph中创建此图形,可以执行以下操作:

代码语言:javascript
复制
from pygraph.classes.hypergraph import hypergraph
from pygraph.readwrite.dot import write_hypergraph

h = hypergraph()

h.add_nodes(['v1', 'v2', 'v3', 'v4', 'v5', 'v6', 'v7'])
h.add_hyperedges(['e1', 'e2', 'e3', 'e4'])

h.link('v1', 'e1')
h.link('v2', 'e1')
h.link('v3', 'e1')
h.link('v2', 'e2')
h.link('v3', 'e2')
h.link('v3', 'e3')
h.link('v5', 'e3')
h.link('v6', 'e3')
h.link('v4', 'e4')

with open('hypergraph.dot', 'w') as f:
    f.write(write_hypergraph(h))

它将使用dot生成此图像输出

我想这是一个正确的表达,但不像维基百科上的图片那样直观。如果您正在追求超图的可视化,那么您应该查看this question

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9658373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档