You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

A*寻路算法中SortedSet无法移除部分元素的问题排查

可行的修复方案
  • 改用.NET内置的PriorityQueue(推荐):.NET 6及以上版本提供的PriorityQueue类,专门适配A*这类按优先级取元素的场景。它无需元素实现IComparable,通过入队时指定的优先级(即F值)排序,支持同一元素多次入队,不会出现查找/移除失败的问题。
  • 调整SortedSet的使用方式:若必须使用SortedSet,需确保:
    • 节点加入集合后不再修改F/H值;若需更新,先移除节点,修改后重新加入。
    • 重新实现CompareTo,仅用Index判断元素相等,排序逻辑保留F/H比较,但要避免同一Index的节点重复加入集合。
  • 继续使用List:保留List实现,每次遍历找到F值最小的节点(性能略低于SortedSet/PriorityQueue,但逻辑简单稳定)。

内容的提问来源于stack exchange,提问作者The RESEARCHER

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:32:46