algorithm
polynom tidsgränsad algoritm för Minimum Vertex Cover
Sök…
Introduktion
Detta är en polynomalgoritm för att få det minsta vertexomslaget för ansluten, direktstruerad graf. Tidskomplexiteten för denna algoritm är O (n2)
parametrar
Variabel | Menande |
---|---|
G | Ingång ansluten ostyrd graf |
X | Uppsättning av hörn |
C | Slutlig uppsättning av vertikaler |
Anmärkningar
Det första du måste göra i den här algoritmen för att få alla vertikalerna i diagrammet sorterade i fallande ordning beroende på graden.
Efter det har du iterat på dem och lägg till var och en till den slutliga vertikumsatsen som inte har någon angränsande toppunkt i den här uppsättningen.
I det sista steget upprepas det slutliga toppskäret och ta bort alla topparna som har en av dess intilliggande toppar i denna uppsättning.
Algoritm-pseudokod
Algoritm PMinVertexCover (graf G)
Ange ansluten graf G
Output Minimal vertex Cover Set 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 är den minsta vertexomslaget för graf G
vi kan använda hinksortering för att sortera toppningarna enligt dess grad eftersom det maximala värdet på grader är (n-1) där n är antalet toppningar då sorteringens tidskomplexitet är O (n)