启发式算法(Heuristic Algorithm)
来源:互联网 发布:js currenttime 编辑:程序博客网 时间:2024/05/21 18:36
启发式算法:利用类似仿生学的原理,将自然、动物中的一些现象抽象成为算法处理相应问题。当一个问题是NP难问题时,是无法求解到最优解的,因此,用一种相对好的求解算法,去尽可能逼近最优解,得到一个相对优解
群体智能算法就是启发式算法
研究的重点就是如何平衡局部搜索与全局搜索,有效逃离局部最优解。
近几年比较活跃的算法有如下:
仿动物类的算法:粒子群优化,蚂蚁优化,鱼群算法,蜂群算法等;
仿植物类的算法:向光性算法,杂草优化算法,等等;
仿人类的算法有:和声搜索算法是较好的算法;
近年开始研究情感计算的人较多。
实际应用时差分进化算法较有优势。
近几年比较活跃的算法有如下:
仿动物类的算法:粒子群优化,蚂蚁优化,鱼群算法,蜂群算法等;
仿植物类的算法:向光性算法,杂草优化算法,等等;
仿人类的算法有:和声搜索算法是较好的算法;
近年开始研究情感计算的人较多。
实际应用时差分进化算法较有优势。
此外,还有爬山法、禁忌搜索(tabu search,TS)、模拟退火算法和遗传算法(Genetic Algorithm,GA)。像遗传算法、粒子群算法这一类算法某种程度上可以归为启发式算法。
算法与启发式算法的区别:
算法直接给你解决问题的指导,而启发式方法则告诉你该如何发现这些指导信息,或者至少到哪里去寻找它们。
启发式算法的难点是建立符合实际问题的一系列启发式规则。
启发式算法的优点在于它比盲目型的搜索法要高效,一个经过仔细设计的启发函数,往往在很快的时间内就可得到一个搜索问题的最优解,对于NP问题,亦可在多项式时间内得到一个较优解。
贪心算法与启发式算法的区别:
对于大多数问题而言纯粹的遍历所有状态总比贪心来的慢,但是贪心得到确切解的前提很苛刻,因此很有可能会得到很烂的解。
启发式算法则是通过一个启发函数对下一阶段状态进行粗略评估,这个评估是预计结果(并不确信);在遍历状态的过程中,我们优先去看可能可以得到好结果的情况,并且如果发现一个状态的理想估计比当前确实遍历过的解中最好的要差则可以放弃,这就叫启发式算法,这里我们叫确定性启发式算法或者启发式搜索。然而启发式搜索的本质仍旧是遍历所有状态,要保证确定最优解,它仍旧是个遍历,耗时仍然有可能很大。这个情况下加入一条限制:如果计算时间已经到达可承受的极限,则放弃剩下部分的搜索直接以当前找到的最好结果为结果,这样的启发式算法自然是非确定性的,于是可以算作近似算法。
参考自:
http://www.cnblogs.com/macula7/archive/2009/05/10/1960821.html
https://www.zhihu.com/question/27666809/answer/43395837
https://www.zhihu.com/question/28874818/answer/71957529
阅读全文
0 0
- 启发式算法(Heuristic Algorithm)
- 启发式算法(Heuristic Algorithm)
- 启发式算法(Heuristic Algorithm)
- 启发式算法(Heuristic Algorithm)
- 启发式算法(heuristic algorithm)
- 什么是启发式算法(heuristic algorithm)?
- A*算法:启发式(heuristic)算法
- 启发式算法greedy heuristic、贪心算法
- 元启发式算法(Metaheuristic algorithm)
- Heuristic Algorithm
- astar,启发式的函数,heuristic,
- 测试建模:启发式测试策略模型(Heuristic Test Strategy Model)
- 启发式搜索(Heuristic Search Methods)寻找问题的最优解
- 启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)
- 启发式测试策略模型(Heuristic Test Strategy Model,简称HTSM)
- 启发式评估(Heuristic Evaluation )的一点介绍
- 什么是启发式算法(转)
- 什么是启发式算法(转)
- 【bzoj2005】[Noi2010]能量采集
- python一行sql太长折成多行并且有多个参数
- 查看python中关键字
- Python---5.条件选择和python真假值
- leetcode 45. Jump Game II 贪心算法&&DFS深度优先搜索
- 启发式算法(Heuristic Algorithm)
- 《旧中国的黑社会》读后感
- 使用ADO实现vc中二进制文件数据的存取
- 1-3、常用概率分布与随机数生成
- git命令
- 单链表排序
- Vue2 全局-Vue.set更新vue数据
- 深入探究JVM | klass-oop对象模型研究
- 【机器学习】Kaggle-Titanic:Machine Learning from Disaster