啥是爬山算法
我希望题主需要的答案不是一个精确到实现级别的答案,因为这个算法我都没听说过,看了看百科觉得原理上还好理解所以简单描述一下。假想将解空间依照深度搜索序列的顺序为y轴,以解的权为x轴作图
我们可以认为得到一系列山峰与峡谷的剖面图。爬山算法就是在这个图上进行爬山,找到第一个山峰或者第一个符合要求高度的山峰就停止。具体来说,就是算法迭代时,每次用临近解空间内的更优解取代前解。这一算法是简单的贪心算法,仅能得到局部最优解,往往不能得到全局最优解。可见上图描述的搜索序列中,爬山算法会在第一个山峰处停下搜索,以局部最优解作为算法的结果。这一算法是相对于各种全局最优算法在时间复杂度上的妥协,可以用于对最优情况不那么敏感、只需要取得可行解即可的情况。还有一模拟退火算法,改进是每次爬山时以概率向上或者向下,从而在一定程度上无序化了最终解,相对全局最优的穷举法而言,效率依然更高,但是相对于简单爬山算法,有可能获得更优秀的解。
■网友
hill-climbing就是forward greedy algorithm
■网友
【啥是爬山算法】 成本函数抽象成了一座山(想象一下一个2维坐标系,横轴为变量,纵轴为成本函数,成本函数随着横轴的递增而上下起伏绵延不绝,好似一座山),某人可在山中一任意位置左右移动(取该函数中的一点),因此,随着某人水平方向的变化(变量的变化),这哥们的海拔高度也在变化(成本函数随着变量的变化而变化)。可惜,这哥们一心想去山的最底处。所以他总喜欢走下坡路,一旦发现各个方向再走都是上坡的时候,那这哥们认为他终于走到了山的最底处,他不再走了并返回此时他的位置。(该例子的成本函数仅和一个变量有关,但现实生活中,成本函数是和多个变量有关。道理也是一样,就好像这个哥们每次走路的时候有N个方向供他选择(N个变量))
明眼的人都能看出来,这哥们非常容易的会把局部最小值当成全局最小值。以为山的小凹谷就是整座山的最低处了(这座山绵延不绝,并不是两头连接大地的那种,是长度无限长的那种),too navie。
有什么办法呢?就是随机重复爬山法,让你每次初始位置都随机的多试几次。说不定还真能蒙到正确结果。争取几句话描述一下爬山法,模拟退火,遗传算法
■网友
爬山算法基于启发式的一种搜索算法,可以用四个字概括,局部择优。这里的局部体现在首先我知道我现在在的山肯定不是最高峰,其次,有以下几条路径可以最终到达最高峰,比如是路径是ABCD和EFGH,我可以选择从A处上山,也可以选择从E处上山,但是假如A到达B的距离大于E到F的距离,根据现在的已知条件,我们肯定会选择EF。所以从这里也可以看出这个算法的缺点,虽然最终可以达成目标,但是局限于当下的代价最小,总的代价并非是最小的。
伪代码如下:
// hill climbing
hill climbing(Root-Node,goal)
{create quene A
if (Root-Node=goal},return success
push the knowed children root to the A
while(A is not empty)
{find the child which cost min}
best child=which cost min
}
这个只做了一次比较,希望得到修正。
推荐阅读
- 三江源藏族青年:希望让更多人品尝到藏族美食
- 湖北襄阳23岁带犬女警:希望早日训导出功勋犬
- 你最希望看到的人民币头像是谁
- 为啥这个算法误差的看起来这么小
- 王俊凯|王俊凯晒自拍,希望粉丝不要“考古”
- 使用算法帮助人们筛选reader的信息是否存在可能
- 中等车型|新款日产天籁上市,2.0T+CVT变速箱,反超雅阁有希望吗?
- 现在想进入智能家居行业,看了很多家,想做代理,希望得到有用的建议和意见,有行业内的内加微信聊聊吗
- 请问如果想成为算法工程师的话,大学选专业是选软件工程好还是计算机科学与技术好。
- 惊人!高三学生自学编程!窃取上亿条个人信息
