2022/2/22 BFS 迪杰斯特拉 A* 寻路算法

本文介绍了A*搜索算法,它结合了BFS和贪心策略,常用于游戏寻路。BFS以广度优先的方式扩散,而贪心算法如迪杰斯特拉可能会陷入局部最优。A*算法通过评估函数f=g+h优化路径寻找,g表示起点到当前位置的距离,h为目标到当前位置的启发式估计。文章还探讨了存图的邻接矩阵和邻接表方法,以及迪杰斯特拉算法的步骤,并提到了相关资源供深入学习。
摘要由CSDN通过智能技术生成

A* search:

结合BFS和贪心算法,通常用于游戏寻路。A*是启发式搜索算法的其中一种

BFS:

像涟漪一样一圈一圈往外扩散,但是不会理会终点在哪

广度优先,把起点存入队列,把起点上下左右没有访问过的点加入队列,起点出列。要存节点的状态,可以用数组直接记录状态,或者用结构体添加状态属性。

struct Node
{
	int x, y;
	int state = 0;
};
int dir[4][2] = {
	{-1,0},{0,-1},{1,0},{0,1}
};//左下右上方向
//int room[9][9]={'.'};
void BFS(int dx, int dy)
{
	Node start, next;
	queue<Node> q;
	start.x = dx;
	start.y = dy;
	q.push(start);
	while (!q.empty())
	{
		start = q.front();
		q.pop();
		for (int i = 0; i < 4; i++)
		{
			next.x = start.x + dir[i][0];
			next.y = start.y + dir[i][1];
			if (next.x &g
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值