First, if G=(V,E), and C is the collection of all vertices set which can be covered by a matching in G.
I have proved that such (V,C) is a matroid.
And each vertex $v_i$ has a weight $w(v_i)$, how to How to find a matching where the weight of all covered vertices is maximum?
Link to wikipedia Matching:
In weighted bipartite graphs
In a weighted bipartite graph, each edge has an associated value. A maximum weighted bipartite matching is defined as a matching where the sum of the values of the edges in the matching have a maximal value. If the graph is not complete bipartite, missing edges are inserted with value zero. Finding such a matching is known as the assignment problem. The Hungarian algorithm solves the assignment problem and it was one of the beginnings of combinatorial optimization algorithms. It uses a modified shortest path search in the augmenting path algorithm. If the Bellman–Ford algorithm is used for this step, the running time of the Hungarian algorithm becomes O(V^2 E), or the edge cost can be shifted with a potential to achieve O(V^2 \log{V} + V E) running time with the Dijkstra algorithm and Fibonacci heap.
In general graphs
Main article: Edmonds's matching algorithm
There is a O(V^{2}E) time algorithm to find a maximum matching or a maximum weight matching in a graph that is not bipartite; it is due to Jack Edmonds, is called the paths, trees, and flowers method or simply Edmonds' algorithm, and uses bidirected edges. A generalization of the same technique can also be used to find maximum independent sets in claw-free graphs. Edmonds' algorithm has subsequently been improved to run in time O(√VE) time, matching the time for bipartite maximum matching.
Another (randomized) algorithm by Mucha and Sankowski, based on the fast matrix multiplication algorithm, gives O(V^{2.376}) complexity.