仅供参考,copy冲查重塔峰 算法设计与分析-5图论桥报告.docx (1) 图的连通性。 (2) 并查集的基本原理和应用。 由上面的数据可以看出: 1. 在基准算法里深度优先DFS比并查集DSU效率高。 2. 在小规模数据由于深度不大,所以路径压缩效果不明显。 3. 将基准算法改为判断可达后时间可以缩短40%,效果较明显。 4. 通过查并集dsu+最近公共祖先lca的方法,可以避免大量的冗余计算,效果明显。 通过本次实验,我加深对图的连通性的理解和运用,直到如何利用深度优先DFS算法、广度优先BFS算法、查并集DSU算法生成生成树并确定连通性。掌握并查集的基本原理和应用,通过父亲数组father、查找find()、合并join()实现并查集,以确定图的连通性。同时也了解到通过路径压缩和按秩合并的并查集优化方法。路径压缩在图规模较大、树深度较大时效果会比较好。
2022-06-19 09:09:46 6KB 算法设计与分析 图论
算法设计与分析-排序算法性能分析 仅做参考,copy冲查重塔峰 1. 选择排序、冒泡排序、合并排序、快速排序、插入排序算法原理 2. 不同排序算法时间效率的经验分析方法,验证理论分析与经验分析的一致性。 3.画出理论效率分析的曲线和实测的效率曲线,注意:由于实测效率是运行时间,而理论效率是基本操作的执行次数,两者需要进行对应关系调整。调整思路:以输入规模为10000 的数据运行时间为基准点,计算输入规模为其他值的理论运行时间,画出不同规模数据的理论运行时间曲线,并与实测的效率曲线进行比较。经验分析与理论分析是否一致?如果不一致,请解释存在的原因。 挺野蛮生长,之前半年打了c语言的题,还没打数据结构的题就直接上算法,只能说是梁静茹给我的勇气了。数据结构只是前几年浅浅过了概念,那时还未入行,虽然作为选修水课通宵搞通概念意外A+。。。(的确真水)。去年边学c边旁听了下,其实啥也也没听进入,emmm不管那么多感觉还能冲,直接上吧。为了拿个满分直接上台pre吧(纯纯被老师批斗也没事),在线忽略伪dalao。 没事整理整理这几个月的战绩吧,当复习了,算法思维更重要。
2022-06-18 22:05:51 1.3MB 算法设计与分析
仅做参考,copy冲查重塔峰 算法设计与分析 3回溯法—地图填色问题 pre ppt 回溯法地图填色 路径选择(MRV DH) 剪枝策略(向前检测和颜色轮换) 运行时间随图规模增大而增大 图密度 (1) 通过本次实验,我了解到回溯法的基本思想: 不断尝试每一条可行路径,出错时回退,直到找到可行解或全部解。提高回溯法的效率关键在于剪枝和路径选择策略。 (2) 在本次实验中,我尝试利用回溯法实现地图填色: ① 路径选择策略:即结点选择策略我采用了选择(MRV)和度最大选择(DH)策略,优先MRV再DH。 ② 剪枝策略:采用向前检测和颜色轮换策略。 ③ 每个区域可当做结点用结构体表示。需要记录最少剩余量(可选色)和度。 ④ 地图文件数据的获取:可采用文件流fstream读取。 ⑤ 邻接关系:可用邻接矩阵实现。 (3) 由运行时间可以看出随着图规模的增大,运行时间会相应增大。根据图密度的不同获得全部答案的难度也不同。当点规模较大且图密度较大时,运行时间和获得全部解的难度大大增加。
2022-06-18 22:05:50 10.8MB 算法设计与分析 回溯算法 地图填色
仅供参考,copy冲查重塔峰 算法设计与分析 3回溯法地图填色报告.doc (1) 回溯法算法设计思想。 (2) 地图填色问题的回溯法解法。 (1) 通过本次实验,我了解到回溯法的基本思想: 不断尝试每一条可行路径,出错时回退,直到找到可行解或全部解。提高回溯法的效率关键在于剪枝和路径选择策略。 (2) 在本次实验中,我尝试利用回溯法实现地图填色: ① 路径选择策略:即结点选择策略我采用了选择(MRV)和度最大选择(DH)策略,优先MRV再DH。 ② 剪枝策略:采用向前检测和颜色轮换策略。 ③ 每个区域可当做结点用结构体表示。需要记录最少剩余量(可选色)和度。 ④ 地图文件数据的获取:可采用文件流fstream读取。 ⑤ 邻接关系:可用邻接矩阵实现。 (3) 由运行时间可以看出随着图规模的增大,运行时间会相应增大。根据图密度的不同获得全部答案的难度也不同。当点规模较大且图密度较大时,运行时间和获得全部解的难度大大增加。
2022-06-18 22:05:49 1.99MB 算法设计与分析 地图填色 回溯算法
仅供参考,copy冲查重塔峰 算法设计与分析-回溯法地图填色源代码.cpp (1) 回溯法算法设计思想。 (2) 地图填色问题的回溯法解法。 (1) 通过本次实验,我了解到回溯法的基本思想: 不断尝试每一条可行路径,出错时回退,直到找到可行解或全部解。提高回溯法的效率关键在于剪枝和路径选择策略。 (2) 在本次实验中,我尝试利用回溯法实现地图填色: ① 路径选择策略:即结点选择策略我采用了选择(MRV)和度最大选择(DH)策略,优先MRV再DH。 ② 剪枝策略:采用向前检测和颜色轮换策略。 ③ 每个区域可当做结点用结构体表示。需要记录最少剩余量(可选色)和度。 ④ 地图文件数据的获取:可采用文件流fstream读取。 ⑤ 邻接关系:可用邻接矩阵实现。 (3) 由运行时间可以看出随着图规模的增大,运行时间会相应增大。根据图密度的不同获得全部答案的难度也不同。当点规模较大且图密度较大时,运行时间和获得全部解的难度大大增加。 (4) 在本次实验中需要注意几个点: ① 我使用c++编程,注意map为关键字不可使用。 ② 为了确保地图获取功能和填色结果的正确性,可分别编写测试模块进行检查。
仅供参考,copy冲查重塔峰。 算法设计与分析-4动态规划金罐游戏报告.doc (1) 动态规划算法设计思想。 (2) 金罐游戏问题的动态规划解法。 通过本次实验,我尝试了使用蛮力法(简单重复递归)和动态规划解决金罐问题,在该过程中我加深了对于动态规划算法的理解和运用。我认识到动态规划其实是在简单重复递归的逻辑增加状态数组,通过对状态数组的求解而免去重复递归的资源和时间消耗,从而获得解。 动态规划算法的关键就是将问题分解为子问题,并找到两者之间的状态方程。分解子问题的方法是找到最后一步。 另外通过蛮力法(时间复杂度O(2n))和动态规划(时间复杂度O(n2))的实际运行时间,加深对二者运算效率的理解。 在算法优化上,蛮力法也可借鉴动态规划的状态进行记录,避免重复调用,改进后可处理大数据但空间开销还是较大。动态规划求和步骤可提前做,同时在空间效率上可将二维数组压缩为一维数组。而将问题改为求当前序列相对最大金币值可避免求和开销。
2022-06-18 22:05:47 298KB 算法设计与分析 动态规划 金罐游戏
仅供参考,copy冲查重塔峰 (1) 动态规划算法设计思想。 (2) 金罐游戏问题的动态规划解法。 算法设计与分析-4动态规划金罐游戏.pptx 蛮力法(简单重复递归)和动态规划解决金罐问题 状态数组 子问题 状态方程 蛮力法(时间复杂度O(2n))和动态规划(时间复杂度O(n2)) 空间效率 当前序列相对最大金币值 通过本次实验,我尝试了使用蛮力法(简单重复递归)和动态规划解决金罐问题,在该过程中我加深了对于动态规划算法的理解和运用。我认识到动态规划其实是在简单重复递归的逻辑增加状态数组,通过对状态数组的求解而免去重复递归的资源和时间消耗,从而获得解。 动态规划算法的关键就是将问题分解为子问题,并找到两者之间的状态方程。分解子问题的方法是找到最后一步。 另外通过蛮力法(时间复杂度O(2n))和动态规划(时间复杂度O(n2))的实际运行时间,加深对二者运算效率的理解。 在算法优化上,蛮力法也可借鉴动态规划的状态进行记录,避免重复调用,改进后可处理大数据但空间开销还是较大。动态规划求和步骤可提前做,同时在空间效率上可将二维数组压缩为一维数组。
2022-06-18 22:05:47 8.45MB 算法设计与分析 动态规划 金罐游戏
仅供参考,copy冲查重塔峰。 算法设计与分析-4动态规划金罐游戏源代码.cpp (1) 动态规划算法设计思想。 (2) 金罐游戏问题的动态规划解法。 通过本次实验,我尝试了使用蛮力法(简单重复递归)和动态规划解决金罐问题,在该过程中我加深了对于动态规划算法的理解和运用。我认识到动态规划其实是在简单重复递归的逻辑增加状态数组,通过对状态数组的求解而免去重复递归的资源和时间消耗,从而获得解。 动态规划算法的关键就是将问题分解为子问题,并找到两者之间的状态方程。分解子问题的方法是找到最后一步。 另外通过蛮力法(时间复杂度O(2n))和动态规划(时间复杂度O(n2))的实际运行时间,加深对二者运算效率的理解。 在算法优化上,蛮力法也可借鉴动态规划的状态进行记录,避免重复调用,改进后可处理大数据但空间开销还是较大。动态规划求和步骤可提前做,同时在空间效率上可将二维数组压缩为一维数组。而将问题改为求当前序列相对最大金币值可避免求和开销。
仅供参考,copy冲查重塔峰 算法设计与分析-5图论桥pre ppt.pptx (1) 图的连通性。 (2) 并查集的基本原理和应用。 找出一个无向图中所有的桥 数据获取 边稀疏 空间浪费 基准算法 深度优先dfs 查并集dsu 高效算法 dfs基准算法优化(判断可达) 查并集+最小公共祖先 数据处理 基准算法:DFS比DSU效率高。 小规模数据:深度不大,路径压缩效果不明显。 判断可达后时间缩短40%,效果较明显。 dsu+lca可避免大量冗余计算,效果明显。   图的连通性 DFS、BFS、DSU生成生成树:连通性。 DSU:父亲数组father、查找find()、合并join() 路径压缩和按秩合并
2022-06-18 22:05:46 1.89MB 算法设计与分析 图论
算法设计与分析 一PRESETATION 仅做参考,请勿copy冲查重塔峰 排序算法性能分析 选择排序 冒泡排序 插入排序 合并排序 快速排序算法原理及代码实现 不同排序算法时间效率的经验分析方法 验证理论分析与经验分析的一致性 当面临巨大数据量的排序的时候,还是优先选择合并排序算法和快速排序算法。而选择排序算法、冒泡排序算法和插入排序算法不太适用于大数据排序。 现在有 1 亿的数据,请选择合适的排序算法与数据结构,在有限的时间内完成进行排序。 选择排序算法、冒泡排序算法和插入排序算法的时间复杂度为O(n2),写法简单,逻辑易懂,但算力性价比不高,不适用于数据量较大时使用。 合并排序算法和快速排序算法采用了采用分治法、递归的方法,将时间复杂度降为O(nlogn)。在本次实验中将数据量提到5万的时候,该类算法运行时间仍在几毫秒左右,而上面的3种算法运行时间已经到达十几秒左右,效率相差已经到达万倍。该类算法的运行时间随着数据的增加,运行时间渐近线性的增加。但注意理论上快速排序的空间复杂度较高为O(n),且最坏情况时时间复杂度也达到了O(n2)。所以快速算法也较为常用。