算法
Algorithm
为解决某一类特定问题而设计的、在有限步骤内可执行的、精确的指令序列 。
它规定了解题的输入、输出、操作步骤和逻辑流程,是计算机科学的核心概念之一。
算法的基本特性
算法研究的根本是各种现实问题的求解,将问题抽象为数学模型后。很多现实的问题的求解就可以归结为同一问题的求解。
- 问题是明确的,包含清晰的输入和输出定义。
- 具有可行性,能够在有限步骤、时间和内存空间下完成。
- 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。
快速了解新的算法
-
明确算法定位与解决的问题
- 这类算法是解决什么类型的问题?(排序?搜索?图论?优化?机器学习?)
- 输入是什么?输出是什么?
- 与哪些问题场景最相关?
-
把握算法的核心思想
-
从伪代码或流程图入手,画图模拟
-
亲自实现 + debug + trace
-
掌握复杂度、边界与变体
- 时间/空间复杂度分析;
- 极端输入下表现;
- 该算法是否有改进版、并行版、近似版?
常用算法
枚举:直接列举出所有可能情况并逐一验证
搜索:从数据中寻找满足条件的目标
排序:对数据按照某种规则进行有序排列
分治:将问题分解成规模更小的子问题递归求解,最后合并
回溯:尝试探索所有可能解,通过“撤回上一步”回到分支点继续尝试
动态规划:利用子问题最优解构建大问题最优解,通过“保存中间结果”避免重复计算
贪心算法:在每一步选择局部最优解,期望通过局部最优得到整体最优
差分与前缀和:处理区间更新与查询问题的高效技巧。
最短路径算法:寻找图中两点之间的最短路径
启发式优化算法:通过概率或启发信息寻找近似解