Graphviz文件与图同构

Graphviz文件与图同构,graph,graphviz,Graph,Graphviz,问题如下:给定两个以.dot文件表示的二部有向图,是否有工具可以检查这两个图是否同构?有工具可以检查两个图是否同构。一种可能性是一个名为的库,它具有到R和Python的更高级接口。不幸的是,目前无法读取点文件,因此您必须将图形转换为其他格式(例如,标准边列表格式即可)。转换后,您可以在Python中执行以下操作: >>> from igraph import load >>> g = load("my_graph.txt", format="edgelist"

问题如下:给定两个以.dot文件表示的二部有向图,是否有工具可以检查这两个图是否同构?

有工具可以检查两个图是否同构。一种可能性是一个名为的库,它具有到R和Python的更高级接口。不幸的是,目前无法读取点文件,因此您必须将图形转换为其他格式(例如,标准边列表格式即可)。转换后,您可以在Python中执行以下操作:

>>> from igraph import load
>>> g = load("my_graph.txt", format="edgelist")
>>> g2 = load("my_other_graph.txt", format="edgelist")
>>> g.isomorphic(g2)
False

另一个选择是,它也是一个Python包。它可以本机读取点文件,但它是用纯Python实现的,因此它往往比大部分用C实现的要慢。因此,一般来说,如果图形相对较小或不太可能同构,您可能会更好,由于后一种情况通常在检查两个图的度分布时提前出现。(如果它们同构,则度分布必须相等)。如果这两个图很大,并且它们应该是同构的,那么您可能会更好地使用,因为在这种情况下,证明同构在计算上更为密集。

Graphviz是一个布局应用程序;但是,至少在python中,有一个与Graphviz紧密集成的图形分析库,称为“”

一般来说,您是否应该使用Networkx或其他图形分析库可能只是个人选择的问题;但是,在这种情况下,Networkx与其他图形分析库相比有一个显著的优势,即它可以直接读取点文件(不完全是本机支持,但它将它们转换为本机图形对象)

Networkx的安装非常简单(主要OSs的二进制文件),如果您使用python安装了“”,则安装起来更容易:

easy_install networkx

import networkx as NX

# convert dot files to the graph analysis package's native graph object:
G1 = NX.read_dot("/maindir/mydir/my_bipartite_graph1.dot")
G2 = NX.read_dot("/maindir/mydir/my_bipartite_graph1.dot")

# returns 'True'/'False'
NX.DiGraphMatcher.is_isomorphic(G1 G2)