Context: I’m modelling kidney exchanges through directed acyclic graphs. I convert these to Bipartite graphs (by splitting each node into a donor and receiver, and the edge from the original graph exist between corresponding donors and receivers). I want a way to find maximum number of edges through disjoint chains and I’ve been trying to do so through maximum wtd matching.
I know I can use ford-fulkerson to find a maximum wtd perfect matching, however, the main problem I’m facing is that the matchings can only exist for chains beginning with specific vertices. For example, if this is my directed acyclic graph:
Turning this into a Bipartite graph and using the maximum wtd matching way, I get the chain 0->1->3->5->6 but I also get 2->4. However, I can only have chains beginning with 0 so 2->4 should not come up.
I wanted to know if there were any ways to work around this problem? Someone suggested making this a minimum cost perfect matching problem but I’m confused how.
I realise this is a weird question but any help would be appreciated!