Minimum vertices set bipartite graph covering-special case I was wondering if anyone here could give me any pointers as to how to solve the following problem.
Let B=(L,R,E) be an undirected bipartite graph, ∀u∈L, ∃ s= {ei(u,wi)} ∈E; i=1,2.....n connect u to wi, where w∈R.
The problem is to find a minimum set K from L covering all R in B, K⊆L , ∑u∈K is minimal.
To clarify what I mean by covering: all vertices of R should should have at least one edge to any u∈K.
My intuition is that it's NP-Hard. If that is the case, any idea of what would be the best way to approximate the result (ie a minimum set K of L covering R)? Such that: 


*

*Each vertex from L could cover multi-vertices of R  

*The vertex from L which has maximum edges toward R will be selected first

*Each vertex of R is connected with at least one vertex of L
Edit: Here is an example, consider the following bipartite graph: G={L∪R,E},
L={1,2,3,4,5,6},
R={A,B,C,D} ,
E={1A,1B,2A,2B,2C,3A,3C,4A,4B,4D,5A,5B,6A,6D}
And here is a covering minimum set will be {2,4}
I have read many algorithms and solutions like maximum matching, complete matching, stable marriage, set cover problem, vertex cover in hypergraphs ...etc.
Unfortunately no one match my case.
So i am here asking your help guys cause i about to fed up!!! SOS!!
 
 A: This is just the set cover problem in disguise, to each vertex of $L$ assign the set of vertices of $R$ in its neighborhood. We now have transformed $L$ into a set of subsets of $R$ so now we want to find the set covering with the fewest sets. 
It is true, as you suspected that this problem is $NP$ complete, but a lot of research on it exists.
A: I recently stumbled upon this problem as well and I thought about it.
I believe your problem to be easily solvable in polynomial time and not being related to the classical NP-complete set vertex cover as @jorge-fernández suggested, since you only care about vertices on one side of the bipartite graph and not on both. This difference makes everything way more simple.
The greedy algorithm is quite trivial:


*

*Chose a vertex A from v1 which covers "more" nodes left in v2 (i.e the vertex from v1 with more edges)


*

*Add the vertex A the mininum cover set

*Remove all the nodes in v2 having an edge to A

*Remove the vertex A from v1


*In case v2 is not empty, go to point 1


The algorithm produces an optimal solution and terminates in polynomial time. 


*

*The optimal solution is returned because picking up the vertex with more edges from v1 does not prevent any remaining vertex from being picked up later on (i.e. taking this step does exclude any other vertices nearby to be selected later in the process. This instead happens in the classic NP-Complete problem). The descent is convex and we will not land in a local minumum

*In the worst case, the algorithm will take |v2| loops to complete (every loop will just remove a single vertex from v2)

