我正在使用基于networkx的图形库的python脚本。我创建了一个层次结构,其中包含相互键入的不同图形。在其中一张图中,我希望边缘具有属性,例如名称。当我这样做时,我收到一条消息说同构性已破坏,因为键入它的图形不具有完全相同的边属性。
我知道这可能不是设计regraph的目的,但是有没有一种方法可以在层次结构的图形中指定边属性,或者是一种既考虑模式又考虑节点名称的规则?
我已经尝试过将空属性添加到层次结构中的其他图形,这是行不通的。
hierarchy = rg.NetworkXHierarchy()
g_type = nx.DiGraph()
g_type.add_nodes_from(['list', 'number'])
g_type.add_edges_from([('list', 'number')])
g_obj = nx.DiGraph()
g_obj.add_nodes_from(['A', 'a'])
rg.add_edge(g_obj, 'A', 'a', attrs={'name': 'input'})
hierarchy.add_graph('type', g_type)
hierarchy.add_graph('obj', g_obj)
hierarchy.add_typing('obj', 'type', {'A': 'list', 'a': 'number'})
我希望图的边缘具有属性名称,但这会导致同构错误。
答案 0 :(得分:0)
对于有兴趣的人,这是我设法解决问题的方法:
hierarchy = rg.NetworkXHierarchy()
g_type = nx.DiGraph()
g_type.add_nodes_from(['list', 'number'])
g_type.add_edges_from([('list', 'number')])
rg.add_edge_attr(g_type, 'list', 'number', attrs={'name': rg.UniversalSet()})
g_obj = nx.DiGraph()
g_obj.add_nodes_from(['A', 'a'])
rg.add_edge(g_obj, 'A', 'a', attrs={'name': 'input'})
hierarchy.add_graph('type', g_type)
hierarchy.add_graph('obj', g_obj)
hierarchy.add_typing('obj', 'type', {'A': 'list', 'a': 'number'})
您只需添加具有rg.UniversalSet作为值的相同属性。