This is a modified version of the algorithm that I have proposed here.
Suppose we have a graph G. Consider the minimum vertex cover problem of G formulated as a linear programming problem, that is for each vertex $v_{i}$ we have the variable $x_{i}$, for each edge $v_{i}v_{j}$ we have the constraint $x_{i}+x_{j}\geq 1$, for each variable we have $0\leq x_{i}\leq 1$ and we have the objective function $\min \sum\limits_{1}^{n}{x_{i}}$. We call such a linear programming problem LP. Note that it is NOT an integer linear programming problem.
Consider the following algorithm:
Find an optimal solution $S$ of LP.
For each variable $x_{i}$, one by one, add the constraint $x_{i}=0$ to LP and find a new optimal solution $S’$. If in $S’$ the objective function is greater than in $S$, remove the constraint $x_{i}=0$.
Find an optimal solution $S’’$ of LP. Remove all the vertices from $G$ that take value $0$ or $1$ in $S’’$.
For each odd cycle $C$ in $G$, add the constraint $x_{a}+x_{b}+x_{c}+...+x_{i}\geq \left\lfloor h+1 \right\rfloor$ where $x_{a},x_{b},x_{c},...,x_{i}$ are the vertices of the cycle and $h$ is the sum of the values of the variables of $C$ in $S’’$.
If any constraints are added in the step 4., repeat from 2..
The vertices whose variables take value $1$ in $S’’$ are a minimum vertex cover of the given $G$.
The algorithm finds a vertex cover of the given graph, this is clear. The question is: does the algorithm find a minimum vertex cover of the given graph?
The idea behind the algorithm is: in a graph without odd cycles, the optimal value of the objective function of LP is the cardinality of the minimum vertex cover of the given graph (1). If there are any odd cycles, the optimal value of the objective can be less than the cardinality of the minimum vertex cover. For this reason, the algorithm increases the lower limit of the sum of the variables of each odd cycle of $G$, until all the variables take value in $\left\{0, 1\right\} $ in $S’’$.
(1) G. L. Nemhauser and L. E. Trotter Jr. Properties of vertex packing and independence system polyhedra. Mathematical Programming, 6:48–61, 1974.
