当前位置: 首页 > news >正文

建筑网站图片惠州网站建设翻译

建筑网站图片,惠州网站建设翻译,深圳培训网站开发,公众平台微信登录A*#xff08;A-Star#xff09;算法是一种广泛使用的寻路算法#xff0c;尤其在计算机科学和人工智能领域。 算法思想 通过评估函数来引导搜索过程#xff0c;从而找到从起始点到目标点的最短路径。评估函数通常包括两部分#xff1a;一部分是已经走过的实际距离#x… A*A-Star算法是一种广泛使用的寻路算法尤其在计算机科学和人工智能领域。 算法思想 通过评估函数来引导搜索过程从而找到从起始点到目标点的最短路径。评估函数通常包括两部分一部分是已经走过的实际距离称为g值另一部分是对当前位置到目标位置的估计距离称为h值。A*算法每次选择g值加上h值最小的节点作为下一个要访问的节点直到找到目标节点为止。 A*算法维护一个开放列表和一个关闭列表。开放列表包含待访问的节点而关闭列表包含已经访问过的节点。算法从起始节点开始将其加入开放列表。然后算法从开放列表中选择一个评估函数值最小的节点进行扩展将其邻居节点加入开放列表并将当前节点移入关闭列表。算法不断重复这个过程直到找到目标节点或者开放列表为空。 代码实现 单元格类实现 /*** 表示地图上的一个单元格*/ class Cell {int i, j; // 单元格的行和列索引int f, g, h; // f值、g值和h值Cell parent; // 父节点boolean closed, visited; // 是否关闭和是否访问过// 构造函数public Cell(int i, int j) {this.i i;this.j j;this.f 0;this.g 0;this.h 0;this.parent null;this.closed false;this.visited false;} }A*算法类实现 /*** A*算法实现类*/ public class AStar {private int[][] map; // 地图private int startI, startJ; // 起始位置的行和列索引private int endI, endJ; // 目标位置的行和列索引private ListCell openList new ArrayList(); // 开放列表private static final int DIAGONAL_COST 14; // 对角线移动的代价private static final int VERTICAL_HORIZONTAL_COST 10; // 垂直或水平移动的代价// 构造函数public AStar(int[][] map, int startI, int startJ, int endI, int endJ) {this.map map;this.startI startI;this.startJ startJ;this.endI endI;this.endJ endJ;}/*** 搜索路径*/public void search() {// 创建起始和目标单元格对象Cell start new Cell(startI, startJ);Cell end new Cell(endI, endJ);// 将起始单元格添加到开放列表中openList.add(start);while (!openList.isEmpty()) {// 按照f值对开放列表进行排序选择f值最小的单元格作为当前单元格Collections.sort(openList, Comparator.comparingInt(cell - cell.f));Cell current openList.get(0);// 如果当前单元格是目标单元格则找到路径打印路径并返回if (current.i end.i current.j end.j) {printPath(current);return;}// 从开放列表中移除当前单元格并将其标记为已关闭openList.remove(current);current.closed true;// 遍历邻居单元格for (int[] direction : directions) {int newI current.i direction[0]; // 计算新的行索引int newJ current.j direction[1]; // 计算新的列索引// 如果新的索引越界则跳过该邻居单元格的处理if (newI 0 || newI map.length || newJ 0 || newJ map[0].length) {continue;}// 如果邻居单元格是障碍物则跳过该邻居单元格的处理if (map[newI][newJ] 1) {continue;}Cell neighbor new Cell(newI, newJ);if (neighbor.closed) { // 已关闭的单元格处理continue;}// 计算代价和启发式函数值int g current.g getCost(current, neighbor);int h heuristic(neighbor, end);if (!neighbor.visited) { // 未访问过的邻居单元格处理neighbor.visited true;neighbor.parent current; // 设置父节点neighbor.g g; // 设置g值neighbor.h h; // 设置h值neighbor.f g h; // 设置f值openList.add(neighbor); // 添加到开放列表中} else if (g neighbor.g) { // 已访问过的邻居单元格且新的路径代价更小处理neighbor.parent current; // 更新父节点neighbor.g g; // 更新g值neighbor.f g neighbor.h; // 更新f值}}}System.out.println(No path found.); // 没有找到路径的情况处理}// 计算从当前单元格到邻居单元格的代价private int getCost(Cell current, Cell neighbor) {int dx Math.abs(current.i - neighbor.i);int dy Math.abs(current.j - neighbor.j);if (dx 1 dy 1) { // 对角线移动return DIAGONAL_COST;} else { // 垂直或水平移动return VERTICAL_HORIZONTAL_COST;}}// 启发式函数计算当前单元格到目标单元格的预计代价private int heuristic(Cell current, Cell goal) {int dx Math.abs(current.i - goal.i);int dy Math.abs(current.j - goal.j);return dx dy; // 使用曼哈顿距离作为启发式函数}// 打印路径private void printPath(Cell end) {ListCell path new ArrayList();Cell current end;while (current ! null) {path.add(current);current current.parent;}Collections.reverse(path);System.out.print(Path: );for (Cell cell : path) {System.out.print(( cell.i , cell.j ) );}System.out.println();}// 八个方向的移动向量private static final int[][] directions {{-1, -1}, {-1, 0}, {-1, 1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}};public static void main(String[] args) {int[][] map {{0, 0, 0, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 0, 0, 0}, {0, 1, 1, 1, 0}, {0, 0, 0, 0, 0}}; // 定义地图0表示可通过1表示障碍物//打印一次地图用于观察for (int[] arr : map) {for (int x : arr) {System.out.print(x );}System.out.println();}AStar astar new AStar(map, 0, 0, 4, 4); // 创建A*对象设置起始位置和目标位置astar.search(); // 搜索路径} }以下是它的优点和缺点 优点 完整性A* 算法总是能找到从起始点到目标点的最短路径只要这样的路径存在。最优性A* 算法找到的路径是最短的或者说代价最小的。启发式搜索A* 算法采用启发式函数来引导搜索过程提高了搜索效率。 缺点 空间复杂度较高A* 算法需要存储搜索过程中的所有节点因此在复杂地图或大数据集上运行时可能会占用大量内存。时间复杂度较高尽管 A* 算法比许多其他搜索算法更高效但在大规模问题中搜索时间可能会变得很长。对启发式函数依赖性强A* 算法的效率在很大程度上取决于选择的启发式函数。如果启发式函数选择不当可能会导致搜索效率低下。 以上就是 A* 算法的优缺点需要根据具体的应用场景来决定是否使用 A* 算法。
http://www.sadfv.cn/news/35847/

相关文章:

  • 镇江网站建设咨询网站营运费
  • 免费发外链的网站青岛 网站制作公司
  • 海尔网站的建设特点企业网站建设有什么
  • 南山做网站公司在哪里网络营销策略主要包括
  • wordpress怎么修改登录界面网站优化试题
  • 个人网站用wordpress吗网店美工需要学什么软件
  • 滨海网站建设服务商wordpress 主体
  • 大型建站公司注册网络公司
  • 网站建设的认可国际知名设计公司有哪些
  • 成都私人做网站建设的公司建筑学网站推荐
  • 徐州网站制作方案查查企业信息查询平台
  • 自己做的网站网页错位国内重大新闻2023
  • 网站的ftp在哪里可以查到施工企业安全生产评价标准最新版2021
  • 河南城乡住房和建设厅网站优化方案物理电子版
  • ks刷粉网站推广马上刷小程序商城名字大全
  • ftp怎么设置网站首页教育直播网站建设
  • iis 网站乱码建立网站的目的是什么
  • 沈阳红方城网站建设广告公司属于什么行业
  • 兰州网站外包微信运营软件
  • 中国和住房城乡建设部网站首页torrentkitty磁力官网
  • 优质的网站建设推广北京网站优化济南兴田德润简介电话
  • 图片网站制作html5 微网站开发
  • 万网 网站建设国内网站没备案
  • 学校网站的目的高邮市建设局网站
  • 营销型网站建设测验题wordpress博客自媒体资讯主题
  • 做设计有哪些免费网站北京网站建设公司朝阳
  • 企业网站建设服务好设计公司工作室
  • 瀑布流网站模板做网络推广网站有哪些
  • 做网站推广的方法有哪些网站 备案 在哪
  • 响应式网站滑动查询网站开发