算法体系PPT
算法概述算法是解决特定问题求解步骤的描述,是有限步骤的集合。好的算法应该具有明确的目标,有穷的步骤,每一步都可以得到有效的执行。算法不应该包含无法执行的步...
算法概述算法是解决特定问题求解步骤的描述,是有限步骤的集合。好的算法应该具有明确的目标,有穷的步骤,每一步都可以得到有效的执行。算法不应该包含无法执行的步骤或无法达到预期结果的步骤。算法的分类按照解决问题的类型排序算法、搜索算法、图算法、机器学习算法等按照算法的特性确定性算法、概率算法等按照算法的设计方式分治算法、动态规划算法、贪心算法、回溯算法等算法的评估评估算法的好坏通常从以下几个角度考虑:时间复杂度评估算法执行时间与输入数据规模的关系空间复杂度评估算法所需存储空间与输入数据规模的关系正确性算法是否能够正确地解决问题可读性算法是否易于阅读和理解稳定性算法对于输入的变化是否具有稳定的性能常见算法介绍排序算法冒泡排序通过比较相邻元素的大小,每次循环可以将最大(或最小)的元素“冒泡”到序列的一端选择排序每次循环,从未排序的部分选择最小(或最大)的元素,放到已排序部分的末尾插入排序每次循环,将一个未排序的元素插入到已排序部分的正确位置快速排序使用分治策略,选取一个基准元素,将数组分为两部分,一部分小于基准,一部分大于基准,然后对两部分递归地进行排序归并排序使用分治策略,将数组分为两部分,分别进行排序,然后将有序的部分合并起来搜索算法线性搜索依次检查每个元素,直到找到目标元素二分搜索在已排序的序列中,通过不断缩小搜索范围来找到目标元素深度优先搜索遍历树形结构,尽可能深地搜索分支,直到找到目标元素或达到叶子节点广度优先搜索按层次顺序遍历树形结构,直到找到目标元素或达到叶子节点图算法最短路径算法Dijkstra算法、Bellman-Ford算法等最小生成树算法Prim算法、Kruskal算法等拓扑排序算法Kahn算法、DFS算法等强连通分量算法Kosaraju算法、Tarjan算法等机器学习算法线性回归通过拟合一个线性模型来预测连续值的结果逻辑回归通过拟合一个逻辑函数来预测分类结果决策树通过将数据集划分为不同的分支,从而预测分类结果随机森林通过将多个决策树的结果结合起来,从而预测分类结果支持向量机通过将数据映射到高维空间,从而找到一个最优的划分超平面,将数据分为不同的类别神经网络通过模拟人脑神经元的连接方式,构建一个深度学习的模型,从而预测分类或回归结果动态规划算法背包问题给定一组物品,每种物品都有自己的重量和价值,背包的总容量有限,问如何选择物品放入背包,使得背包内的总价值最大最大子段和问题给定一个整数数组,问如何选择一段连续的子数组,使得这段子数组的和最大0-1背包问题给定一组物品,每种物品都有自己的重量和价值,背包的总容量有限,问如何选择物品放入背包,使得背包内的总价值最大分治算法二分查找算法在已排序的序列中,通过不断缩小搜索范围来找到目标元素。-快速排序算法:使用分治策略,选取一个基准元素,将数组分为两部分,一部分小于基准,一部分大于基准,然后对两部分递归地进行排序。-归并排序算法:使用分治策略,将数组分为两部分,分别进行排序,然后将有序的部分合并起来。-堆排序算法:使用分治策略,将数组分为两部分,一部分小于另一部分,然后对两部分递归地进行排序。-快速选择算法:在未排序的序列中,通过不断缩小搜索范围来找到第k小(或大)的元素