Este é um exemplo do que eu quero fazer via código. Eu sei que você pode usar a pesquisa de pontos de salto para passar facilmente do nó verde para o nó vermelho sem problemas ou mesmo A *. Mas como você calcula isso com deformações.
Na imagem, você pode ver que são necessários apenas oito movimentos para ir do nó verde para o nó vermelho ao seguir o caminho azul. O caminho azul move instantaneamente sua posição de um nó roxo para o próximo. O espaço no meio que custa 2 movimentos é um ponto entre duas zonas de distorção que você deve mover para chegar.
É claramente mais rápido seguir o caminho azul, já que você só precisa mover metade (aproximadamente) até o caminho amarelo, mas como faço isso programaticamente?
Com o objetivo de resolver esse problema, vamos supor que haja vários "warps" roxos ao redor do gráfico que você possa usar, E sabemos exatamente para onde cada ponto roxo se distorcerá e onde estão no gráfico.
Algumas urdiduras roxas são bidirecionais e outras não, o que significa que, às vezes, você só pode inserir uma urdidura de um lado, mas não voltar após a deformação.
Pensei na solução e só concluí que seria capaz de calcular o problema verificando a distância de cada ponto de distorção (menos os pontos unidirecionais) e a diferença entre esses pontos e os pontos próximos a eles. .
O programa teria que descobrir de alguma forma que é mais benéfico realizar o segundo warp, em vez de caminhar desde o primeiro salto. Então, em vez de mover 6 pontos, entortar e depois mover os 8 passos restantes a pé (o que também é mais rápido do que não usar deformações), seriam necessários os 6 movimentos, depois os dois movimentos para o segundo warp.
Edição: Eu percebi que o caminho azul vai realmente levar 12 movimentos, em vez de 8, mas a questão permanece a mesma.