C# A*算法的数据结构

C# A*算法的数据结构,c#,data-structures,a-star,sortedlist,sortedset,C#,Data Structures,A Star,Sortedlist,Sortedset,退出此链接: 对于给定位图,哪种数据结构最适合跟踪启发式、移动成本以及两者之和?我一直在思考的两个主要问题是SortedSet和SortedList。其他消息来源说使用优先级队列,但据我所知,C#没有优先级队列 因此,需要跟踪的事项包括: 像素的x和y坐标 移动成本(无对角线) Hueristics(使用曼哈顿距离) 两者之和 节点的父节点 我计划创建一个节点对象,该对象将具有以下内容: 元组(xcoordinate,ycoordinate) 父节点 我应该使用什么样的数据结构?我应该如

退出此链接:

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

因此,需要跟踪的事项包括:

  • 像素的x和y坐标
  • 移动成本(无对角线)
  • Hueristics(使用曼哈顿距离)
  • 两者之和
  • 节点的父节点
我计划创建一个节点对象,该对象将具有以下内容:

  • 元组(xcoordinate,ycoordinate)
  • 父节点

我应该使用什么样的数据结构?我应该如何组织我的节点以最适合我的需要?

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

我将在C#中实现我自己的堆,并在A*中使用它,因为它最适合这里。您应该阅读以下文章:我将阅读,谢谢!