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

网站建设对于企业的意义wordpress上传网页

网站建设对于企业的意义,wordpress上传网页,武安市住房和城乡规划建设局网站,百度添加到桌面A*算法是一种广泛使用的路径搜索算法,结合了启发式搜索和Dijkstra算法的优点。它通过评估每个节点的代价函数 ( f(n) g(n) h(n) ) 来选择最优路径,其中: ( g(n) ) 是从起点到当前节点的实际代价。( h(n) ) 是从当前节点到目标节点的启发式…

A*算法是一种广泛使用的路径搜索算法,结合了启发式搜索和Dijkstra算法的优点。它通过评估每个节点的代价函数 ( f(n) = g(n) + h(n) ) 来选择最优路径,其中:

  • ( g(n) ) 是从起点到当前节点的实际代价。
  • ( h(n) ) 是从当前节点到目标节点的启发式估计代价(如曼哈顿距离或欧几里得距离)。

以下是一个Python实现的A*算法示例:


Python实现A*算法

import heapq
from math import sqrtclass Node:def __init__(self, position, parent=None):self.position = position  # 节点的坐标 (x, y)self.parent = parent     # 父节点self.g = 0               # 从起点到当前节点的实际代价self.h = 0               # 启发式估计代价self.f = 0               # 总代价 f = g + hdef __eq__(self, other):return self.position == other.positiondef __lt__(self, other):return self.f < other.fdef heuristic(a, b):"""启发式函数:计算曼哈顿距离"""return abs(a[0] - b[0]) + abs(a[1] - b[1])def a_star(grid, start, end):"""A*算法实现"""open_list = []  # 优先队列,存储待探索的节点closed_list = set()  # 存储已探索的节点start_node = Node(start)end_node = Node(end)heapq.heappush(open_list, start_node)while open_list:current_node = heapq.heappop(open_list)closed_list.add(current_node.position)# 如果找到目标节点,返回路径if current_node == end_node:path = []while current_node:path.append(current_node.position)current_node = current_node.parentreturn path[::-1]  # 反转路径,从起点到终点# 遍历当前节点的邻居for neighbor in [(0, -1), (0, 1), (-1, 0), (1, 0)]:  # 上下左右四个方向neighbor_position = (current_node.position[0] + neighbor[0], current_node.position[1] + neighbor[1])# 检查邻居是否在地图范围内且不是障碍物if (neighbor_position[0] < 0 or neighbor_position[0] >= len(grid) orneighbor_position[1] < 0 or neighbor_position[1] >= len(grid[0]) orgrid[neighbor_position[0]][neighbor_position[1]] == 1):continue# 创建邻居节点neighbor_node = Node(neighbor_position, current_node)# 如果邻居节点已经探索过,跳过if neighbor_node.position in closed_list:continue# 计算 g, h, f 值neighbor_node.g = current_node.g + 1neighbor_node.h = heuristic(neighbor_node.position, end_node.position)neighbor_node.f = neighbor_node.g + neighbor_node.h# 如果邻居节点已经在 open_list 中且新代价更高,跳过if any(neighbor_node == open_node and neighbor_node.g > open_node.g for open_node in open_list):continue# 将邻居节点加入 open_listheapq.heappush(open_list, neighbor_node)return None  # 如果没有找到路径,返回 None# 示例地图 (0 表示可通行,1 表示障碍物)
grid = [[0, 0, 0, 0, 1, 0],[0, 1, 1, 0, 1, 0],[0, 0, 0, 0, 1, 0],[0, 1, 0, 1, 1, 0],[0, 0, 0, 0, 0, 0]
]# 起点和终点
start = (0, 0)
end = (4, 5)# 运行A*算法
path = a_star(grid, start, end)
if path:print("找到路径:", path)
else:print("未找到路径")

代码说明:

  1. Node:表示搜索中的每个节点,包含位置、父节点、代价等信息。
  2. heuristic 函数:计算启发式估计代价(这里使用曼哈顿距离)。
  3. a_star 函数:实现A*算法的核心逻辑,使用优先队列(堆)来管理待探索的节点。
  4. 地图表示grid 是一个二维列表,0 表示可通行的路径,1 表示障碍物。
  5. 路径返回:如果找到路径,返回从起点到终点的坐标列表;否则返回 None

示例输出:

对于上面的地图,输出可能是:

找到路径: [(0, 0), (0, 1), (0, 2), (1, 2), (2, 2), (2, 3), (3, 3), (4, 3), (4, 4), (4, 5)]

扩展:

  • 启发式函数:可以替换为欧几里得距离或其他更适合的启发式函数。
  • 地图生成:可以从文件中读取地图,或动态生成随机地图。
  • 可视化:可以使用 matplotlibpygame 可视化路径搜索过程。
http://www.dtcms.com/a/486843.html

相关文章:

  • OFD转PDF技术方案:快速实现一键批量转换
  • 网站页面布局模板电商网站系统建设考试
  • 【完整源码+数据集+部署教程】 【运动的&足球】足球场景目标检测系统源码&数据集全套:改进yolo11-ASF-P2
  • 免费发布信息网站网址大全网站做cnzz流量统计
  • 手机群控软件实现多设备监控与测试的技术解析
  • 自定义Spring Boot Starter项目并且在其他项目中通过pom引入使用
  • 做网站后台系统的规范为什么会显示危险网站
  • [tile-lang] docs | 基准测试 | GEMM示例
  • 网站开发培训收费邯郸外贸网站建设
  • commons-imaging(图像处理库)
  • 打渔网站建设南冒网站建设制作推广公司
  • 可以充值的网站怎么建设wordpress英文文章格式
  • 惠州网站设计公司网站建设做什么会计分录
  • 基于自动驾驶仿真软件的交通事故档案建模与分析
  • Cursor 脚本如何进入Conda环境
  • Flink-Kafka 连接器的 Checkpoint 与 Offset 管理机制
  • 域名备案查询网站有哪些手机网站
  • C++智能指针的原理与应用
  • 做淘宝那样的网站麻烦吗宜昌网站网站建设
  • wordpress小说站模板wordpress在线教程
  • HTTP(2)~
  • 建网站需要什么条件小户型室内装修设计公司网站
  • 【深度学习】目标检测全解析:定义、数据集、评估指标与主流算法
  • 做网站构架河南app定制开发
  • 2025年--Lc187--120. 三角形最小路径和(多维动态规划,矩阵)--Java版
  • 脑电分析——论文解读
  • HTTPS 包 抓取与分析实战,从抓包到解密、故障定位与真机取证
  • 做网站实训目的和意义公司网页制作培训试题
  • 影响DCDC输出纹波的因素有哪些?
  • 婴儿辅食中企动力提供网站建设自适应全屏网站