人工智能-搜索----启发式搜索

article/2025/10/24 2:42:12

搜索算法的形式化描述:

<状态state、动作motion、状态转移state transition、路径path、测试目标test target>

一、启发式搜索(有信息搜索)(Heuristic  Search)

代表算法:贪婪最佳优先搜索(Greedy best-first search)A*搜索

启发式搜索需要有:

1、辅助信息,也就是与求解问题相关的额外信息,就跟做数学题时的已知条件一样,根据已知条件求解。

2、评价函数(evaluation function)f(n),从当前节点n出发,根据评价函数来选择后续节点。

3、启发函数(heuristic function)h(n),计算从节点n到目标节点所形成路径的最小代价值。

例如下图所示的一个城市路线图,要求搜索目标为找到一条从Arad-->Buchareat的最短路径

辅助信息:任意一个城市与Bucharest的直线距离

利用GBFS算法:

f(n)=h(n):下一个节点=当前节点到目标节点为最小代价的节点

过程:从起始状态(start state)Arad根据辅助信息寻找下一个可能成为最短路径的城市,也就是寻找与Arad相邻的城市中与Buchareat的直线距离最短的那个城市作为下一个状态(state),也就是Sibiu,依次往下寻找,最后找到最短路径:

Arad-->Sibu-->Fagaras-->Bucharest

因为这个搜索过程每次在确定下一个候选节点的时候,总是选择那个到达目标城市直线距离最短的节点, 所以称其为贪婪最佳优先搜索。但是通过结果我们可以发现,算法得到的路线Arad-->Sibu-->Fagaras-->Bucharest比Arad-->Rimnicu Vilcea-->Pitesti-->Bucharest路线还多出32公里,因此GBFS算法不是最优的而且也是不完备的因为它可能沿着一条无限路径走下去而不回来做其他尝试,距离目标节点直线距离最近的节点组成的路径不可能都是最短路径,这种搜索算法得到的实际路线可能会绕路,或者根本到达不了目标节点。比如,搜索从Iasi-->Fagaras的最短路径,根据GBFS算法由启发式建议需先扩展Neamt,这样就形成了一条死循环路径。最坏的情况下,GBFS算法的时间复杂度和空间复杂度都是O(b^m),其中b是节点的分支因子数目,m是搜索空间的最大深度。因此,需要设计一个良好的启发式函数(Heuristic Function)。

为了解决GBFS算法的不足,A*算法被提出。

下面我们介绍一下A*算法:

评价函数:f(n)=g(n)+h(n)  

其中,g(n) 表示从起始节点到节点n的开销代价值,

           h(n) 表示从节点n到目标节点路径中所估算的最小开销代价值,

           f(n) 视为经过节点n、具有最小开销代价值的路径。

为了保证A*算法是最优(optimal),需要启发函数 h(n) 是可容的(admissible heuristic)和一致的(consistency,或者也称单调性,即 monotonicity)

算法过程;

以上我们可以得出A*算法是最优的,其保持最优的条件就是启发函数具有可溶性(admissible)和一致性 (aconsistency)。

上述将直线距离作为启发函数h(n),则启发函数一定是可容的,因为直线距离最短,不会高估开销代价。

g(n) 是从起始节点到节点n的实际代价开销,且f(n) = g(n) + h(n),因为g(n)是确定的,我们预估的是h(n),h(n)是不会高估开销代价的,因此f(n)不会高估经过节点n路径的实际开销。

一致性条件:h(n) <= c(n,a,n')+h(n')构成了三角不等式。这里节点n、节点n'和目标节点Gn之间组成了一个三角形。如果存在一条经过节点n',从节点n到目标节点Gn的路径,其代价开销小于h(n),则破坏了h(n)是从节点n到目标节点Gn所形成的具有最小开销代价的路径这一定义。

  • Tree-search的A*算法中,如果启发式函数h(n)是可容的,则A*算法是最优的和完备的;
  • Graph-search的A*算法中,如果启发函数h(n)是一致的,A*算法是最优的。
  • 如果函数满足一致性条件,则一定满足可容条件;反之不然
  • 直线最短距离函数既是可容的也是一致的。
  • 如果h(n)是一致的(单调的),那么f(n)一定是非递减的(non-decreasing)
  • 如果A*算法将节点n选择作为具有最小代价开销的路径中一个节点,则n一定是最优路径中的一个节点。即最先被选中扩展的节点在最优路径中。

本文借鉴于mooc 吴飞老师的人工智能:模型与算法 

 

 


http://chatgpt.dhexx.cn/article/r2GICnvL.shtml

相关文章

NeevaAI人工智能搜索引擎来了

***ChatGPT 无法为您提供实时数据或事实验证&#xff0c;而NeevaAI可以** 概述 无跟踪。没有偏见。搜索不受企业影响-这是Neeva的标语。Neeva是一款订阅制搜索引擎&#xff0c;是一款很小众的的搜索引擎&#xff0c;由前Google高管Sridhar Ramaswamy创立。Neeva的目标是为用户…

人工智能之搜索方法

人工智能之搜索方法 人工智能课程复习笔记专题 人工智能绪论 人工智能之知识表示 人工智能之搜索方法 人工智能之经典逻辑推理 人工智能之专家系统 人工智能之不确定推理方法 人工智能之机器学习 一、搜索的基本概念 1、搜索的含义 根据问题实际情况&#xff0c;不…

智能搜索引擎 | 驱动电商业务增长实践

开放搜索是阿里集团搜索业务中台&#xff0c;基于大数据深度学习在线服务体系打造的智能搜索云服务产品。拥有核心引擎、召回排序、搜索引导、充分开放等核心能力&#xff0c;可应用在电商行业、教育行业、内容行业等场景。目前帮助数千家客户搭建自己的搜索业务。 实践案例&a…

搜索。。。

1、mysql的like具有局限性 # 体现在功能不全&#xff0c;性能低。不适用于全文搜索&#xff08;日志或简历中搜索字段&#xff09;、没有相关性搜索排名等等 select name from goods WHERE name LIKE "%苹果%"2、试试elasticsearch 搜索 1、解决mysql like 的短板 …

人工智能——图搜索

一&#xff0e;数据驱动和目标驱动搜索 以下情况建议使用目标驱动搜索&#xff1a; &#xff08;1&#xff09;目标或假设是在问题陈述中给出的。例如定理的证明&#xff0c;目标就是定理。 &#xff08;2&#xff09;与问题数据匹配的规则非常多&#xff0c;会产生大量分支…

人工智能搜索策略:A*算法

人工智能搜索策略&#xff1a;A*算法 目录 人工智能搜索策略&#xff1a;A*算法A算法1.全局择优搜索2.局部择优搜索 A*算法1. A*算法的可纳性2. A*算法的最优性3. h(n)的单调限制A* 算法应用举例对A*算法的一点思考熟练掌握A*算法的性质A*算法的性质A*算法的最优性h(n)的单调限…

智能搜索框

html部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, i…

Artificial Intelligence 人工智能 AI search AI 搜索

文章目录 前言一、Uninformed Search (无信息搜索&#xff09;二、Data structure for search tree三、Breadth-first search (广度优先搜索)1. Pseudocode for a BFS 四、Depth-first search (深度优先搜索)1. Pseudocode for a DFS 五、Measuring performance六、BFS和DFS时间…

搜索技术——群智能

如果有兴趣了解更多相关内容&#xff0c;欢迎来我的个人网站看看&#xff1a;瞳孔空间 一&#xff1a;初识群智能 1.1&#xff1a;粒子群算法 粒子群算法&#xff0c;也称粒子群优化算法或鸟群觅食算法&#xff08;Particle Swarm Optimization&#xff09;&#xff0c;缩写…

人工智能之搜索算法

通过搜索来解决问题 文章目录 通过搜索来解决问题1. 什么是算法?2. 什么是搜索?3. 搜索算法3.1 如何做路径规划?3.2 搜索过程3.3 通用搜索算法3.4 盲目的搜索算法3.4.1 深度优先遍历(Deep First Search)3.4.2 广度优先遍历(BFS)3.4.3 Dijkstra 算法3.5 启发式搜索算法(有信息…

人工智能:搜索策略

一、无信息的搜索策略 1.宽度优先搜索 2.一致代价搜索 当每一步的行动代价都相等时宽度优先搜索是最优的,因为它总是先扩展深度最浅的未扩展结点。 一致代价搜索( uniform-cost search)扩展的是路径消耗(gn)最小的结点n。这可以通过将边缘结点集组织成按g值排序的队列来实现…

人工智能中的搜索

最近在mooc学习人工智能&#xff1a;模型于算法&#xff0c;下面记录课上的例子和学到的东西。 首先&#xff0c;人工智能搜索是从海量的信息源中通过约束条件和额外信息运用算法找到问题所对应的答案。 正所谓&#xff0c;你见&#xff0c;或者不见我&#xff0c;我就在那里不…

人工智能——搜索技术

转载&#xff1a;https://blog.csdn.net/Sun7_She/article/details/40344329 AI-3的80~84不懂 A*算法不懂 引言&#xff1a; 什么是搜索&#xff1a; 根据问题的实际情况不断寻找可利用的知识&#xff0c;构造出一条代价较少的推理路线&#xff0c;使问题得到圆满的解决的过程称…

新一代智能搜索引擎,让搜索一击即中

什么是搜索&#xff1f; 搜索引擎的英文为search engine。 搜索引擎是一个对互联网信息资源进行搜索整理和分类&#xff0c;并储存在专属网络数据库中供用户查询的系统&#xff0c;包括信息搜集、信息分类、用户查询三部分。 从使用者的角度看&#xff0c;搜索引擎提供一个包含…

浅谈人工智能搜索技术论文

摘要&#xff1a;本文简单阐述了人工智能中的智能搜索技术的概念以及启发式搜索算法&#xff0c;介绍了几种启发式搜索函数的选择及其研究中遇到的难题&#xff0c;并从中求解来探讨解决问题的思路。 关键词&#xff1a;智能搜索&#xff1b;状态空间&#xff1b;与/或树&…

Python搭建代理IP池(三)- 检测 IP

在获取 IP 时&#xff0c;已经成功将各个网站的代理 IP 获取下来了&#xff0c;然后就需要一个检测模块来对所有的代理进行一轮轮的检测&#xff0c;检测可用就设置为满分&#xff0c;不可用分数就减 1&#xff0c;这样就可以实时改变每个代理的可用情况&#xff0c;在获取有效…

ProxyPool 爬虫代理IP池(分享)

GitHub - jhao104/proxy_pool: Python爬虫代理IP池(proxy pool)https://github.com/jhao104/proxy_pool/ProxyPool 爬虫代理IP池项目,主要功能为定时采集网上发布的免费代理验证入库&#xff0c;定时验证入库的代理保证代理的可用性&#xff0c;提供API和CLI两种使用方式。同时…

python爬虫设置代理ip池【源代码】(存入数据库)

python爬虫设置代理ip池【源代码】 在爬取各大网站时&#xff0c;经常遇到一些由于访问次数过多或者访问频率过高&#xff0c;而导致你的ip被“封”。所以我们运用 代理ip池 来解决这个由于访问频率过高而终止爬取进行。 下面介绍一下免费获取代理ip池的方法&#xff1a; 一…

python3之爬虫代理IP的使用+建立代理IP池

爬虫代理IP的使用建立代理IP池 代理IP的使用建立代理IP池完整代码 代理IP的使用 先了解一下百度百科定义的IP 为什么要使用代理IP? 反爬(反网络爬虫) 示例: 测试网址 http://httpbin.org/get 用浏览器先访问测试网址下看看 再用我们写的代码简单请求一下网页看看 impo…

教你创建一个免费的代理IP池(txt存储版本)

教你创建一个免费的代理IP池&#xff08;txt存储版本&#xff09; 很多人可能会为爬虫被ban&#xff0c;IP被封等反爬机制苦恼&#xff0c;接下来我就教给大家如何白嫖做一个代理IP池。 准备工作 首先是准备工作&#xff0c;因为是第一个版本&#xff0c;因此我打算先用txt存…