Post


Pathfinding

  • A-Pathfinding">A* Pathfinding
  • Best-first-search">Best-First Search
  • Dijkstra-s-algorithm">Dijkstra's Algorithm

Heurísticas

La heurística de A * suele estar representada por
F = G + H

dónde :

G es el costo de movimiento desde el inicio hasta el nodo actual a lo largo de la ruta.

H es el costo probable desde el nodo actual hasta el final a lo largo del camino.

Procedimiento
Desde el nodo actual, busque los nodos vecinos (todos los nodos móviles que no están en el conjunto cerrado) e insértelos en el conjunto abierto. Si el nodo ya está en el conjunto abierto, verifique si el costo G para ese nodo es menor si usamos el cuadrado actual para llegar allí. Si es así, cambie el nodo principal al nodo actual. Si no, no hagas nada.
Encuentre el nodo del conjunto abierto con el menor costo basado en F = G + H.
Tome el nodo recién encontrado del conjunto abierto al conjunto cerrado.
Repita hasta que el final se encuentre en el conjunto abierto.

Seudo-Code

  1. --searching `map`
  2. function A_star(start, finish)
  3. closed = {}
  4. open = {}
  5.  
  6. open[start] = true
  7.  
  8. --start is the start so it has a g of 0
  9. start.g = 0
  10. --h calculated normally
  11. start.h = estimated_cost_between(start, finish)
  12. --f = g + h
  13. start.f = start.g + start.h
  14.  
  15. while #open > 0
  16. current = node in open with minimum f
  17. if current == finish then
  18. --reconstruct the path to goal
  19. return create_path(current)
  20. end
  21. closed[current] = true
  22. open[current] = nil
  23.  
  24. for _, v in ipairs(current:neighbors()) do
  25. if not closed[neighbor] and not open[neighbor] then
  26. neighbor.g = current.g + current:distanceTo(neighbor) --g is distance from start along path
  27. neighbor.h = estimated_cost_between(neighbor, finish) --h is estimated distance from node to finish along path
  28. neighbor.f = neighbor.g + neighbor.h --f=g+h
  29. open[neighbor] = true
  30. end
  31. end
  32. end
  33. end

En Delphi

Codigo fuente



INICIO ---------------------------------------------------------------------------------------------------------------------------