
正文
爬山算法java代码 爬山算法应用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
爬山算法
爬山算法是一种局部择优的方法,是一种局部贪心的最优算法。
采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 该算法每次从当前解的临近解空间中选择一个最优解作为当前解,
直到达到一个局部最优解,属于人工智能算法的一种。
实现简单,其主要缺点是会陷入局部最优解,不一定能搜索到全局最优解。
如下图所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,
因为在A点无论向那个方向小幅度移动都不能得到更优的解。
如果想进一步了解爬山算法及其应用,请参考:
基于爬山算法求解TSP问题(JAVA实现)
机器学习优化算法之爬山算法小结
相关问答
Q1: java面试题:一个人早上八点上山,晚上八点到达山顶。第二天早上八点下山,晚上八点到达山底。
java面试题爬山算法java代码的解析方式(思路如下):
public static void main(String[] args) {
// TODO Auto-generated method stub
int up = 8;
int down = 8;
while(up=20){
if((up == 20-6) (up == 20-6)){
System.out.println("在"+up+"时到达同一地点");
break;
}
up += 1;
down += 1;
}
}
微软面试题的背后
微软的奇葩面试题答案并不重要,重要的是思考过程,而思考过程体现了爬山算法java代码你是否拥有公司所看重的能力,不仅是微软,其爬山算法java代码他公司的面试也是为了测试爬山算法java代码你的某种能力,如果爬山算法java代码你提前培养了这种能力,相当于知道了面试的“考纲”,在面试中自然就从容不迫,游刃有余了。
平时要知道转化能力是看透问题,然后找到解决方案的能力。所以转化能力最重要的是如何看透问题,也就是你思考问题的方式。
Q2: 什么是爬山算法
我在百度上找的!~~
简介
爬山算法是一种局部择优的方法,采用启发式方法,是对深度优先搜索的一种改进,它利用反馈信息帮助生成解的决策。 属于人工智能算法的一种。
算法:
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)、山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小。
其他相关算法
stochastic hill climbing
First-choice hill climbing
Ramdom-restart hill climbing
Simulated annealing search
Local beam search
如果您认为本词条还有待完善,需要补充新内容或修改错误内容,请 编辑词条
爬山算法java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于爬山算法应用、爬山算法java代码的信息别忘了在本站进行查找喔。







