【算法】定义和类别
什么是算法?常见的算法分别解决什么问题?
计算机算法的定义
计算机算法是为了解决某一类问题而设计的、由有限且明确的指令组成的计算过程。它从给定的输入出发,经过一系列清晰定义的状态转移,在有限步骤内产生输出并终止。算法可用自然语言、伪代码、流程图或编程语言描述,其形式化基础与图灵机等可计算性理论密切相关,强调可被计算机实现与模拟。
核心特征
- 输入:有0 个或多个输入,刻画初始条件。
- 输出:有1 个或多个输出,与输入存在确定的对应关系。
- 明确性:每一步都无歧义、可判定。
- 有限性:在有限步骤后必然终止。
- 有效性(可行性):每一步都可由基本运算在有限时间内完成。这些特征共同保证算法可被可靠执行并产出预期结果。
与程序和数据结构的关系
- 程序是算法的具体实现,是告诉计算机“按何种顺序执行哪些操作”的指令集合;同一算法可用不同语言或方式实现。
- 数据结构用于高效组织与存储数据,算法的选择与数据结构的设计相互依赖、共同决定程序的效率与可扩展性。
- 在计算机系统中,算法与数据结构被视为程序的两大基础。
常见设计与复杂度度量
- 常用设计范式:分治法、动态规划、贪心算法、回溯/搜索(如深度优先、广度优先、启发式)、线性规划等。
- 复杂度度量:
- 时间复杂度衡量运行时间
