Networkx min_weighted_vertex_cover in python returns 整个集合而不是顶点覆盖

Networkx min_weighted_vertex_cover in python returns whole set instead of vertex cover

我有一个邻接矩阵 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])

这个过程有什么问题?

这个函数是近似的returns“一组顶点的权重和不超过2 * OPT”(Prooflink)。在你的例子中,OPT=3,所以所有六个节点的集合是一个可以接受的答案。