A星算法

项目中需寻找地图上起点到终点的最短路径,对比了Dijkstra算法和A星算法。A星算法因其启发式特性在速度和精度间取得平衡,被选中。文章介绍了A星算法,并提供了Java实现代码的下载链接。
摘要由CSDN通过智能技术生成

之前做的一个项目,现在才把它记录下来,项目中有一个这样功能,用户在地图上面选择起点、终点,需要在地图上面寻找一条最短的路径并显示到地图上。

在寻路中有两个比较常用的算法,一个迪杰斯特(Dijkstra)算法,迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。因为它是一个广度优先的算法,所以它的效率会比较低。另外一个是A星算法,它是基于启发式代价函数,启发式函数在应用和游戏中非常有用。在速度和精确度之间取得折中将会让你的程序运行得更快。

下面是我实现的代码:

package com.heng.test.map;

import java.util.*;

/**
 * A*算法
 * @author 黎荣恒
 *
 */
public class AStar {
	
	private int[][] map;// 地图(0可通过 1不可通过)
	private List<Node> openList;// 开启列表
	private List<Node> closeList;// 关闭列表
	private final int COST_STRAIGHT = 10;// 垂直方向或水平方向移动的路径评分
	private final int COST_DIAGONAL = 14;// 斜方向移动的路径评分
	private int row;// 行
	private int column;// 列
	
	public AStar(int[][] map, int row, int column) {
		this.map = map;
		this.row = row;//行
		this.column = column;//列
		openList = new ArrayList<Node>();//初始化开启列表
		closeList = new ArrayList<Node>();//初始化关闭列表
	}

	/**
	 *  查找坐标
	 * @param x1	起点x轴坐标
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值