Everywhere I've searched on the internet, people seem to assume that jump point search would not work with weighted grids. So why wouldn't it work with this simple modification to the algorithm:
This diagram here illustrates the circumstances that the traditional jump point search algorithm would add the node x to the open set.
Please note that the black squares are numbered 2 and 4 respectively.
In these two images, the reason x is added to the open set is because the optimal paths to the circled squares from the parent of x must go through x. I propose, that if any path going through x from the parent of x to a node around x is lighter than the corresponding path going around x, x should be expanded.
Example psuedocode:
Please note that weightOfPath
should return infinity if any of the nodes are impassable.
Horizontal case:
if weightOfPath(4,x,3) < weightOfPath(4,2,3) or weightOfPath(4,x,8) < weightOfPath(4,7,8):
addToOpenNodes(x);
Diagonal case:
if weightOfPath(6,x,1) < weightOfPath(6,4,1) or weightOfPath(6,x,8) < weightOfPath(6,7,8):
addToOpenNodes(x);
Why wouldn't this work?