计算机算法第课件•算法概述目录Contents01算法概述算法的定义算法定义算法的表示算法是一组明确的、有限的操作序列,用于解决某一类问题
这些操作按一定的顺序执行,最终得到问题的解
可以使用自然语言、伪代码、流程图等多种方式表示算法
算法与程序的关系算法是解决问题的方法,而程序则是实现算法的工具
算法是抽象的,而程序则是具体的
算法的特性确定性输入算法中的每个步骤都必须具有明确的含义,无歧义性
算法具有零个或多个输入,这些输入是算法执行所需要的数据
有穷性可行性输出算法具有至少一个输出,输出是算法执行的结果
算法必须在有限步骤内完成,即算法的执行时间是有限的
算法中的每个步骤都必须是可以实现的,即不存在无法实现的操作
算法的分类按功能分类排序算法、搜索算法、图算法、动态规划等
按复杂度分类按应用领域分类线性算法、对数算法、指数算法等
人工智能算法、机器学习算法、数据挖掘算法等
02算法设计基础贪心算法贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法
常见的贪心算法问题包括背包问题、最小生成树、最短路径等
贪心算法并不总是能得到问题的最优解,但在某些情况下,它能够得到近似最优解,且算法的效率较高
分治算法分治算法是将一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并
分治算法的关键是找到合适的分割点,将问题划分为规模较小的子问题,以便于求解
常见的分治算法问题包括归并排序、快速排序、二分查找等
动态规划01动态规划是一种通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法
02在动态规划中,每个子问题的解被存储起来,以便在解决更高级别的子问题时被重复使用
03动态规划适用于最优化问题,特别是那些重叠子问题和最优子结构的问题
回溯算法回溯算法是一