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

算法:
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)、山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。 
算法解释: 
从当前的节点开始,和周围的邻居节点的值进行比较。 如果当前节点是最大的,那么返回当前节点,作为最大值 (既山峰最高点);反之就用最高的邻居节点来,替换当前节点,从而实现向山峰的高处攀爬的目的。如此循环直到达到最高点。
算法优缺点
优点 
避免遍历,通过启发选择部分节点,从而达到提高效率的目的。

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

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

什么是hill-climbing算法??相关推荐

  1. Python:实现hill climbing爬山法用来寻找函数的最大值算法(附完整源码)

    Python:实现hill climbing爬山法用来寻找函数的最大值算法 import mathclass SearchProblem:def __init__(self, x: int, y: i ...

  2. 零基础学启发式算法(2)-局部搜索(Local Search)和爬山算法(Hill Climbing)

    一.局部搜索(Local Search) 局部搜索是一种近似算法(Approximate algorithms),是一种简单的贪心搜索算法.从一个候选解开始,持续地在其邻域中搜索,直至邻域中没有更好的 ...

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

    何为TSP问题? 旅行商问题 TSP(Travelling Salesman Problem)是数学领域中著名问题之一. 场景:一个旅行商人需要拜访n个城市 条件:要选择一个路径能够拜访到所有的城市, ...

  4. 爬山算法 ( Hill Climbing )/模拟退火(SA,Simulated Annealing)

    一. 爬山算法 ( Hill Climbing ) 爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解.爬山算法实现很简单,其主要缺点是 ...

  5. 【机器学习基础】(一) 爬山算法 ( Hill Climbing )与模拟退火(SA,Simulated Annealing)

    一.爬山算法 ( Hill Climbing ) 爬山算法属于人工智能算法的一种. 这种算法基于贪心算法的思想,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解.爬山算 ...

  6. [Introduction to AI] Local Search::Hill Climbing (最陡上升)

    本文为 BJUT 2021 Fall Introduction to AI 的读书笔记: 课程教材为:Artificial Intelligence: A Modern Approach: Cover ...

  7. Solve Slide Puzzle with Hill Climbing Search Algorithm

    Hill climbing search algorithm is one of the simplest algorithm which falls under local search and o ...

  8. 【AI】Hill Climbing 爬山算法

    爬山算法 浅谈爬山算法 爬山算法的一种改进方法 爬山算法是对DFS的一种改进 浅谈爬山算法 爬山算法 每次拿相邻点与当前点进行比对,取两者中较优者作为爬坡的下一步.循环直到该点的相邻点中不再有比其更大 ...

  9. C++希尔密码Hill Cipher算法(附完整源码)

    希尔密码Hill Cipher的算法 希尔密码(Hill Cipher) 的算法的完整源码(定义,实现,main函数测试) 希尔密码(Hill Cipher) 的算法的完整源码(定义,实现,main函 ...

  10. python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS

    在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制.图遍历 ...

最新文章

  1. 全球首个AI宇宙模拟器不仅有6亿光年宽度,还“自行”跑出了暗物质
  2. 22种代码味道(Martin Fowler与Kent Beck)
  3. 成功解决ImportError: Could not find 'msvcp140.dll'. TensorFlow requires that this DLL be installed in a
  4. iOS MMDrawerController源码解读(一)
  5. 503 service unavailable错误提示如何解决
  6. 滚动条的值如何赋值_如何给Word文本框添加滚动条?史上最详细步骤
  7. Windows在当前目录快速打开cmd的方法
  8. 【转载保存】HtmlUnit的使用
  9. 今天的我从来没想到的飞鸽传书2009
  10. Linux内核网络协议栈1- socket文件系统注册
  11. 开发中一些常用的代码片段(持续更新,要是各位大牛看见了麻烦也给在评论区添一下常用的代码)
  12. 读书-算法《程序设计导引及在线实践》-简单计算题4:填词
  13. PMP 项目沟通管理
  14. 2021高校毕业礼物,竞争太激烈了!
  15. android 静态蓝牙地址吗,用于BLE广告的Android 5静态蓝牙MAC地址 | 所有编程讨论 | zhouni.net...
  16. Ping值和带宽之间关系
  17. 禅与摩托车维修艺术(4)
  18. 计算机里的文件丢失6,u盘修复后文件丢失解决方法
  19. 高通量测序与杂交优势
  20. spring restTemplate的坑----会对String类型的url中的特殊字符进行转义

热门文章

  1. YB dairy(一) 5.7
  2. DMA基本原理 结构与应用
  3. NDK-Android.mk 英文编译说明
  4. 山东科技大学计算机毕业论文,山东科技大学教务综合管理信息系统.pdf
  5. 决策树信息增益|信息增益比率|基尼指数实例
  6. H5 canvas画布总结 (绘制哆啦A梦)
  7. 终于回应!林志玲春晚水上芭蕾表演替身曝光是怎么回事?
  8. vant时间控件的使用
  9. SDUWH2019-2020寒假python实训--my_baidu_img_dwn
  10. supermicro服务器系统,Supermicro发布新一代1.6GHz系统总线服务器工作...