把地图分成若干个格子,把起始点的格子上标作 0 。然后根据将周围一圈可以通畅的格子上标为1。然后再把所有标上 1 的格子周围可以通达的格子标为 2 ,当然,如果那些格子上已经有过数字了(一定比 2 小)就不用标了。
如此反复迭代下去,我们地图上的终点只要可以通达,就一定会被标上数字。而这个数字就是理论最短的距离,而标记过的每个格子都有一个前导的入口(即它由附近一个比它小 1 的格子引导过来)整个标记的过程逆推,也就找到了最短路径。
这种一步步尝试的过程,就是一种搜索过程。如果加上启发函数,不让它盲目的寻找,就衍生出很多启发式搜索算法。A* 是其中的一种。之所以加一个 * 号,是因为它的启发式函数是有限制的,这个限制确保它能找到绝对最优解,去掉这个限制,就是 A 算法了。