根据节点值比较图形而不是networkx中的属性

时间:2017-10-24 18:09:36

标签: python networkx

我想要比较两个DiGraph个对象。我已经看了is_isomorphic,但它不符合我的需要,因为它只允许访问节点属性而不是节点本身,我想比较节点本身(使用他们的__eq__方法)并返回True如果所有节点和边都相等(我知道这个问题没有有效的算法,但我不介意我的问题的效率)。

这里要澄清一个代码示例,我正在寻找一个类似于are_graphs_equal的函数:

class MyClass(object):
    def __eq__(self, other):
        return True

x = MyClass()
y = MyClass()
g1 = DiGraph()
g2 = DiGraph()
g1.add_node(x, fill='red')
g2.add_node(y, fill='blue')
are_graphs_equal(g1, g2) # should return True

g1 = DiGraph()
g2 = DiGraph()
g1.add_path(y, x)
g2.add_path(x, y)
are_graphs_equal(g1, g2) # should return False since edges are different.

为了问题,假设MyClass是可以播放的。

谢谢!

0 个答案:

没有答案