当前位置:首页 » 操作系统 » 爬山算法分类

爬山算法分类

发布时间: 2025-02-23 02:21:13

Ⅰ 爬山算法

《混乱》

这本书提到了一个非常有效的算法,

叫爬山算法。

什么叫爬山算法?

(注:爬山算法是人工智能算法的一种,

其原理是把你随机地抛在地球上的一个点,抛在那个点以后,

你就近在最近的几公里之内寻找最高点,然后找到最高点之后,

立刻站到这个最高点上去,再在最近的几公里之内寻找最高点。)

用计算机模拟我们的人生,

我们的人生就是那个屏幕上,

现在屏幕中所有的坐标、高度都未知,

然后看看谁能用最快的方法找到这个屏幕上的最高点。

用什么样的方法找到最高点?

全球大量的计算机编程高手开始设计这套逻辑,

有的人沿着边走,有的人直接到中心,有人用交叉、画五角星法……

各种各样的方法,到最后发现,

最优秀、最快能够找到最高点的算法只有一个,

这个算法被称作爬山算法。

它的方法是什么?

就是在整个屏幕上随机一抛,

让这个点落在任何一个地方,然后在能力范围之内搜索,

在能力范围之内尽量找到周围最高的高度,找到最高的高度以后,

以这个最高的高度为圆心再找周围最高的高度,然后依次循环(

找最高点周围的下一个最高点),尽可能地找到最高的高点。

如果你今天特别倒霉,掉到一片沙漠中间,

这个沙漠周围的高度都差不多,没有特别高的高度,那该怎么办?

这时候需要重启,告租拿起来随机的一抛,

重启到另外一个地方再找另外的高度。

爬山算法里面有两个核心的点:

第一个点,

是你要接受随机的一抛,

你要接受有不确定性的发生;

第二个点,

是无论命运把你抛到什么地方,

你都要努力地展开搜索,

尽胡闷可能地做到最好,尽可能地找到最高的高点。

这就是爬山算法的精髓。

使用爬山算法探裤友弯索一片屏幕,到最后发现这种方法是最快的。

就是要学会拥抱不确定性。

人生所有的烦恼、痛苦,

都是来自于我们对不确定性的抗拒。

我们希望我们的孩子按照一个模式成长,

我们希望我们的工作按照一个模式发展,

我们希望我们创业做的公司,

能够按照一个节奏安全一个模式发展,

是这些抗拒给我们带来大量的烦恼。

但是实际上你唯一需要做的事,是拥抱不确定性。

当不确定性发生、命运将你随机一抛的时候,

你能够随时随地、立刻展开最好的努力,

而不是待在原地拼命地抱怨,

拼命地对标,拼命地去维权,

反而这些东西浪费了我们太多的时间。

作者  | 樊登

来源  | 笔记侠(ID:Notesman)

Ⅱ 爬山算法

爬山算法是一种局部择优的方法岩嫌罩,是一种局部贪心的最优算法。
采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 该算法每次从当前解的临近解空间中选择一个最优解作为当前解,
直到达到一个局部最优解,属于人工智能算法的一种。

实现简单,其主要缺点是会陷入局部最优者银解,不一定能搜索到全局最优解。
如下图所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,
因为在A点无论向那个方向小幅度移动都不能得到更优的解。

如果想进一步了解爬山算法及其应用粗闹,请参考:
基于爬山算法求解TSP问题(JAVA实现)
机器学习优化算法之爬山算法小结

Ⅲ 什么是爬山算法

我在网络上找的!~~
简介
爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 属于人工智能算法的一种。

算法:
function HILL-CLIMBING(problem) returns a state that is a local maximum
inputs: problem, a problem
local variables: current, a node
neighbor, a node
current <- MAKE-NODE(INITIAL-STATE[problem])
loop do
neighbor <- a highest-valued successor of current
if VALUE[neighbor]<= VALUE[current] then return STATE[current]
current <- neighbor

算法解释:
从当前的节点开始,和周围的邻居节点的值进行比较。 如果当前节点是最大的,那么返回当前节点,作为最大值(既山峰最高点);反之就用最高的邻居节点来,替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。

算法优缺点
优点
避免遍历,通过启发选择部分节点,从而达到提高效率的目的。

缺点
因为不是全面搜索,所以结果可能不是最佳。

爬山算法一般存在以下问题:
1)、局部最大:某个节点比周围任何一个邻居都高,但是它却不是整个问题的最高点。
2)、高地:也称为平顶,搜索一旦到达高地,就无法确定搜索最佳方向,会产生随机走动,使得搜索效率降低。
3)、山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。

其他相关算法
stochastic hill climbing
First-choice hill climbing
Ramdom-restart hill climbing
Simulated annealing search
Local beam search

如果您认为本词条还有待完善,需要补充新内容或修改错误内容,请 编辑词条

Ⅳ 遗传算法、数值算法、爬山算法、模拟退火 各自的优缺点

遗传算法:其优点是能很好地处理约束,跳出局部最优,最终得到全局最优解。缺点是收敛速度慢,局部搜索能力弱,运行时间长,容易受到参数的影响。

模拟退火:具有局部搜索能力强、运行时间短的优点。缺点是全局搜索能力差,容易受到参数的影响。

爬山算法:显然爬山算法简单、效率高,但在处理多约束大规模问题时,往往不能得到较好的解决方案。

数值算法:这个数值算法的含义太宽泛了,指的是哪种数值算法,阵列算法与爬山算法一样,各有优缺点。

(4)爬山算法分类扩展阅读:

注意事项:

遗传算法的机制比较复杂,在Matlab中已经用工具箱中的命令进行了打包,通过调用可以非常方便的使用遗传算法。

函数GA:[x,Fval,reason]=GA(@fitnessfun,Nvars,options)x为最优解,Fval为最优值,@Fitnessness为目标函数,Nvars为自变量个数,options为其他属性设置。系统的默认值是最小值,所以函数文档中应该加上一个减号。

要设置选项,您需要以下函数:options=GaOptimset('PropertyName1','PropertyValue1','PropertyName2','PropertyName3','PropertyValue3'…)通过该函数,可以确定一些遗传算法的参数。

Ⅳ 爬山算法(Hill Climbing)解决旅行商问题(TSP)

旅行商问题 TSP(Travelling Salesman Problem)是数学领域中着名问题之一。

TSP问题被证明是 NP完全问题 ,这类问题不者宽腔能用精确算法实现,而需要使用相似算法。

TSP问题分为两类: 对称TSP (Symmetric TSP)以及 非对称TSP (Asymmetric TSP)

本文解决的是对称TSP
假设:A表示城市A,B表示城市B,D(A->B)为城市A到城市B的距离,同理D(B->A)为城市B到城市A的距离
对称TSP中,D(A->B) = D(B->A),城巧升市间形成无向图
非对称TSP中,D(A->B) ≠ D(B->A),城市间形成有向图

现实生活中,可能出现单行线、交通事故、机票往返价格不同等情况,均可以打破对称性。

爬山算法是一种局部择优的方法,采用启发式方法。直观的解释如下图:

爬山算法,顾名思义就是 爬山 ,找到第一个山峰的时候就停止,作为算法的输出结果。所以,爬首衫山算法容易把局部最优解A作为算法的输出,而我们的目的是找到全局最优解B。

如下图所示,尽管在这个图中的许多局部极大值,仍然可以使用 模拟退火算法(Simulated Annealing) 发现全局最大值。

必要解释详见注释

此处根据经纬度计算城市间距离的公式,请参考 Calculate distance between two latitude-longitude points? (Haversine formula)

此处初始化数据源可以使用 TSPLIB 中所提供的数据,此程序大致阐述爬山算法的实现。

编写于一个失眠夜

菜鸟一枚,欢迎评论区相互交流,加速你我成长•ᴗ•。

Ⅵ 算法式和爬山法的区别

爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。

算法式:把解决问题的方法一一进行尝试,最终找到解决问题的答案。特点册链:问题解决的系列搜索,采用试误州巧孙的方式解决问题,优点:一定可以找到某种解决问题的方法,缺点:耗时耗力。

爬山法与手段目的分析法的区别:

使用爬山法的每一步都在逐渐接近最终目标,不存在中途折回的情况;在使用手段目的分析法时,人们有时为了达到目的,不得不暂时扩大目标状态与初始状态的差异,以有利于达到最终目标。

比如,两兵交战,若敌我力量悬殊,我军可采取迂回战术曲线救国,先假装宽咐投降,获取情报,再一举反攻。

热点内容
python脚本下载 发布:2025-02-23 11:18:13 浏览:524
linux修复u盘 发布:2025-02-23 11:11:04 浏览:556
php是数组 发布:2025-02-23 11:10:01 浏览:542
qt编译无法运行 发布:2025-02-23 11:05:59 浏览:313
第几天c语言 发布:2025-02-23 10:55:07 浏览:938
波形搜索算法 发布:2025-02-23 10:50:27 浏览:447
plc编译后怎样继续编写 发布:2025-02-23 10:49:04 浏览:664
vivo为什么进入清除缓存还要密码 发布:2025-02-23 10:48:53 浏览:141
编程学习游戏 发布:2025-02-23 10:48:11 浏览:55
安卓计算器怎么算百分比 发布:2025-02-23 10:27:51 浏览:473