search

search problems

video link Harvard Machine Learning

search problems

node

approach
在这里插入图片描述

Frontier

在计算机科学和算法领域,frontier(前沿)通常指的是在某些搜索或遍历算法中的边界节点集合,这些节点是当前探索到的但还没有被完全处理的节点。前沿的概念常出现在以下几类问题中:

1. 搜索算法中的 Frontier:

在图算法或路径搜索问题中,frontier 表示正在探索的边界。它包含那些已经被发现但还未展开的节点。举几个常见的搜索算法来说明:

  • 广度优先搜索 (BFS)

    • 在 BFS 中,frontier 就是当前层级所有等待处理的节点。每处理一个节点,都会将其相邻的节点(下一层的节点)添加到 frontier 中,直到找到目标或搜索完所有节点。
  • 深度优先搜索 (DFS)

    • 在 DFS 中,frontier 通常是递归调用栈或显式使用的栈,它保存着当前路径上未完全探索的节点。
  • 启发式搜索 (A 算法)*:

    • 在 A* 搜索中,frontier 通常是一个优先队列(通常叫做 open set),它包含所有发现但尚未处理的节点,并根据启发式函数的值(如路径代价估算)决定处理顺序。

2. AI 规划中的 Frontier:

在人工智能规划领域,frontier 是指在状态空间搜索中已经扩展过的状态与尚未扩展的状态之间的边界。例如,规划算法会从初始状态开始探索,frontier 代表那些已经生成但尚未展开的可能状态。

3. 前沿在探索问题中的应用:

在涉及探索问题(如迷宫解题、机器人路径规划等)中,frontier 表示当前已知区域和未知区域的边界,探索过程中会从 frontier 中选择节点或位置继续探索。

例子:广度优先搜索中的 Frontier

在广度优先搜索中,frontier 通常被实现为一个队列,用来存储待探索的节点。伪代码如下:

def bfs(graph, start):
    frontier = [start]  # 初始节点
    visited = set()     # 已访问节点

    while frontier:
        current_node = frontier.pop(0)  # 取出frontier中的第一个节点
        if current_node in visited:
            continue
        visited.add(current_node)
        
        # 扩展当前节点
        for neighbor in graph[current_node]:
            if neighbor not in visited:
                frontier.append(neighbor)
    
    return visited

在这个算法中,frontier 表示当前发现的节点,但还未处理。当我们遍历每一个节点时,它的邻居会被添加到 frontier 中,直到所有节点都被访问。

总结:

  • Frontier 表示当前的“探索边界”,是已经发现但还未处理的节点集合。
  • 该概念广泛应用于各种搜索和遍历算法中,如广度优先搜索、深度优先搜索、A* 搜索等。
    revised approach
    stack
    find a path
    depth-first search
    breath-first search
    queue

A* search

A star search video link
a Star search
在这里插入图片描述

Manhattan Distance(曼哈顿距离)是计算机科学中一种常用的距离度量方法,尤其在几何学、路径规划、图像处理和机器学习等领域广泛应用。它计算两个点之间的距离,方法是 仅考虑水平方向和竖直方向上的移动,不考虑对角线的距离。

曼哈顿定义

曼哈顿距离的计算公式

解释

  • 曼哈顿距离 模拟了在一个由垂直和水平街道组成的城市(例如纽约的曼哈顿)的网格上,两个点之间的步行距离。因此,它被称为“曼哈顿”距离。
  • 曼哈顿距离只允许沿着水平方向和竖直方向移动,无法沿对角线移动(这与欧几里得距离不同,欧几里得距离允许直接计算两点间的最短直线距离)。

在这里插入图片描述

应用领域

  1. 路径规划:在地图上的栅格路径规划中,曼哈顿距离用于估算两个点之间的最短步行距离。
  2. 机器学习:在 K 近邻算法(KNN)中,曼哈顿距离是常用的距离度量之一。
  3. 图像处理:在图像的分割和模式识别中,曼哈顿距离用于评估像素点之间的差异。

Python 实现

用 Python 计算曼哈顿距离的示例:

def manhattan_distance(p1, p2):
    return abs(p1[0] - p2[0]) + abs(p1[1] - p2[1])

# 例子
p1 = (1, 2)
p2 = (4, 6)
distance = manhattan_distance(p1, p2)
print(f"Manhattan distance: {distance}")  # 输出: 7

在这个例子中,函数 manhattan_distance 接收两个点 p1p2,并计算它们的曼哈顿距离。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值