1
0
Fork 0
Commit Graph

113 Commits

Author SHA1 Message Date
Joris van Rantwijk b2d4de41f9 Add __slots__ in datastruct.py
It does not make a clear difference for performance.
But it should at least reduce memory usage a bit.
2024-07-09 21:10:38 +02:00
Joris van Rantwijk d2debb6d6f Minor changes to docstrings 2024-07-09 21:10:38 +02:00
Joris van Rantwijk bbe19a6798 Run all unittests in run_checks.sh 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 50ef772271 Improve test coverage 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 6a75ffaf63 Avoid leaking reference cycles 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 4c6115fb2f Improve comments and docstrings 2024-07-09 21:10:38 +02:00
Joris van Rantwijk 0e76e6472b Minor cleanup in scanning and delta steps 2024-07-09 21:10:38 +02:00
Joris van Rantwijk f35a640e43 Clean up management of the alternating tree 2024-07-09 21:10:38 +02:00
Joris van Rantwijk b960a85b6c Clean up magagement of blossom labels 2024-07-09 21:10:38 +02:00
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