A*算法中使用PriorityQueue
来管理待探索节点的集合,根据每个节点的f分数(g分数+启发式估计)进行排序。这样可以确保每次总是从开放集中选择f分数最低的节点进行探索,这是A*算法的核心思想之一。
基于A*算法的路径查找器,适用于在网格地图上寻找从起点到终点的最佳路径。以下是对其主要组成部分的解释:
using Common;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
namespace Kernel
{
public static class PathFinder
{
private static GridMap _map = new GridMap(width: 100, height: 100); // 假设地图尺寸
public static List<Point> AStar(Point start, Point end, List<Point> avoidPoints = null)
{
// 转换 avoidPoints 为 Node 列表
var avoidNodes = avoidPoints?
.Select(p => _map.GetNode(p.X, p.Y))