如何绘制网络图的补图?

2 投票
2 回答
2401 浏览
提问于 2025-04-15 18:02

在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")

撰写回答