Given a bipartite graph
, an
X-perfect matching is a matching in
G that covers every node in
X. In this paper we study the following generalisation of the
X-perfect matching problem, which has applications in constraint programming: Given a bipartite graph as above and a collection
of
k subsets of
X, find a subset
ME of the edges such that for each
, the edge set
M∩(C×D) is a
C-perfect matching in
G (or report that no such set exists). We show that the decision problem is NP-complete and that the corresponding optimisation problem is in APX when
k=O(1) and even APX-complete already for
k=2. On the positive side, we show that a
2/(k+1)-approximation can be found in
poly(k,|XD|) time. We show also that such an approximation
M can be found in time
, with the further restriction that each vertex in
D has degree at most 2 in
M.