Networkx min_weighted_vertex_cover in python returns 整个集合而不是顶点覆盖
Networkx min_weighted_vertex_cover in python returns whole set instead of vertex cover
我有一个邻接矩阵 A
和 nodes = {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,所以所有六个节点的集合是一个可以接受的答案。
我有一个邻接矩阵 A
和 nodes = {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,所以所有六个节点的集合是一个可以接受的答案。