- 博客(11)
- 收藏
- 关注
原创 算法分析——线性时间选择
快速选择算法的基本思想是选择一个枢纽元素(pivot),然后根据枢纽元素的值将数组分成两部分,一部分包含比枢纽元素小的元素,另一部分包含比枢纽元素大的元素。通过不断地划分和选择,最终可以在线性时间内找到第k小(或第k大)的元素。"线性时间选择"通常指的是在一组元素中以线性时间复杂度找到第k小(或第k大)的元素。给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素。(这里给定的线性集是无序的)。(如果将这个线性集先排好序,则排在第k个位置的元素即为要找的元素)
2024-01-02 11:05:13
703
1
原创 算法分析——0-1背包问题
1.最优化原理(最优子结构性质):一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。2.无后效性:将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态。3.子问题的重叠性:如果有大量的重叠子问题,我们可以用空间将这些子问题的解存储下来,避免重复求解相同的子问题,从而提升效率。放入物品i,则是最大容量减去物品i的容量所余容量可放的最大价值,加上物品i的价值。
2024-01-02 09:51:39
366
1
原创 贪心算法习题
一辆虚拟汽车在加满油之后可以行驶 n km。旅途中有 k 个加油站。设计一个有效算法,使得沿途加油的次数最少。终端输入正整数 n 和 k,表示汽车加满油后可行驶 n km,且旅途中有 k 个加油站。接下来输入 k+1个整数,表示第 k 个加油站与第 k-1个加油站之间的距离。第 0 个加油站表示出发地,汽车已加满油。第 k+1个加油站表示目的地。
2023-11-17 12:30:28
111
1
原创 回溯法习题
现有n种不同形状的宝石,每种n颗,共n*n颗。同一形状的n颗宝石分别具有n种不同的颜色c1,c2,…,cn中的一种颜色。欲将这n*n颗宝石排列成n行n列的一个方阵,使方阵中每一行和每一列的宝石都有n种不同的形状和n种不同颜色。是设计一个算法,计算出对于给定的n,有多少种不同的宝石排列方案。
2023-11-17 12:30:04
161
1
原创 动态规划——三角剖分问题
凸多边形三角剖分是一个几何问题,是计算及图形学的一项重要技术,其问题描述是:给定一个凸多边形,以及定义在由凸多边形的边和弦组成的三角形上的权函数。不同的是,动态规划将子问题的解存储下来,避免求解相同的子问题,因此,动态规划往往应用于子问题不是相互独立的情况。2.无后效性:将各阶段按照一定的次序排列好之后,对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策,而只能通过当前的这个状态。3.子问题重叠:如果有大量的重叠子问题,我们可以用空间将这些子问题的解存储下来,避免重复求解相同的子问题。
2023-11-03 12:50:35
161
原创 动态规划——图像压缩
由此可以看出,如果用定长8位来表示灰度图中的每一个像素,就会造成很大的空间浪费…设l[i],b[i],1<=i<=m是{p1,p1,……pn}的一个最优分段,则l[1],b[1]是{p1,。,pl[1]}的一个最优分段,且l[i],b[i],2<=i<=m是{pl[1]+1,,pn}的一个最优分段。其中整数Pi,1<=i<=n,表示像素点i的灰度值。另外,如果图像压缩的操作对象是一个彩色图像,那么需要将其先转换为灰度图,计算原始大小再进行DP压缩。设s[i],1<=i<=n是像素序列{p1,p1,
2023-11-03 12:50:16
178
原创 算法分析——最接近点对问题
由于能与p点一起构成最接近点对候选者的S2中点一定在矩形R中,所以它们在直线l上的投影点距p在l上投影点的距离小于d。因此,若将q和p中所有S的点按其y坐标排好序,则对q中所有点,对排好序的点列作一次扫描,就可以找出所有最接近点对的候选者,对q中每一点最多只要检查p中排好序的相继6个点。如,判断空中飞行的两架飞机是否有碰撞危险,我们可以将飞机近似为点,它们的最小安全距离就是我们的求解目标,这类问题在计算几何学中被称为。一维最接近点对问题的解决很简单,利用分治策略将点集S划分,求出最邻近点对后逐步合并。
2023-10-17 13:33:53
1253
原创 算法分析——汉诺塔问题
书接上回,本文介绍另一个经典的递归模型——汉诺塔。汉诺塔游戏是大家耳熟能详的数学问题。汉诺塔起源于古老的印度传说,其规则如下:1.有三根邻近的柱子,标号为A,B,C。2.A柱子上从下向上按金字塔状叠起来着n个不同大小的圆盘。3.现在把所有的盘子一个一个挪动到柱子B上,而且每一次挪动同一根柱子上都不可以出现大盘子在小盘子上方。不难发现,汉诺塔问题也可以利用递归的策略解决。思路为:1.将n层汉诺塔划分至最小;
2023-10-07 22:14:58
275
原创 算法分析——Perm算法
Perm算法是一种解决全排列问题的思想,它是递归的一个实例。一、递归算法一个直接或间接地调用自身的算法成为递归算法。递归算法有两个基本组成元素:递归方程(一个使用函数自身给出定义的函数)和边界条件。在合并排序和快速排序一问中,我总结了分治策略在大规模问题中的引用。递归算法与分治策略都是将分体划分后重复调用并求解的过程,区别在于递归算法是已知问题的结果和边界条件;分治法是已知问题的中间过程,再逐步将问题划分并求解。以上就是关于Perm算法解决全排列的所有内容。
2023-10-02 22:29:03
483
1
原创 算法分析——合并排序和快速排序
本文用于记录和总结算法学习中关于合并排序和快速排序的内容。合并排序和快速排序运用了分治策略来提高算法的效率,二者是如何体现分治思想,又有何异同呢?合并排序和快速排序的时间复杂度虽然相同,但不难看出合并排序算法更加稳定。一般,我们通过随机生成快速排序的基准元素来降低轴偏移对算法性能的影响。
2023-09-20 09:16:00
982
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人