【问题标题】:Data Structure for A* AlgorithmA* 算法的数据结构
【发布时间】:2015-05-09 10:58:42
【问题描述】:

关闭此链接:http://www.policyalmanac.org/games/aStarTutorial.htm

对于给定的位图,哪种数据结构最适合跟踪启发式、移动成本以及两者的总和?我一直在考虑的两个主要是 SortedSet 和 SortedList。其他消息来源说要使用优先级队列,但据我所知,C# 没有。

所以要跟踪的事情是:

  • 像素的 x 和 y 坐标。
  • 移动成本(无对角线)
  • Hueristics(使用曼哈顿距离)
  • 两者之和
  • 节点的父节点

我打算创建一个节点对象,它具有以下内容:

  • 元组(x坐标,y坐标)
  • 父节点

我应该使用什么数据结构以及我应该如何组织我的节点以最好地满足我的需求?

【问题讨论】:

标签: c# data-structures a-star sortedlist sortedset


【解决方案1】:

使用优先级队列来保存已开发的节点,比较每个节点的 (d + h) 以将它们排序到优先级队列中。 “d”是节点的当前深度,“h”是节点的计算启发值或估计的未来步数。

【讨论】: