-
-
Notifications
You must be signed in to change notification settings - Fork 392
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New feature: maximum matching of general graph #2550
base: develop
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #2550 +/- ##
===========================================
+ Coverage 84.58% 84.61% +0.03%
===========================================
Files 376 376
Lines 60595 60772 +177
Branches 11850 11881 +31
===========================================
+ Hits 51253 51423 +170
- Misses 9342 9349 +7
Continue to review full report in Codecov by Sentry.
|
@ntamas The interface here is based on the stub function that was accidentally left over in 0.10 (though not exposed). As I said in chat, I am not sure that using We certainly need a way to return specific edge IDs. We should discuss what representation is best to use, and change the interface before 1.0 is relesaed. This should probably stay an experimental function in 1.0 as well, so we have the opportunity to make changes in the future. |
Yes, one would need the edge IDs in weighted multigraphs -- but only in weighted multigraphs and not in weighted simple graphs or non-weighted multigraphs, where the matching vector is enough. One option would be provide the edge IDs only in the result, and provide a helper function that converts the edge IDs to a matching vector if this is what the user ultimately needs. Another option would be to provide two output arguments: one for the matching vector (as we do it now) and one for the edges in the matching. I think that if we think about higher-level interfaces only, then providing the edge IDs is enough as the higher-level interface can easily wrap the edge IDs in a purpose-built object (like a All in all, I'm okay with changing the interface to provide the IDs of the edges in the matching only, as long as we also provide a helper function to convert it quickly to a matching vector. |
/** | ||
* \function igraph_maximum_matching | ||
* \brief Calculates a maximum matching in a graph. | ||
* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* | |
* | |
* \experimental | |
* |
Just so we don't forget.
The algorithm itself uses the I'm really fine with either, and will get started implementing it once we decided this. |
We didn't forget this PR, just need to find the time to go over it. It's a non-trivial amount of work. The Changing the interface is relatively easy. The first step of the review should be verifying correctness and performance. |
The new pull request after the issues with #2530
Fixes #2403