高级搜索

作者: 云莉6 | 来源:发表于2020-04-27 15:51 被阅读0次

剪枝

Alpha-beta 剪枝是一种搜索算法,用以减少极小化极大算法(Minimax 算法)搜索树的节点数。这是一种对抗性搜索算法,主要应用于机器游玩的二人游戏(如井字棋、象棋、围棋)。当算法评估出其策略的后续走法比之前策略还差时,就会停止计算该策略的后续发展。该算法和极小化极大算法所得结论相同,但剪去了不影响最终决定的分枝。

双向 BFS

从 begin -> end 遍历和从 end -> begin同时进行,当待遍历的队列哪个短先遍历哪个。结束条件是,双向BFS遍历碰头。

启发式搜索

启发式函数:h(n),它用来评价哪些结点最有希望是我们要找的结点。h(n) 会返回一个非负实数,也可以认为是从结点 n 的目标结点路径的估计成本。
启发式函数是一种告知搜索方向的方法。它提供了一种明智的方法来猜测哪个邻居 结点会导向一个目标。

A*搜索算法

A* 搜索算法(A* search algorithm)是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或网络游戏的BOT的移动计算上。

该算法综合了最良优先搜索和Dijkstra算法的优点:在进行启发式搜索提高算法效率的同时,可以保证找到一条最优路径(基于评估函数)。

在此算法中,如果以 g(n) 表示从起点到任意顶点 n 的实际距离, h(n) 表示任意顶点 n 到目标顶点的估算距离(根据所采用的评估函数的不同而变化),那么A* 算法的估算函数为:

f(n) = g(n) + h(n)}

这个公式遵循以下特性:

  • 如果 g(n) 为0,即只计算任意顶点 n 到目标的评估函数 h(n),而不计算起点到顶点 n的距离,则算法转化为使用贪心策略的最良优先搜索,速度最快,但可能得不出最优解;
  • 如果 h(n) 不大于顶点 n 到目标顶点的实际距离,则一定可以求出最优解,而且 h(n) 越小,需要计算的节点越多,算法效率越低,常见的评估函数有——欧几里得距离、曼哈顿距离、切比雪夫距离;
  • 如果 h(n) 为0,即只需求出起点到任意顶点 n 的最短路径 g(n),而不计算任何评估函数 h(n),则转化为单源最短路径问题,即Dijkstra算法,此时需要计算最多的顶点;

A*代码模板

def AstarSearch(graph, start, end):

   pq = collections.priority_queue() # 优先级 —> 估价函数
   pq.append([start])
   visited.add(start)

   while pq:
       node = pq.pop() # can we add more intelligence here ?
       visited.add(node)

       process(node)
       nodes = generate_related_nodes(node)

   unvisited = [node for node in nodes if node not in visited]
   pq.push(unvisited)

相关文章

  • 你真的会用搜索引擎吗

    1.关键词搜索,如:查找搜索引擎的高级搜索方法 输入:搜索引擎 高级搜索输出:包含 搜索引擎和高级搜索两个关键词的...

  • 高级搜索

    一般就经常使用 "关键词+空格+限定范围"

  • 高级搜索

    剪枝 Alpha-beta 剪枝是一种搜索算法,用以减少极小化极大算法(Minimax 算法)搜索树的节点数。这是...

  • Google 高级搜索

    Google 进阶——高级搜索 Google 作为全球最大的搜索引擎,不仅有简单的普通搜索,还有相对高级的搜索方法...

  • 使用Github的高级搜索功能

    使用Github的高级搜索功能 1. 首先,提供Github高级搜索帮助页面 https://help.githu...

  • 【git】github入门

    参考文章 Pro Git 高级搜索 github高级搜索入口 fork fork的本意是叉子,动词作"分叉"讲,在...

  • SEO常用高级搜索指令,你学会了吗?

    1. SEO对于site高级搜索指令的运用 site指令是SEO必用的高级搜索指令之一,SEO主要可用来查找搜索引...

  • google高级搜索

    双引号 将搜索词放在英文双引号内,表示完全匹配 减号 搜索结果里不要包含减号后面的词。减号前面需要加个空格,减号后...

  • 高级搜索指令

    必应的高级搜索指令: (表格内容来源于网络) 其他 1、双引号(关键词) 在搜索词汇加入双引号,代表完全匹配搜索,...

  • 谷歌高级搜索

    26个常用谷歌搜索指令符: 一、site 指定搜索的某个网站。例:desire site:bbs.gfan.com...

网友评论

    本文标题:高级搜索

    本文链接:https://www.haomeiwen.com/subject/pmtuwhtx.html