人工智能中与最佳优先搜索相关的问题有哪些?

2024-01-18

我知道一般问题包括局部最大值和高原,但是我很好奇是否还有与此特定搜索相关的更多问题,以及为了克服这些问题我的最佳行动方案是什么。

有人还可以给我一个例子,说明该搜索适合用于哪种类型的问题吗?


最佳优先搜索的问题:

  1. 它很贪婪。在许多情况下,它会带来非常快速的解决方案 (因为你开发的节点数没有增加 呈指数增长,随着深度的增加而线性增加 解决方案!),但是它通常没有优化,因为你的 启发式函数有一定的误差,有时会出错 回答要探索的下一个节点。
  2. 无限分支还存在一个问题。假设你是 跟随深度节点的分支i具有启发价值h(v_i) = 2^-i。你永远不会达到零,但首先贪婪是最好的 将继续开发这些节点。
    Example:

                            2
                           / \  
                          /   \
                         /     \
                        1      1.5
                        |       |
                       1/2      1
                        |       |
                       1/4      0
                        |
                       1/8
                        |
                       1/16
                        |
                       ... 
    

注意上面的是允许的启发函数 http://en.wikipedia.org/wiki/Admissible_heuristic,但尽管如此,最好的首次搜索永远不会得到解决方案,它会陷入无限分支。

解决方案:

  1. 为了克服它,我们可以使用统一算法(例如 Dijkstra 算法) 算法或未加权图的 BFS)
  2. 您可以结合使用“最佳优先搜索”和 Dijkstra, 被称为A*算法 http://en.wikipedia.org/wiki/A*_search_algorithm.
    A*算法实际上是一种贪婪最佳优先算法,只不过不是根据选择h(v),您选择了接下来要探索的节点f(v) = h(v) + g(v) (where g(v)是“到目前为止的成本”。如果给定一个解,则该算法是完整的(如果存在,则找到一个解决方案)并且是最优的(找到“最佳”解决方案)允许的启发函数 http://en.wikipedia.org/wiki/Admissible_heuristic.

何时使用最佳优先搜索:

  1. 如果你有一个完美的启发式(表示为h*在文献中),最好的首次搜索将找到最佳解决方案 - 而且速度很快。
  2. 如果您不关心最佳解决方案,您只想快速找到一个解决方案 - 它通常可以解决问题(但您必须小心无限分支问题)。
  3. 当我们使用 A* 时,我们实际上使用的是最佳优先搜索 - 但在f:V->R而不是在h:V->R.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人工智能中与最佳优先搜索相关的问题有哪些? 的相关文章

  • RNG 技术的可移植性和可重复性

    我可以使用两种方法之一来创建一个伪随机数序列 该序列具有两个重要特征 1 它可以在不同的机器上重现 2 该序列永远不会重复范围内的数字 直到所有数字都被发出 我的问题是 这两种方法在可移植性 操作系统 Python 版本等 方面是否存在潜在
  • Python 将字符串组合成尽可能短的字符串?

    如果我有一个字符串列表 我想将它们组合成一个具有重叠字符的字符串 如果没有剩余的重叠字符串 请将其添加到末尾 这是一个过于简化的版本 input one two output twone 我正在寻找一种方法来对输入列表中的任意数量的字符串执
  • 如何让 Prolog 解释你的结果超出真实的陈述

    我有以下事实和规则 flight sea msp flight msp jfk route A B flight A B route B A flight A B route A C flight A B flight B C 当查询rou
  • 二分查找问题? [复制]

    这个问题在这里已经有答案了 可能的重复 实施二分查找有哪些陷阱 https stackoverflow com questions 504335 what are the pitfalls in implementing binary se
  • 将 X 插入到排序列表中的正确位置

    在序言中 如何将 X 插入到排序列表中的正确位置 我的尝试 insert X Y Rest X Y Rest X lt Y insert X Rest BiggerRest 您的方向是正确的 但您需要解决这三个问题 insert X X i
  • 如何防止我的程序陷入局部最大值(前馈人工神经网络和遗传算法)

    我正在开发一个前馈人工神经网络 ffann 它将以简单计算的形式获取输入并返回结果 充当袖珍计算器 结果不会很准确 人工网络使用遗传算法对权重进行训练 目前我的程序陷入局部最大值 正确答案为 5 6 误差范围为 1 30 正确答案 10 误
  • 如何计算加权平均值?

    我的语言是PHP 但是算法应该是相当通用的 我有一个关联数组 比方说 评级和评级次数 ratings array 1 gt 1 2 gt 3 3 gt 6 4 gt 3 5 gt 3 这相当于 1 2 2 2 3 3 3 3 3 3 4 4
  • 将所有奇数位置的元素移动到左半部分,将偶数位置的元素移动到右半部分

    给定一个包含正整数和负整数的数组 将所有奇数索引元素移动到左侧 将偶数索引元素移动到右侧 问题的难点是在维持秩序的同时就地做 e g 7 5 6 3 8 4 2 1 输出应该是 5 3 4 1 7 6 8 2 如果顺序不重要 我们可以使用快
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • 变量的多个值介于 0 和数字序言之间

    所以我一直在尝试自学序言 我认为我进展顺利 然而 我有点坚持我正在尝试的这一种方法 toN N A A 等于 0 到 N 1 之间的整数值 按升序生成 所以 toN 5 A 将是 A 0 A 1 A 2 A 3 A 4 我对序言还很陌生 所
  • 在小于 O(n) 的时间内检查凸多边形交集?

    我有 2 个凸多边形 2d 我想检查这 2 个多边形是否相交 事实上 我会多次移动和旋转多边形 所以我也可以做一些预计算来获得这个问题的快速答案 我正在寻找一种低复杂度的算法 我知道可以检查一个点是否位于 O log n 的凸多边形中 我想
  • 欧拉项目 #18 方法

    我正在研究一个欧拉项目 具体来说 18 总而言之 这个想法是从三角形中找到最大路径 3 7 4 2 4 6 8 5 9 3 3 7 4 9 23 读到这里 大多数人表示 通过从下到上工作可以正确解决这个问题 而不是使用从上到下 贪婪 工作的
  • 快速查找具有最大总不同元素的列表列表的子集

    给定元组列表的列表 我想找到列表的子集 该子集最大化不同整数值的数量 而不重复任何整数 该列表看起来像这样 x 1 2 3 8 9 10 15 16 2 3 10 11 9 10 11 17 18 19 20 21 22 4 5 11 12
  • 为什么路径压缩不会改变 UnionFind 中的排名?

    我正在研究 UnionFind 的实现 并从这里进行排序和路径压缩http en wikipedia org wiki Disjoint set data struct Disjoint set forests http en wikipe
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • Networkx 中 Louvain 分区的可视化

    请帮助我更改 Louvain 聚类算法结果的可视化 我从网站上获取了代码https github com taynaud python louvain https github com taynaud python louvain我可以重写
  • 使用按键重新排列字符串

    我想使用Pythonrandomly根据给定的键重新排列字符串的各个部分 我还想用相同的密钥恢复原始字符串 def rearrange key data pass def restore key rearranged data pass 效
  • Haskell:先进先出队列算法的复杂性

    这是我对 FIFO 队列的尝试 type Queue a a gt a empty Queue a empty id remove Int gt Queue a gt a Queue a remove n queue take n queu
  • 神经网络误差随每个训练示例而振荡

    我已经实现了一个反向传播神经网络并根据我的数据对其进行了训练 数据在英语和非洲语句子之间交替 神经网络应该识别输入的语言 网络结构为27 16 2 输入层对于字母表中的每个字母都有 26 个输入加上一个偏置单元 我的问题是 当遇到每个新的训
  • 算法挑战:从图像生成配色方案

    背景 因此 我正在开发一个网络应用程序的新版本 而且 我们发现我们的用户非常懒惰 实在是太懒了 事实上 我们为他们做的工作越多 他们就越喜欢这项服务 现有应用程序的一部分要求用户选择要使用的配色方案 但是 我们有一张图片 用户网站的截图 为

随机推荐