人工智能-超越经典搜索
来源:互联网 发布:医疗软件上市公司 编辑:程序博客网 时间:2024/05/25 08:15
超越经典搜索
- 爬山法 Hill-climbing (variants)
- 模拟退火 Simulated annealing
- 遗传算法 Genetic algorithms
- 联机深度优先搜索 Online DF-search
一、爬山搜索
1、几个概念:目标函数、全局最优、局部最优、山肩、平原……
2、爬山法基本思想
(1)是一个沿着值增加的方向持续移动的简单循环过程;
(2)当到达一个山峰时就停止。
(3)爬山法不根据当前状态考虑计划未来后继节点。就像雾中登山一样。
(4)当有多个继节点时,爬山法选取最优后继节点集中的一个。
因此,爬山法也称为局部贪婪搜索。
3、伪代码
4、爬山法的缺陷
- 山脊 = 一组连续的局部极大对于贪婪算法去引导的搜索是困难的。
- 高原 = 一块状态空间区域的评价函数值是相同的。
- 方法:侧向移动(采用限制次数的方法限制侧移次数,避免死循环。 改进后8皇后问题,侧移设置为100次成功率由14%上升到94%) 重新开始(如果一开始没有成功,那么尝试,继续尝试)。
二、模拟退火算法
1、引论:爬山法从不下山的策略导致其不完备性,而纯粹的随机行走,又导致效率的低下,把单纯的爬山法和纯粹的随机相结合就是以下的模拟退火算法的思想。
Idea: 通过允许向不好的状态移动来避开局部最值点,但频率逐渐降低。
起源:冶金的退火原理
例子:弹球的分析 剧烈的摇动(=高温) 减少晃动(=降温)
2、模拟退火算法的性质
可以证明: 如果 T 降低的足够慢,则模拟退火能以趋近于1的概率找到最优解。
三、局部束搜索
- 保存k状态,而不是一个状态
- 从k 个随机产生的状态开始
- 每次迭代,产生k 个状态的所有后续
- 如果任何一个新产生的状态是目标状态,则停止。否则从所有后续中选择k个最好的后续,重复迭代
同随机重新开始的区别:在k条线索中共享信息。
缺点:缺乏多样性
随机变种:成比例地随机选取k个后继直到成功。
四、遗传算法
1、遗传算法是局部束搜索的变形:
与自然选择过程有些相似性,通过把二个父代结合产生后继(有性繁殖),而不是修改单一状态(无性繁殖)。
- 通过结合两个状态来产生后续状态
- 从k 个随机产生的状态开始(种群,population)
- 状态表示成字符串 (染色体)
- 评估函数(适应值函数,fitness function)
- 通过选择,交叉和变异操作来产生新一代种群。
2、遗传算法伪代码
function GENETIC_ALGORITHM( population, FITNESS-FN) return an individualinput: population, a set of individualsFITNESS-FN, a function which determines the quality of the individualrepeatnew_population ← empty setloop for i from 1 to SIZE(population) dox ← RANDOM_SELECTION(population, FITNESS_FN) y ← RANDOM_SELECTION(population, FITNESS_FN)child ← REPRODUCE(x,y)if (small random probability) then child ← MUTATE(child )add child to new_populationpopulation ← new_populationuntil some individual is fit enough or enough time has elapsedreturn the best individual
阅读全文
0 0
- 人工智能-超越经典搜索
- 【人工智能】第四章 超越经典搜索
- 人工智能将超越人类吗?
- 人工智能是否会超越人类?
- 超越Google:聚合搜索
- 《为什么人工智能肯定会超越人类?》
- Tuple MapReduce: 超越经典MapReduce
- 人工智能 搜索算法
- 人工智能 2 搜索
- 人工智能-搜索算法
- 人工智能之搜索方法
- 人工智能经典问题搜集
- 人工智能之经典逻辑推理
- 人工智能最终将超越人类,但不是反人类
- 物理学家:用数学理论证明人工智能无法超越人类智慧
- 徐小平:万象人工智能研究院要超越李开复的研究院
- Github上Python超越Java,人工智能程序员大热
- 读后感 《人工智能狂潮-机器人会超越人类吗?》
- Java学习心得之JDK环境搭建
- fit_transform,transform
- XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较
- Xv6安装踩坑记
- string类型转换int类型
- 人工智能-超越经典搜索
- PCB电路板生产完成分析
- leetcode 643 Maximum Average Subarray I
- python引入导入自定义模块和外部文件
- canvas实现刮刮乐的效果
- 【期望DP】LOJ#6178. 「美团 CodeM 初赛 Round B」景区路线规划
- Scala学习(一):Scala中的函数式对象
- 【笔记】USB概述及协议基础
- Linux-vsftp-userlist