A* 寻路

启发式搜索:f = g + h,优先扩展 f 最小的格子,网格寻路一目了然。

A* 寻路
01 / 42 步
A* 寻路:起点 S(0,0) → 终点 G(4,4),黑色为障碍。曼哈顿启发式。
伪代码

				
					
					1
					// A* 寻路
				
			
				
					
					2
					open = { start }
				
			
				
					
					3
					while open 非空 do
				
			
				
					
					4
					  n = open 中 f(n) 最小的节点
				
			
				
					
					5
					  if n == goal then 成功返回路径
				
			
				
					
					6
					  for 每个邻居 m do
				
			
				
					
					7
					    g(m) = g(n) + 代价
				
			
				
					
					8
					    f(m) = g(m) + h(m)
				
			
				
					
					9
					    open 加入 m 或更新
				
			
				
					
					10
					  end for
				
			
				
					
					11
					end while
				
			
01 / 42
速度