启发式算法(Heuristic Algorithm)
Posted 清水寺扫地僧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启发式算法(Heuristic Algorithm)相关的知识,希望对你有一定的参考价值。
在学习CSAPP虚拟内存章节中,针对外部碎片的优化使用启发式算法试图维持少量的大空闲块,而非维持大量的小空闲块(p592)。在知乎上看到了启发式算法的阐释,记录如下:
@辉太郎:利用类似仿生学的原理,将自然、动物中的一些现象抽象成为算法处理相应问题。当一个问题是NP-hard问题时,是无法求解到最优解的,因此,用一种相对好的求解算法,去尽可能逼近最优解,得到一个相对优解,在很多实际情况中也是可以接受的。
@Dr.h:启发式搜索算法蕴含着许多人生哲学,它虽不是数学方法,其思想更类似于人类解决问题的思想和一些人生中总结的道理,值得好好体会。最后用网上一段描述各种搜索算法的例子来作为总结:
为了找出地球上最高的山,一群有志 的兔子们开始想办法。
- ①兔子朝着比现在高的地方跳去。他们找到了不远处的最高山峰。但是这座山不一定是珠穆朗玛峰。这就是爬山法,它不能保证局部最优值就是全局最优值,也是深度/广度搜索(比较异同可见:DFS和BFS之间的比较);
- ②兔子喝醉了。他随机地跳了很长时间。这期间,它可能走向高处,也可能踏入平地。但是,他渐渐清醒了并朝他踏过的最高方向跳去。这就是模拟退火;
- ③兔子们知道一个兔的力量是渺小的。他们互相转告着,哪里的山已经找过,并组找过的每一座山他们都留 下一只兔子做记号。他们制定了下一步去哪里寻找的策略。这就是禁忌搜索;
- ④兔子们吃了失忆药片,并被发射到太空,然后随机落到了地球上的某些地方。他们不知道自己的使命是什么。但是,如果你过几年就杀死一部分海拔低的兔子, 多产的兔子们自己就会找到珠穆朗玛峰。这就是遗传算法。
以上只是粗略类比和阐释,更详细见:启发式算法(heuristic algorithm)
以上是关于启发式算法(Heuristic Algorithm)的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS diff算法Part 2: React diff 启发式算法(heuristic algorithm)的假设
启发式搜索(heuristic search)———A*算法