7

I've come across Jump Point Search, and it seems pretty sweet to me. However, I'm unsure as to how their pruning rules actually work. More specifically, in Figure 1, it states that

we can immediately prune all grey neighbours as these can be reached optimally from the parent of x without ever going through node x

However, this seems somewhat at odds. In the second image, node 5 could be reached by first going through node 7 and skipping x entirely through a symmetrical path- that is, 6 -> x -> 5 seems to be symmetrical to 6 -> 7 -> 5. This would be the same as how node 3 can be reached without going through x in the first image. As such, I don't understand how these two images are not entirely equivalent, and not just rotated versions of each other.

Secondly, I'd like to understand how this algorithm could be generalized to a three-dimensional search volume.

Puppy
  • 144,682
  • 38
  • 256
  • 465
  • I have been studying the same algorithm last week and found the pictures confusing too. Have you considered mailing Daniel Harabor about this? – Fred Foo Apr 15 '12 at 14:56
  • @larsmans: I have an idea about it. Come to the C++ chat and I'll discuss it. – Puppy Apr 15 '12 at 16:48
  • The first image makes sense because it's only considering horizontal and vertical movement, not diagonals. So given that constraint then the pruning makes sense. But the second image, like you said, does not make sense to me. – Magnus Apr 28 '13 at 18:41

3 Answers3

0

The second image is displayed incorrectly. If you glance at the accompanying text: "In both cases we can immediately prune all grey neighbours as these can be reached optimally from the parent of x without ever going through node x."

Emphasis on 'both cases'.

In terms of applying the concept to a 3-dimensional space (or heck, even an n-dimensional space), this algorithm is no different to A* in that it's simply a mesh of nodes and connections. The dimensionality is entirely at your discretion.

  • I don't believe this to be true. If the second image is simply a rotated version of the first, then why even display both? Why not just display the first? In addition, the series in Figure 3 also demonstrates an inequality. – Puppy Apr 15 '12 at 13:07
0

I understand this to be about priorities. In order to enumerate each non-symmetrical path, you have to enumerate all the nodes- but it really doesn't matter which path you pick, because they're symmetrical. So the authors decided to go with diagonal-first- that is, any diagonal movements always appear before any straight movements in a path. That's why the straight has more nodes pruned- because it must be occurring after all diagonals have been accounted for.

Puppy
  • 144,682
  • 38
  • 256
  • 465
0

Yes, JPS is sweet but limited to maps with specific constraints:

  1. The map must represent a grid.
  2. All accessible cells in the grid must have the same traversal cost.
  3. The moving agent must have 8 possible directions of travel: 4 cardinal directions and 4 diagonals.

The key to the algorithm is that those constraints allow some key assumptions:

  1. The shortest geometric route between two points (in the absence of obstructions) is also a least-cost route.
  2. A least-cost path between two points (in the absence of obstructions) need not have more than one change of direction.

These assumptions allow the algorithm to ignore symmetric path options and operate as follows:

  1. When travelling in a cardinal direction you only need to consider a change of direction when an obstacle is encountered in one of the positions illustrated in the papers. These points where a change of direction is to be considered are the "Jump Points".
  2. When travelling diagonally you need only consider a change of direction when a jump point can be "seen" in one of the two bracketing "forward-looking" cardinal directions, again as illustrated in the papers.
Terrible Tadpole
  • 607
  • 6
  • 20