• 启发式算法(Heuristic Algorithm)


    背景:

      李航的《统计学习方法》一书中提到:决策树算法通常采用启发式算法,故了解之

    问题解答:

      时间有限,这里也只是将算法和启发式算法的区别和简单发展摘录如下: 

      一、算法和启发式方法之间的差别很微妙,两个术语的意思也有一些重叠。就本书的目的而言,它们之间的差别就在于其距离最终解决办法的间接程度:算法直接给你解决问题的指导,而启发式方法则告诉你该如何发现这些指导信息,或者至少到哪里去寻找它们。   

      二、发展

      40年代:由于实际需要,提出了启发式算法(快速有效)。

      50年代:逐步繁荣,其中贪婪算法局部搜索 等到人们的关注。

      60年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规 模的问题仍然无能为力(收敛速度慢)。

      70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局最优性。由此必须引入新的搜索机制和策略…Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的 兴趣。

      80年代以后:模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。

      最近比较热或刚热过去的:演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms), 拟人拟物算法,量子算法等。

      三、具体实现

      1.模拟退火算法

      2.遗传算法

    参考链接:

        http://www.jianshu.com/p/e7164b9837bb

        http://summerbell.iteye.com/blog/422398

  • 相关阅读:
    11个Linux基础面试问题
    OSI模型
    戴文的Linux内核专题:10配置内核(6)
    面向对象实验四(输入输出流)
    计算机程序的思维逻辑 (2)
    计算机程序的思维逻辑 (1)
    java基础3.0:Java常用API
    java基础2.0:Object、Class、克隆、异常编程
    java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
    Ajax工作原理(转)
  • 原文地址:https://www.cnblogs.com/arachis/p/Heuristic_Algorithm.html
Copyright © 2020-2023  润新知