1
0
Fork 0
Commit Graph

104 Commits

Author SHA1 Message Date
Joris van Rantwijk f8c6b99842 Clean up least-slack edge tracking 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 1a98624f2b Solve slow maintanance of blossom list 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 61524990d7 Keep alternating trees between stages
Delete only the trees that are involved in an augmenting path.
Keep the other trees and reuse them in the next stage.

This gives a big speedup on many cases such as random graphs.
The code is a mess, needs to be cleaned up.
2024-07-09 21:10:38 +02:00
Joris van Rantwijk 73641d7b70 Add method PriorityQueue.increase_prio 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 0675230692 Code style cleanups 2024-07-09 21:10:38 +02:00
Joris van Rantwijk de30ac3c5e Track blossoms in each alternating tree 2024-07-09 21:10:38 +02:00
Joris van Rantwijk aab2acd78e Remove redundant clearing of scan queue 2024-07-09 21:10:38 +02:00
Joris van Rantwijk e9baa88c70 Fix bug in delta2 tracking 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 73479532ac Implement scan queue as a list instead of deque 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 04b6908449 Do not check edge slack during scan
Tight edges are not used immediately during the scan.
Just like other edges, tight edges are tracked in priority queues
and are used later through a zero-delta step.

This simplifies slack calculations.
2024-07-09 21:10:38 +02:00
Joris van Rantwijk 3a77749425 Simplify slack handling in delta2 tracking 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 9ee26584ab Use UnionFind to find top-level blossom of vertex
The run time should now be O(n*m*log(n))
2024-07-09 21:10:38 +02:00
Joris van Rantwijk 225311dae0 Implement heap-based tracking for delta2 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 7cc1666cf2 Lazy delta updates of T-vertex duals 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 6318de3b1f Lazy delta updates of T-blossom duals 2024-07-09 21:10:38 +02:00
Joris van Rantwijk b2e055b357 Lazy delta updates of S-blossom duals 2024-07-09 21:10:38 +02:00
Joris van Rantwijk de03796d99 Lazy delta updates of S-vertex duals 2024-07-09 21:10:38 +02:00
Joris van Rantwijk a23c38eb70 Implement heap-based tracking for delta4 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 13b6b76d47 Implement heap-based edge tracking for delta3 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 91d4afb271 Clean up redundant type annotations "int|float" 2024-07-09 21:10:00 +02:00
Joris van Rantwijk c8a3f7f684 Datastructures for O(n*m*log(n)) algorithm 2024-05-25 11:50:07 +02:00
Joris van Rantwijk 77dac28056 Moved repository to Gitea 2024-03-08 12:09:30 +01:00
Joris van Rantwijk 9cabdce600 Test C++ code in Github Actions workflow 2023-07-07 23:27:55 +02:00
Joris van Rantwijk 327e83e701 Update README to mention C++ code 2023-07-07 22:41:27 +02:00
Joris van Rantwijk d8d44f6171 Add corner cases to C++ unit test 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 4b7fab3f43 Add struct Graph to represent input graph 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 9b064de4d8 Add C++ testcases for verification 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 9c669f2d03 Remove dependence on Boost.Hash 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 731b202af3 Clean up verification code 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 250fd4ea94 Minor cleanup of code layout 2023-07-07 22:33:33 +02:00
Joris van Rantwijk a9010855a5 Avoid dynamic_cast<..> 2023-07-07 22:33:33 +02:00
Joris van Rantwijk dd452f73da Superficial clean up of comments 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 3aa2b20a74 Remove clutter from C++ unit tests 2023-07-07 22:33:33 +02:00
Joris van Rantwijk ee14d45aa6 Minor clean up of shadowed variable 2023-07-07 22:33:33 +02:00
Joris van Rantwijk da0040ba27 C++ command line tool to run matching 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 8d7d1a537a Add C++ tests for maximum cardinality matching 2023-07-07 22:33:33 +02:00
Joris van Rantwijk d08e3e1c58 Fix bug in C++ maximum cardinality adjustment 2023-07-07 22:33:33 +02:00
Joris van Rantwijk a4da35d3aa Fix bug in C++ matching code 2023-07-07 22:33:33 +02:00
Joris van Rantwijk 61cb309082 Implement algorithm in C++ 2023-07-07 22:33:28 +02:00
Joris van Rantwijk 082a2d8f03 Simplify --solver syntax of run_test.py 2023-06-16 20:52:06 +02:00
Joris van Rantwijk 76de35471f Simplify find_path_through_blossom 2023-05-12 18:12:25 +02:00
Joris van Rantwijk be2b474873 Minor clarifications in comments 2023-05-10 20:54:29 +02:00
Joris van Rantwijk 91a392a0dc Update README 2023-04-15 16:02:29 +02:00
Joris van Rantwijk f9bd7aecf6 Move Algorithm.md to doc folder 2023-04-15 12:03:39 +02:00
Joris van Rantwijk e16f502bcf Add script to run tests 2023-04-14 15:45:26 +02:00
Joris van Rantwijk 6ad3638142 Run test graphs in workflow 2023-04-14 15:09:24 +02:00
Joris van Rantwijk 536529c36c Check Python unittest coverage 2023-04-14 15:09:24 +02:00
Joris van Rantwijk a3f29f0988 Run Python unittests in workflow 2023-04-14 15:09:20 +02:00
Joris van Rantwijk 94db975cf0 Add Github Actions workflow 2023-04-14 10:34:15 +02:00
Joris van Rantwijk 3b80109cff Add implementation notes to algorithm description 2023-04-14 00:06:01 +02:00