人工智能中的局部搜索算法
在局部搜索算法中,我们不再关心从初始节点到目标节点之间的路径,而是考虑从当前节点出发,移动到它的邻近状态,直到到达合理的目标状态。相比于前面所说的无信息搜索算法和有信息搜索算法,局部搜索算法往往能以常数的空间复杂度(不用保存路径)在很大甚至无限的状态空间中找到合理解。
爬山法
爬山法不断向值增加的方向移动,直到到达顶峰。
function HillClimbing(problem) returns a local maximum statecurrent_state = initial_stateloop donext_state = the highest neighborif (next_state is higher than current_state)current_state = next_stateelsereturn current_state
爬山法的问题在于它只能保证到达局部最大值,却不能保证到达全局最大值。
比如我们从C点出发,那么我们会停在局部最大值A点,因此没办法到达全局最大值B点。
模拟退火算法
模拟退火算法与爬山法类似,只是我们不再一味地往值增加的方向移动,而是以一定的几率容许往值减小的方向移动,从而使得我们有可能从局部最大值A点走出来,并到达全局最大值B点。
只所以叫做模拟退火,是因为一开始这个几率相对较高,而随着时间的增加,这个几率则像温度一样慢慢减小。
function SimulatedAnnealing () returns a solution statecurrent_state = initial_statefor t = 1 to infinite doT = schedule(t)if T = 0 thenreturn current_statenext_state = a randomly selected neighborE = next_state.height - current_state.heightif E > 0 thencurrent_state = next_stateelse current_state = next_state with probability e^(E/T)
遗传算法
遗传算法模拟生物中的遗传过程,从初始种群开始,迭代进行一系列杂交和变异直到获得合适的种群,并从中挑选出最佳个体。
function GeneticAlgorithm(population, fitin) returns a solution stateinputs: population, a set of individualsfitness, a function that measures fitness of an individualrepeatnew_population = empty_setfor i = 1 to sizeof(population) dox = RandomSelect(population, fitness)y = RandomSelect(population, fitness)new_individual = Reproduce(x, y)if (a probability) thennew_individual = Mutate(new_individual)add new_individual to new_populationuntil some individuals are fit enough or time has elapsedreturn the best individual in the population
----------------------------------------------------------------
function Reproduce(x, y) returns a new individualinputs: x, y, the parents of the new individuallength = Length(x)mutation_point = RandomSelectIn(1, length)new_individual = Sub(x, 1, mutation_point)+ Sub(y, mutation_point, length)return new_individual
转载于:https://www.cnblogs.com/zhangyubao/p/7016968.html
人工智能中的局部搜索算法相关推荐
- 【人工智能】—局部搜索算法、爬山法、模拟退火、局部剪枝、遗传算法
Local search algorithms (局部搜索算法) 局部搜索算法 内存限制 局部搜索算法 示例:n-皇后 爬山算法 随机重启爬山 模拟退火算法 局部剪枝搜索 遗传算法 小结 局部搜索算法 ...
- JAVA用爬山法解决八皇后问题_局部搜索算法.ppt
局部搜索算法 人工智能原理第2章 搜索技术(下) 本章内容2.1 搜索与问题求解2.2 无信息搜索策略2.3 启发式搜索策略2.4 局部搜索算法2.5 约束满足问题2.6 博弈搜索参考书目附录 A*算 ...
- C语言局部搜索算法(爬山法,模拟退火法,遗传算法)求解八皇后问题
C语言局部算法求解八皇后问题 写在前面 八皇后问题及局部搜索算法 爬山法(hill-climbing searching) 算法介绍 代码实现 退火法(simulated annealing) 算法介 ...
- python人工智能-Python在人工智能中的作用
原标题:Python在人工智能中的作用 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方 ...
- python在人工智能应用锁_解读! Python在人工智能中的作用
人工智能是一种未来性的技术,目前正在致力于研究自己的一套工具.一系列的进展在过去的几年中发生了:无事故驾驶超过300000英里并在三个州合法行驶迎来了自动驾驶的一个里程碑:IBM Waston击败了J ...
- 通用局部搜索算法之WALKSAT
通用局部搜索算法之WALKSAT 设施区位及算法 2009-08-28 20:44:47 阅读29 评论0 字号:大中小 通用局部搜索算法之WALKSAT GSAT 和 WalkSat 是用于求解布尔 ...
- 旅行商问题(TSP)与局部搜索算法
本篇为在University of Birmingham 学习Advanced Nature-Inspired Search and Optimisation课程中的笔记之一 This is one ...
- k图着色 局部搜索算法与模拟退火算法的python实现
文章目录 前言 如何评价一个解? 通过计算出的冲突来找它的邻居解 数据的格式 局部搜索 概述 补充 代码 模拟退火 概述 补充 代码 总结以及不足之处 前言 这两种算法就不详细介绍了,流程思路比较简单 ...
- 人工智能中的Web端编程
Java是当前的主流编程语言之一,常年稳居TIOBE编程语言排行榜前五.Java的使用领域非常广泛,包括了桌面端编程.Web端编程.移动端编程等几乎所有的编程领域.Java是Web端编程使用最广泛的编 ...
最新文章
- Linux疑难杂症解决方案100篇(十一)-常用Linux命令,助力工作更轻松便捷
- 我把公司当家,老板当爹,结局...
- php 内核开发_深入理解PHP7内核之Reference
- 【最快人脸检测模型开源】libfacedetection开源
- 新建站点的mysql数据库_lAMP下新建维护站点全过程
- R40gpio输出无高低电平变化【原创】
- php发送http put/patch/delete请求
- [转载] 消息中间件学习总结(8)——RocketMQ之RocketMQ捐赠给Apache那些鲜为人知的故事
- Java二级知识总结
- fireworks8序列号:
- 推荐《现在,发现你的优势》
- H3C 双线路 nqa 联动
- 梯度消失、梯度爆炸产生的原因
- 互联网日报 | 京东健康提交赴港上市招股书;荣耀联合美团推出“共享笔记本”服务;携程获第三方支付牌照...
- django接入facebook登陆设置
- 计算机系统删除一点会怎么样,怎么样清理C盘的多余文件?
- 小公司老板的日常管理
- 操作系统中cpu如何工作
- C/C++宽字符与控制台程序
- 2048java设计报告_2048设计报告.doc