算法伪代码
算法 PMinVertexCover(图 G)
输入连接图 G
输出最小顶点覆盖集 C
Set C <- new Set<Vertex>()
Set X <- new Set<Vertex>()
X <- G.getAllVerticiesArrangedDescendinglyByDegree()
for v in X do
List<Vertex> adjacentVertices1 <- G.getAdjacent(v)
if !C contains any of adjacentVertices1 then
C.add(v)
for vertex in C do
List<vertex> adjacentVertices2 <- G.adjacentVertecies(vertex)
if C contains any of adjacentVertices2 then
C.remove(vertex)
return C
C 是图 G 的最小顶点覆盖
我们可以使用桶排序根据其度数对顶点进行排序,因为度的最大值是(n-1),其中 n 是顶点数,那么排序的时间复杂度将是
O(n)