python中的Networkx min_weighted_vertex_cover返回整个集合而不是顶点覆盖

Posted

技术标签:

【中文标题】python中的Networkx min_weighted_vertex_cover返回整个集合而不是顶点覆盖【英文标题】:Networkx min_weighted_vertex_cover in python returns whole set instead of vertex cover 【发布时间】:2017-08-02 04:53:05 【问题描述】:

我有一个邻接矩阵Anodes = 0, 1, 2, 3, 4, 5

A = [[0,1,1,0,0,0],[1,0,1,1,0,0],[1,1,0,0,1,0],[0,1,0,0,1,1],[0,0,1,1,0,0],[0,0,0,1,0,0]]

我想找到这个图的最小权重顶点覆盖。我用

转换了这个邻接矩阵
g_n = nx.from_numpy_matrix(A)

和下面的函数来找到vectex覆盖

cover = nx.min_weighted_vertex_cover(g_n)

但是输出是

set([0, 1, 2, 3, 4, 5])

这只是所有顶点的集合。预期的输出应该是

set([1, 2, 3])

这个过程有什么问题?

【问题讨论】:

【参考方案1】:

此函数是近似的,返回“权重总和不超过 2 * OPT 的一组顶点”(Prooflink)。在您的情况下,OPT=3,因此所有六个节点的集合都是可以接受的答案。

【讨论】:

以上是关于python中的Networkx min_weighted_vertex_cover返回整个集合而不是顶点覆盖的主要内容,如果未能解决你的问题,请参考以下文章

NetworkX 中的节点与边

python中的Networkx min_weighted_vertex_cover返回整个集合而不是顶点覆盖

加权边缘如何影响networkx中的PageRank?

Python数模笔记-NetworkX最短路径

如何使用 python 的 networkx 模块从节点列表生成完全连接的子图

根据节点值为networkx中的节点绘制不同的颜色