演算法虛擬碼
演算法 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)