Volume IV, Issue XI, November 2015 IJLTEMAS ISSN 2278 2540 www.ijltemas.in Page 99 An Interesting Algorithm to Solve Vertex Cover Problem D. Abhyankar, P. Saxena School of Computer Science, D.A. University, Indore, M.P, India Abstract: - Vertex cover problem has been proved NP complete. Although a lot of research work has been carried out to invent approximation algorithms, exact algorithms to solve the problems remain unexplored to a large extent. We have found an algorithm that performs more efficiently than brute force search or simple backtracking algorithm. Our algorithm does not claim polynomial running time; however it solves the problem more efficiently than brute force search or simple backtracking algorithm. I. INTRODUCTION vertex cover or node cover of an input graph is the set of nodes such that each edge of the graph is covered by at least one vertex in the set. To find a minimum or optimum size cover is a classic problem of graph theory. To find optimum size vertex cover is a key problem in computational complexity theory. It is fixed parameter tractable [5]. Solutions to vertex cover problem can be applied in computational biochemistry and related areas. In biochemistry, sometimes we need to solve conflicts between sequences in a sample by ruling out some of the sequences. A conflict is strictly defined in the context of biochemistry. In a conflict graph the nodes or vertices epitomize the sequences in the sample. There is an edge between two vertices iff there is a conflict between the corresponding sequences. The aim is to remove the fewest possible vertices (sequences) that will resolve all conflicts. Recall that a vertex cover or node cover of an input graph is the set of nodes such that each edge of the graph is covered by at least one vertex in the set. Thus, the aim is to find a minimum vertex cover in the conflict graph G [6]. Vertex cover problem fascinates a lot of computer science researchers. In 1972, Researcher Karp proved this problem to be NP complete which means a polynomial time worst case solution to this problem is unlikely [1]. One way to tackle the problem is to look for approximation algorithms to solve this problem. For instance two-approximation algorithm solves the problem efficiently and elegantly. Also, literature describes some other important approximation algorithms. Another way is to solve the problem efficiently for special cases. Although a lot of research work has been carried out in the area of approximation algorithms to solve vertex cover problem approximately, little efforts were made to find exact algorithms which are more efficient than brute force algorithms. Our study fills this gap and finds for exact algorithm which can perform more efficiently than brute force algorithm to solve vertex cover problem. II. IDEAS BEHIND PROPOSED ALGORITHM First idea of the algorithm is to leave single degree vertex. If we pick single degree vertex, we may end up in a cover with redundant vertex. A redundant vertex in a set S is one whose all neighbours are also present in set S. Covers with redundant vertex are sub optimal; therefore we should not compute covers with one or more redundant vertices. Second idea of the algorithm is to compute close estimate of a graph. This close estimate helps the algorithm to achieve efficient backtracking. To have a close estimate we choose an edge and decide to have both ends in the estimate solution. Since at least one end must be picked by optimal solution, estimate <= 1+optimal. Since at least one end of the edge must be in the optimal solution, our recursion depth will not be deeper than twice of optimal depth. III. PROPOSED ALGORITHM We propose an algorithm that solves vertex cover problem more efficiently than brute force algorithms. Our algorithm involves three key ideas discussed in earlier Section. C++ code provided in the appendix implements the algorithm. Pseudocode of the algorithm has been presented below: Function Exact(Graph G, int Lim) : int Step 1: If Lim < 0 return N // Return value N indicates failure Step 2: If there is a single degree vertex u, leave u. G0 = G u Neighbour(u) Step 3: return Exact(G0, Lim-1) A