Como o algoritmo Jump Point Search funciona e por que é tão eficiente?

8

Ao experimentar o applet abaixo, vi que esse algoritmo de localização de caminhos chamado Jump Point Search produz resultados significativamente mais rápidos que o A * e o Dijkstra.

http://qiao.github.io/PathFinding.js/visual/

A *: 46 segundos insira a descrição da imagem aqui

Dijkstra: 1 minuto e 39 segundos insira a descrição da imagem aqui

Pesquisa de Jump Point: Menos de 3 segundos insira a descrição da imagem aqui

Escusado será dizer que estou bastante surpreso com o resultado. Da representação visual, a Jump Point Search parece fazer muitas suposições aleatórias (provavelmente muito inteligentes) ao encontrar o caminho (pelo menos na seleção de blocos), mas ainda não encontrei um caso de teste em que esse algoritmo tenha piorado resultados que A * e Dijkstra.

Como esse algoritmo funciona? Como é tão eficiente em comparação com A * e Dijkstra?

l46kok
fonte
2
Está claro nas suas capturas de tela que A * levou 7ms para concluir (não 46s), Dijkstra 13ms (não 1m 39s) e JPS 2ms (não 3s). De onde você tirou seus números?
Yannis
Cronometrando-os manualmente com um temporizador. Erros humanos podem indicar que estou desligado em talvez alguns segundos ou mais, mas não há como demorar tanto quanto os tempos mencionados no applet. Talvez esteja se referindo a outra coisa ou seja um bug.
L46kok
7
Oh meu Deus, você realmente fez isso? Os horários em que os relatórios da ferramenta estão corretos: é quanto tempo levou para que cada algoritmo fosse concluído. O atraso (significativo) depois disso é para a apresentação dos caminhos dos algoritmos. A animação SVG é uma das coisas mais legais do HTML5, mas é (ainda) lenta .
Yannis
@YannisRizos Dang, eu deveria saber melhor :(
l46kok
1
é lento para mostrar o progresso do algoritmo, não porque, por exemplo, "HTML5 é lento", etc.
Steven Lu

Respostas:

5

A idéia básica é que o JPS permita descartar muitos caminhos candidatos antecipadamente, reduzindo assim a quantidade de cálculos necessários.

Em muitos mapas, vários caminhos com o mesmo custo levam ao mesmo destino, como um mapa de jogo com grandes áreas abertas. O JSP permite remover esses caminhos.

Uma explicação detalhada pode ser encontrada aqui .

Wilbert
fonte
1

Com a versão mais recente da ferramenta, o JPS é realmente mostrado mais lento que o A * para muitos tipos de gráficos, porque agora também mostram a recursão do JPS.

Pesquisa JPS Nós cinzentos são nós examinados

Isso também é verdade no mundo real; enquanto o JPS geralmente enfileira muito menos nós, ele geralmente examina muitos mais. Se isso resulta em uma aceleração real depende do gráfico.

BlueRaja - Danny Pflughoeft
fonte