爬山算法

  • 浅谈爬山算法
  • 爬山算法的一种改进方法
  • 爬山算法是对DFS的一种改进

浅谈爬山算法

爬山算法 每次拿相邻点与当前点进行比对,取两者中较优者作为爬坡的下一步。循环直到该点的相邻点中不再有比其更大的点,我们将其作为山顶。
爬山算法,是一种简单的局部贪心搜索算法。

爬山算法的缺点非常明显,那就是陷入 局部最优解 而不一定能搜索到 全局最优解
从C点开始爬山,当爬山算法搜索到A点时,因为A点无论向哪个方向小幅度移动,都不能得到更优的解。爬山算法会停止搜索,从而将A点当作“山顶”。但是其实全局最优解是B点而非A点。


爬山算法的一种改进方法

随机重启爬山算法
顾名思义,那就是在随机地点重启爬山算法。

我们不仅仅从C点开始爬山,随机的从D点,E点,F点等等地点开始爬山,按照爬山算法,E点与F点会抵达全局最优点。但是因为示例模型的简单,所以我们抵达了全局最优解,但是事实上也许也只是一个局部最优解。

随机重启爬山算法,或称随机爬山算法,一定程度上缓解了爬山算法的弊端、算法缺陷。


爬山算法是对DFS的一种改进

DFS,Depth-first Search,深度优先搜索算法。相关博客:【AI】DFS 深度优先搜索

爬山算法是启发式的,而深度优先算法是遍历的。启发式的不用遍历,所以效率上爬山算法会比深度优先遍历算法高。

【AI】Hill Climbing 爬山算法相关推荐

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

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

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

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

  3. 遗传算法与爬山算法简介_遗传算法简介

    遗传算法与爬山算法简介 Genetic Algorithms (GAs) are a part of Evolutionary Computing (EC), which is a rapidly g ...

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

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

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

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

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

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

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

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

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

    源:爬山算法和模拟退火算法简介 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法.爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为 ...

  9. python数圈算法_Python实现随机爬山算法

    随机爬山是一种优化算法.它利用随机性作为搜索过程的一部分.这使得该算法适用于非线性目标函数,而其他局部搜索算法不能很好地运行.它也是一种局部搜索算法,这意味着它修改了单个解决方案并搜索搜索空间的相对局 ...

最新文章

  1. 【JavaWeb】Access restriction The type is not accessible due to restriction on required library
  2. java 内存泄漏_Java开发者必须知道的内存泄漏问题
  3. java序列化异常_Java|序列化异常StreamCorruptedException的解决方法
  4. mongoose 批量修改字段_记一次脚本批量修改数据库字符集所埋下的一个坑及解决思路...
  5. canal mysql 数据同步
  6. 打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...
  7. php给网页加水印_php实现图片添加水印功能
  8. [luogu3244 SHOI2016] 黑暗前的幻想乡(容斥原理+矩阵树定理)
  9. 简单理解 unix (liunx)inode
  10. 浏览器渲染原理 记录备份
  11. 深度学习之江湖~那些大神们
  12. bash shell for循环1到100
  13. 使用Dosbox运行程序
  14. 搭建Android开发环境(超详细)
  15. gg修改器怎么修改服务器数值,gg修改器怎么修改数值 | 手游网游页游攻略大全...
  16. 机器学习(二)--新加坡国立大学寒假学习项目总结
  17. linux中ping命令停不下来解决方案
  18. Win7下eclipse提交Job到hadoop集群
  19. 《痞子衡嵌入式半月刊》 第 56 期
  20. NGUI:HUD Text

热门文章

  1. python - 文本处理 之 解码编码decode encode
  2. TCP/IP协议四层模型
  3. python 创建pdf文件并支持中文 reportlab - 千月的python linux 系统管理指南学习笔记(19)
  4. Learning to Rank with Nonsmooth Cost Functions
  5. 【调剂】华南师范大学生物光子学研究院陈同生教授研究团队接受研究生调剂生(2022年)...
  6. 煤矿皮带急停识别检测 opencv
  7. 百趣代谢组学分享,关于儿童Graves病相关的新环境物质的鉴定
  8. “iOS 推送通知”详解:从创建到设置到运行
  9. 数据可视化 - Echarts图表
  10. PO,BO,VO和PO JO的区别