-
-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Labels
enhancementNew feature or requestNew feature or request
Description
The pathfinding library implements classic dijkstra's algorithm by a BinaryHeap.
It can be further improved, some of my thoughts are:
- We can use a bucket queue because all weights are small integer, so the cost must be an integer between (0, 9 * V), where V is the number of vertex.
- We can pre-compute a tighter cost upper bound than 9 * V thanks to the graph setup. Generally we don't know the path from start to end without traversing. However in the aoc setup, we do know a path from start to end: so we can sum up the risk from (0, 0) -- (W - 1, 0) -- (W - 1, H - 1) and use that as the bucket size.
I implemented the bucket queue dijkstra and it's around 20% faster than the binary heap approach on day15b setup.
timvisee
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request