爬山算法_楚兴的博客-程序员宝宝_爬山算法

技术标签: 算法  爬山算法  

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

算法描述

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

function HillClimbing(problem) return 一个局部最优状态
    输入:problem
    局部变量:current, 一个节点
            neighbor,一个节点
    current = MakeNode(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)山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011331383/article/details/44651533

智能推荐

SpringMVC数据响应方式_兮动人的博客-程序员宝宝_springmvc 响应式

文章目录1. SpringMVC的数据响应方式2. 页面跳转1. SpringMVC的数据响应方式1) 页面跳转直接返回字符串通过ModelAndView对象返回2) 回写数据直接返回字符串返回对象或集合2. 页面跳转

PEP 8: E305 excepted 2 blank lines, after class or function definition, found 1_飞Link的博客-程序员宝宝

Python规范要求在函数后面要加两个空行。在函数后面添加两个空行。

[图像]高斯滤波(Matlab实现)_祥知道的博客-程序员宝宝

简述原理 .... 核心提示 在Matlab中高斯滤波非常方便,主要涉及到下面两个函数:函数: fspecial函数: imfilter代码实现clear all;clc;%----------------------------------------------%对图像进行高斯滤波,并显示图像%--------------------

SylixOS 内存管理-通过地址反查页面控制块-vmmArea.c_checode的博客-程序员宝宝

在vmm文件夹中的vmmArea.c文件是实现页表控制块反查功能。通过给定的地址(虚拟或者物理)可以查找到对应页面控制块LW_VMM_PAGE。 系统是通过哈希红黑树来实现这个功能的。首先在zone包含了一个哈希表。通过哈希索引值找到对应的红黑树根。也zone页面管理类似,页面关系是通过哈希表插到对应的链表头。有几个比较重要的结构体。LW_VMM_AREA 是一个非常重要的结构,它包含了一个哈希表...

BNU18547 UVA10129 Play on Words_没有灵魂的程序员的博客-程序员宝宝

Play on WordsTime Limit: 3000msMemory Limit: 131072KBThis problem will be judged on UVA. Original ID: 1012964-bit integer IO format: %lld      Java class name: MainPrev Submit Status Sta

随便推点

aws windows linux同时,AWS EC2笔记之一 如何通过Putty连接AWS Linux系统_大风歌幻觉的博客-程序员宝宝

Connecting to Linux/UNIX Instances from Windows Using PuTTYTo connect to your Linux/UNIX instance from a Windows computer, usean SSH client. The following instructions explain how to use PuTTY,a free ...

4G网络架构--仅供本人学习的链接收集_顾小馨的程序媛之路的博客-程序员宝宝

https://blog.csdn.net/starperfection/article/details/78719935http://blog.sina.com.cn/s/blog_6617106b01015pjl.htmlhttp://blog.sina.com.cn/s/blog_6617106b01015o26.htmlhttps://blog.csdn.net/b023302...

shell脚本-使用read命令来接受输入_liujun-blog的博客-程序员宝宝_创建一个名为shellfile4的shell脚本文件,用read命令读取键盘输入,将值存入变量abc

使用read来把输入值分配给一个或多个shell变量,read从标准输入中读取值,给每个单词分配一个变量,所有剩余单词都被分配给最后一个变量格式:read [options] [name …]常见选项:-p 指定要显示的提示-s 静默输入,一般用于密码-n N 指定输入的字符长度N-d ‘字符’ 输入结束符-t N TIMEOUT为N秒范例:[[email protected] ~]# readwang[[email protected] ~]# echo $REPLYwang[[email protected]

TCA9539 IO扩展芯片_~QwQ~的博客-程序员宝宝_tca9539

文章目录1 TCA9539 IO扩展芯片简介1.1 IO扩展芯片的作用1.2 TCA9539-Q1 简介2 TCA9539 原理图介绍3 TCA9539 寄存器介绍4 寄存器控制代码1 TCA9539 IO扩展芯片简介1.1 IO扩展芯片的作用当主控制器MCU的IO接口不够用,需要扩展出更多的IO接口,那么就需要用到扩展IO芯片。IO扩展芯片的选择也比较多,但原理、使用方法基本都一样。本文介绍2款IO扩展芯片:TCA6408-Q1和TCA9539-Q1, 两款芯片的原理的使用方法可以说完全相同,TC

如何通过QQ机器人技术实现禅道bug的自动提交功能_一MasonChen的博客-程序员宝宝

零、写在前头最近部门老大提到可以使用qq机器人实现bug自动提交禅道,好奇心趋势于是自告奋勇进行了一系列探索。qq机器人当然有很多种,这里选择基于smartQQ协议的qqbot作为模拟客户端。qqbot是用python写的,目前社区比较活跃,如果想要实现一些简单的功能的话,推荐使用qqbot。不过最近由于支付宝扫码红包事件,腾讯封掉了一些smartQQ的关键字段,所以qqbot以及所有基于sm

仿生萤火虫、萤火之光投影灯互动装置_toushi_tech的博客-程序员宝宝

小时候常常见的萤火虫,长大之后就很少见到萤火虫了,投石科技的两款萤火虫灯互动装置可再现童年抓萤火虫时候的童真乐趣。萤火之光投影灯互动装置闪烁的萤火带有仲夏的味道,满满都是童年的味道。当我们走近树旁边,通过装置的效果呈现,走进去捕抓一只萤火虫,便惊扰了一树的宁静,像漫天闪烁的星辰。投石科技的“萤火之光投影灯”互动装置就是想营造一个这样温馨的回忆感。被一束肉眼看不见的激光牵引。光点数量:50...

推荐文章

热门文章

相关标签