如何绘制网络图的补图?
在Graphviz里面有没有什么函数可以做到这一点?如果没有,有没有其他免费的软件可以实现这个功能?
2 个回答
0
自己计算补集,然后把它画出来。
5
如果你想在graphviz中绘制图形,我建议你使用一个叫做networkx的Python库来计算图的补图。Networkx是一个非常棒的库,专门用于图论分析;而且它和graphviz的连接也非常顺畅。
(简单来说,图的补图就是想象一个图A',它和图A有相同的节点,但所有可能的边都连接在一起,也就是说,每个节点都和其他所有节点相连;然后从A'中去掉A里的边,剩下的就是A的补图,记作A')
import networkx as NX
G = NX.gnm_random_graph(10, 10) # create a random graph w/ 10 nodes, 10 edges
G_cmpl = NX.complement(G) # get the complement of graph 'G'
# to render it in graphviz:
NX.write_dot(G_cmpl, "somefilename.dot")