问题描述
需要一些澄清,因为我似乎无法获得答案。在为网格编写astar算法时,我想知道它是要用于任何大小的矩形还是仅适用于正方形网格? 如果有处理矩形启发式的特定方法,那是什么?
如果人们需要知道我是用C ++编写供UE4使用的。
谢谢大家!
解决方法
否,A *根本不需要网格。您可以使用任何节点位置,并且只要您的启发式是可接受的,A *就可以使用。
实际上,如果可以保证您的启发式算法是可以接受的(即保证永远不会高估距离),则您的节点实际上根本不需要位置。当然,许多实际应用中的节点确实具有特定的位置,而欧几里得距离是一种方便的可允许的启发式方法。
要做矩形网格工作的唯一要做的就是确保度量标准正确。也就是说:您的节点到节点的距离和欧几里得距离的计算必须正确反映网格的水平和垂直间距。