算法(Algorithm)概念
指解题方案的准确而完整的描述, 是一系列解决问题的清晰的指令.
算法中的每个指令描述的是一个计算, 当期运行时能从一个初始状态和初始输入开始,经过一系列有限而清晰定义的状态, 最终产生输出并停止与一个终态.
算法特征:
确切性 可行性 有穷性 输入项 输出项
计算机常用5大算法:
贪婪算法 动态规划算法 分治算法 回溯算法 分支限界算法
贪婪: 获取局部最优解, 最优程度取决于贪婪策略. 在局部中选择看起来最优的解决方案, 而不去考虑全局最优. 因此形成的全局解决方案多为次最优.
动态规划: 解决重复子问题和最优结构. 避免大量的重复计算. 如果重复较少,则鸡肋.
分治算法: 将大问题分成小问题,然后继续向下分.递归的典型应用.
回溯算法: (深度优先)沿着一条分支一直向下走, 一头走到黑, 当无法继续的时候, 回溯到上一个分支, 接着往下走, 直到遍历所有路径.(八皇后问题,迷宫问题)
分支限界算法: (广度优先) 同层级依次尝试, 找到最优的才往下走.