I'll preface by saying that I know that the title is technically incorrect since a matching is defined such that each node has at most one edge. However I can't find the correct term so here I am
I have a matching problem that is modeled as a weighted bipartite graph with node sets $X$ and $Y$ where $|X|\neq|Y|$ and it can be assumed that each node in either set is connected to at least one node in the other set.
The goal is to find a (minimal) set of edges $E$ such that every node in the graph is the endpoint of at least one edge (i.e., $|E|=max(|X|, |Y|)$) while minimizing the sum of weights in $E$. Obviously this implies that some nodes will have more than one edge in $E$, in opposition to a minimum weight full matching where $|E|=min(|X|, |Y|)$ and some nodes may be left unmatched.
What would be the correct term to search instead of "matching" and is there an algorithm that can solve this problem?
Best Answer
A set of edges that includes every vertex as an endpoint is called an edge cover.
In the unweighted case, finding the minimum edge cover is no harder than finding a maximum matching. In fact, we begin by finding the maximum matching; then, for every vertex that is not covered by that maximum matching, just add an arbitrary edge to cover it.
In the weighted case, things are trickier, but there is still a way to reduce it to a bipartite matching problem.
The idea is that every minimum edge cover has the following structure: a matching as a skeleton, plus additional edges which cover only one additional vertex each, and are the cheapest edge out of that vertex. And the big graph containing $G \cup G'$ is exactly what we need to make its perfect matchings mimic that structure.
By the way, if $G$ is bipartite with bipartition $(A,B)$, then the graph created in steps 1-2 is also bipartite with bipartition $(A \cup B', B \cup A')$. So we get a bipartite minimum-weight matching problem to solve, which is nice.