Skip to content
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

implementing the Blossom algorithm for maximum weight matching [$1000] #14

Open
Krastanov opened this issue Sep 13, 2024 · 9 comments
Open
Labels
bounty:reserved bounty:1000 bug bounty There is an award for solving this issue.

Comments

@Krastanov
Copy link
Member

Krastanov commented Sep 13, 2024

Implement the well-known Blossom algorithm for maximum weight (perfect) matching in generic graphs.

Two bounties are available here:

  • a 500$ bounty for implementing a pure-julia Blossom with tests and documentation, making it the default here, and moving BlossomV.jl from a dependency to a weak dependency (so that it is not necessary during installation)
  • a 500$ bounty on improving the performance of the new implementation to no-worse than 90% of BlossomV.jl

Required skills: Both skills in graph theory and high-performance julia.

Reviewer: @Krastanov or @gdalle or members of the JuliaGraphs community

Duration: 1 month per stage (except potential review overhead)

Payout procedure (for this particular bounty program):

The Funding for these bounties comes from the National Science Foundation and from the NSF Center for Quantum Networks. The payouts are managed by the NumFOCUS foundation and processed in bulk once every two months. If you live in a country in which NumFOCUS can make payments, you can participate in this bounty program.

Click here for more details about the bug bounty program.

Bug bounty logistic details (click to expand)

To claim exclusive time to work on this bounty either post a comment here or message [email protected] with:

  • your name
  • github username
  • (optional) a brief list of previous pertinent projects you have engaged in

Currently the project is claimed by no one until ....

If you want to, you can work on this project without making a claim, however claims are encouraged to give you and other contributors peace of mind. Whoever has made a claim takes precedence when solutions are considered.

You can always propose your own funded project, if you would like to contribute something of value that is not yet covered by an official bounty.

@aybanda
Copy link

aybanda commented Sep 13, 2024

Hey @Krastanov
submitted a PR, see if that helps

@cmhyett
Copy link

cmhyett commented Sep 13, 2024

I'm certainly interested in implementing this - though obviously @aybanda should get first consideration for the 'exclusive' time if they want it.

Name: Criston Hyett
github: cmhyett
projects: contributor to MethodOfLines.jl, working on modeling PDEs/ROMs on networks, implemented the Hopcroft planarity testing algorithm (as a class project years ago), and coincidentally returning to graph matching algorithms in the context of optimal transport. This would be a nice deviation to learn a new alg.

@Krastanov
Copy link
Member Author

Thank you both for the interest! For bigger bounties, usually (as mentioned in the description of the bounty program), I proceed like with a Google Summer of Code application -- I wait a few days to gather applications and then pick as many as I have funding and projects for. However, I do understand that preparing an actual application takes time, and I want to avoid duplication of effort, so I would suggest proceeding sequentially and seeing whether @aybanda's PR gains momentum.

Also, FYI, more Graph bounties will be coming (although possibly of a more limited scope and amount).

@AntoineBut
Copy link

AntoineBut commented Sep 13, 2024

Hey,
I would love to contribute to this as well! I currently have a limited amount of time because of another big deadline, but I will have more time in a few weeks. If this goes as @Krastanov mentions (1 month for the first stage to get a working implementation with all tests, docs, benchmarks...), then I would love to look at the various ways to speed things up in the second stage as this happens to be the part I like the most.

  • Name : Antoine Buttier
  • github username : AntoineBut
  • Previous project :

I am still fairly new to Julia (but I had the chance to learn from the best), I completed a project on parallelism in graph algorithms (in particular, BFS and coloring) under the supervision of @gdalle. The main outcome of this is on this repo, though we never really took the time to clean it up and make it comply with the usual standards.

The large graphs needed for benchmarking then led me to contribute some performance fixes on Graphs.jl (see dorogostev-mendes and greedy coloring).

I'll definitely be checking this from time to time and see if I find something to improve!

@Krastanov
Copy link
Member Author

Thank you all for the expressed interest! For the time being we will give some exclusive time to Criston to engage with the first stage of the bounty. We will be opening related bounties throughout the Graph ecosystem and we will be sure to tag you to make sure we do not waste your tallents -- the julia graphs ecosystem would really benefit from your participation.

@Krastanov Krastanov added bug bounty There is an award for solving this issue. bounty:1000 labels Sep 19, 2024
@Krastanov Krastanov changed the title Bounty on implementing the Blossom algorithm for maximum weight matching. implementing the Blossom algorithm for maximum weight matching [1000$] Sep 19, 2024
@Krastanov Krastanov changed the title implementing the Blossom algorithm for maximum weight matching [1000$] implementing the Blossom algorithm for maximum weight matching [$1000] Sep 19, 2024
@omarsoufiane
Copy link

hello @Krastanov, I'm the founder of BountyHub which is a new platform dedicated to bounties on public GitHub repositories. It's one way to let the attempters know that the reward is already available. As a bounty creator you decide if the attempter should get the reward after submitting a pull request, and if no one solves your issue you can retract your bounty and get your money back. I would be very happy if you use it for your upcoming bounties.

@Krastanov
Copy link
Member Author

Hi, @AntoineBut ! Are you still interested in this bounty? I was a bit slow to convey the messages, but Criston messaged me that he would not have the time to finish the work. If you are interested, both portions of the bounty are still available.

@AntoineBut
Copy link

Sure @Krastanov, I'd love to get a chance to work on this! And I need to freshen up my Julia development workflow for a new project that will start in February, so it looks like the perfect opportunity :))

@Krastanov
Copy link
Member Author

great! Marking it as reserved for you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bounty:reserved bounty:1000 bug bounty There is an award for solving this issue.
Projects
None yet
Development

No branches or pull requests

5 participants