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
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