爬山算法

算法描述:爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 属于人工智能算法的一种。从当前的节点开始,和周围的邻居节点的值进行比较。 如果当前节点是最大的,那么返回当前节点,作为最大值(既山峰最高点);反之就用最高的邻居节点来,替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。

算法的优缺点:

优点

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

缺点

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

爬山算法一般存在以下问题:

1)、局部最大:某个节点比周围任何一个邻居都高,但是它却不是整个问题的最高点。

2)、高地:也称为平顶,搜索一旦到达高地,就无法确定搜索最佳方向,会产生随机走动,使得搜索效率降低。

3)、山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。

时间: 2024-10-07 23:19:07

爬山算法的相关文章

机器学习优化算法之爬山算法小结

简言 机器学习的项目,不可避免的需要补充一些优化算法,对于优化算法,爬山算法还是比较重要的.鉴于此,花了些时间仔细阅读了些爬山算法的paper.基于这些,做一些总结. 目录 1. 爬山算法简单描述  2. 爬山算法的主要算法 2.1 首选爬山算法 2.2 最陡爬山算法 2.3 随机重新开始爬山算法 2.4 模拟退火算法(也是爬山算法) 3. 实例求解 正文 爬山算法,是一种局部贪心的最优算法. 该算法的主要思想是:每次拿相邻点与当前点进行比对,取两者中较优者,作为爬坡的下一步. 举一个例子,求解

爬山算法和退火算法

爬山算法爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解.爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解.如下图所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解. 退火算法模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平

机器学习之爬山算法小结

简言 机器学习的项目,不可避免的需要补充一些优化算法,对于优化算法,爬山算法还是比较重要的.鉴于此,花了些时间仔细阅读了些爬山算法的paper.基于这些,做一些总结. 目录 1. 爬山算法简单描述  2. 爬山算法的主要算法 2.1 首选爬山算法 2.2 最陡爬山算法 2.3 随机重新开始爬山算法 2.4 模拟退火算法(也是爬山算法) 3. 实例求解 正文 爬山算法,是一种局部贪心的最优算法. 该算法的主要思想是:每次拿相邻点与当前点进行比对,取两者中较优者,作为爬坡的下一步. 举一个例子,求解

BZOJ 3680: 吊打XXX【模拟退火算法裸题学习,爬山算法学习】

3680: 吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 3192  Solved: 1198[Submit][Status][Discuss] Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现

爬山算法和模拟退火算法简介

转自:http://www.cnblogs.com/chaosimple/archive/2013/06/10/3130664.html 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法.爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解. 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解.如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在

爬山算法和模拟退火算法简介(转)

源:爬山算法和模拟退火算法简介 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法.爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解. 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解.如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解. 图1 二. 模拟退火(SA,Simulated Anne

POJ 2420 A Star not a Tree? 爬山算法

B - A Star not a Tree? Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88808#problem/B Description Luke wants to upgrade his home computer network from 10mbs to 100mbs. His existing network uses 10ba

BZOJ 3680 吊打XXX 爬山算法

题意:链接 方法:爬山算法 解析: 首先刚开始选一个点,然后找到它的合外力的方向,朝这个方向走即可. 一直重复直至温度小于eps. 至于为何如此,因为每次走的方向一定,所以可看做函数单峰? 不必退火直接爬山即可. 代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define N 10010 #de

MIP启发式算法:爬山算法 (Hill climbing)

本文主要记录和分享学习到的知识,算不上原创. *参考文献见链接. 本文讲述的是求解MIP问题的启发式算法中的爬山算法 (Hill climbing). 目录 前言 Hill climbing 的过程 Hill climbing 的伪代码 前言 爬山算法是以local search为核心框架的启发式算法中最简单的算法,当然,结果一般也不太好,因为爬山算法有一个很大的缺点:不能跳出局部解. 就像我们在local search那篇文中提到,以local search 为框架的启发式算法需要综合考虑到算