算法
文章平均质量分 84
🐟老师真不戳吧
浅度断墨
鞋又鞋不费,叮又叮不懂,洗了涮了
展开
-
实验05:算法设计策略的比较与选择
三种算法在解决这个问题时都考虑到固定某一元素一定在和最大子段中,然后通过遍历、分治、动态规划的方法求解最大值。在BF算法中,固定了和最大子段的起点,分支算法固定了子段的中点,而DP算法固定了子段末尾。区别在于BF算法枚举nnn次起点,每次需要n−in-in−i次求和,分治算法枚举logn\log{n}logn次固定点,每次遍历加和需要nnn次,动态规划算法枚举nnn次固定点,但是每次枚举时根据之前的结果就可立刻判断最大值。原创 2023-04-23 10:27:52 · 614 阅读 · 0 评论 -
实验06:哈夫曼编码
与动态规划图像压缩方式相比,霍夫曼编码压缩方式无需考虑压缩文件像素值的分布,只考虑出现频率,因此动态规划的压缩效果一定程度上与图像像素值相关,而霍夫曼编码压缩效果不会受到较大影响。原创 2023-04-23 10:29:53 · 1057 阅读 · 0 评论 -
实验07:子集和问题
剪枝的方法一定程度上消减了回溯法递归的时间复杂度,但是仍无法影响最坏情况。源程序见CODE文件夹,包括两种算法程序DfsAndDp.cpp,及随机输入数据生成程序generateData.cpp等。原创 2023-04-23 10:34:49 · 634 阅读 · 0 评论 -
实验04:图像压缩(DP算法)
本实验中采用bin文件格式保存中间编码(压缩)文件以直观显示压缩完成后文件大小,本实验所有代码保存于CODE文件夹,所有结果保存于RESULT文件夹以便老师查阅。将像素值均大于271282^7=12827128的分段进行取反操作,保存像素值与256256256之差,段长最大值减一,需多加一位符号位表示是否取反,对于像素值较大的图像压缩率较大。对于一段像素值用高斯分布等概率模型拟合,保存参数后解压时用概率分布函数生成像素值。原创 2023-04-23 10:22:25 · 679 阅读 · 0 评论 -
实验3:第 K 大元素(分冶法)
本次实验实现了随机选择算法和固定pivot选择算法并分析对比了两者的性能。相对于固定pivot选择算法,随机选择算法每次partition随机选择一个元素作为基准,平均而言划分结果时较对称的。对任意顺序的输入序列,随机快排都能够以较大概率保证划分均匀,运行时间不会有较大波动。原创 2023-03-14 00:43:01 · 249 阅读 · 0 评论 -
实验2:斐波那契数计算
在本实验中,分治算法运算时间较快,\theta(log_2n)的复杂度随问题规模增加,运行时间变化较小,难以测量。因此本实验选择运算速率相对较慢的python语言运行相同程序,得到结果相对易于测量观察。本实验中,通过不断对求解斐波那契数的算法进行优化,我总结如下:递归是方便的算法,编写程序只需考虑求解问题的一部分或是小规模问题,即可运算得到正确结果,无需考虑具体计算过程。但是递归树节点的大量重复很难避免,于是考虑运算过后将小问题的结果储存,求解大问题时直接取出计算。原创 2023-03-14 00:37:59 · 538 阅读 · 0 评论 -
实验01:吃鸡蛋问题
此问题应与整数划分区别开,整数划分(最小数不少于2)只计算划分数即可,本问题还需计算每个划分种不同排列,例如n=7时,\{2,2,3\}是一种合法的整数划分,而\{2,2,3\},\{2,3,2\},\{3,2,2\}都是合法的吃鸡蛋方式,记3种,故两者并不相同。对于情形2,因为最后一天吃的鸡蛋数\geq 3个,所以减少1个也是合法的吃法,所以该情形的吃法有f(n-1)种。初步学会递归算法和非递归算法的转换。时间复杂度为O(n^2),空间复杂度为O(n),但是本实验中采用进一步优化的迭代算法改善算法效率。原创 2023-03-14 00:32:49 · 396 阅读 · 0 评论