- 博客(15)
- 收藏
- 关注
原创 软件工程期末总结
教材:《软件工程导论(第六版)》 张海藩 牟永敏 著一、 软件工程学概述1. 软件危机及其概念软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。典型表现:1) 估计不准:对软件开发成本和进度的估计常常很不准确。2) 不满意:用户对“已完成的”软件系统不满意。3) 质量不可靠:软件产品的质量往往不可靠。4) 不可维护:软件常常不可维护。5) 文档不适当:软件通常没有适当的文档资料。6) 成本上升:软件成本所占比例逐年上升。7) 供不应求:软件开发生产效率提高的速度,远
2021-06-14 18:58:28 2020
原创 算法分析与设计大作业:圆排列问题
1.问题给定n个圆的半径序列,将它们放到矩形框中,各圆与矩形底边相切,求具有最小排列长度的圆排列。2.解析使用回溯法,去尝试每一个圆的位置,如果在仅有一部分圆的时候摆放长度就已经超出范围了,就直接排除,降低复杂度,若不超出就继续尝试下一种摆放位置(就是把所有圆全排列,排除一部分太长的摆法)3.设计min=10010;void compute(double* orig, double* index_x, int num, double* best) { //计算最终长度 double l
2020-06-15 21:13:59 574
原创 算法分析与设计作业13:读书报告
这学期由于实验室工作要用到,疫情期间在家的闲暇时间读了一点点《Deep Learning》(深度学习花书)。虽然很多地方看不懂,但我觉得坚持看下来再加以配合代码的实践操作,应该还是会学到一些东西。这本书讲述了一些深度学习的基本概念和基本算法像反向传播算法、梯度下降算法、Dropout等。加上实验室学长对我们的培训,对这些算法也有了初步的了解。在我目前学到的机器学习的中,降低损失函数的值是其中最重要的步骤之一,为了达到这个目的,优化函数的性能就显得尤为重要。其中让我记的比较清楚的是Adam算法,因为
2020-06-09 19:43:52 367
原创 算法分析与设计作业12:图的m着色问题
1.问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO"。2.解析可以通过回溯的方法,不断的为每一个节点着色,在前面n-1个节点都合法的着色之后,开始对第n个节点进行着色,这时候枚举可用的m个颜色,通过和第n个节点相邻的节点的颜色,来判断这个颜色是否合法,如果找到那么一种颜色使得第n个节点能够着色,那么说明m种颜色的方案是可行的。例:如图,5个顶点,4种颜色。建立数
2020-05-31 17:47:29 1413
原创 算法分析与设计作业11:最优前缀码
1.问题给出n个字符的频率,给每个字符赋予一个01编码串,使得任意一个字符的编码不是另一个字符编码的前缀,而且编码后总长度(每个字符的频率与编码长度乘积的总和)尽量小。2.解析输入一个n个节点的树。将每个节点按照权重排序,每次选出最小的两个节点,做和形成新的节点,构造出哈夫曼树。左子树为0,右子树为1。3.设计int Min(HuffmanTree HT, int n) { unsigned int f_min = 100; int flag = 0; for (int i = 1;
2020-05-19 10:43:44 352
原创 算法分析与设计作业10:贪心算法——相容问题
1.问题有n项活动申请使用同一个礼堂,每项活动有一个开始时间和一个截止时间。如果任何两个活动不能同时举行,问如何选择这些活动,从而使得被安排的活动数量达到最多。2.解析将输入的一组开始与截至时间按结束时间升序排列:依次遍历每个活动,根据已选择的最后一个活动的结束时间和遍历到的活动的开始时间来判断是否将该活动选择。步骤:已选择数组Y={}第1个活动,结束时间最早,直接选择。Y={1}...
2020-05-04 17:59:41 577
原创 算法分析与设计作业9:LCS算法
1.问题最长公共子序列问题:给定序列X=<x1,x2,x3,……xn>和Y=<y1,y2,y3,……,yn>,求X和Y的最长公共序列。2.解析对于字符串:ACEGHI 和 BCDEFGHLCS二维表格3.设计def lcs(x, y): m = len(x) + 1 n = len(y) + 1 if m == 1 or...
2020-04-28 21:02:09 263
原创 算法分析与设计作业8:动态规划——矩阵链乘法
1.问题给定一定个矩阵序列,求出该矩阵序列的乘积所需计算的最少乘法次数。2.解析运用动态规划的思想,将矩阵依次分割并记录所需乘法次数,找出其中最小的被下一级使用。例:矩阵序列:A1: 30 * 35A2: 35 * 15A3: 15 * 5A4: 5 * 10A5: 10 * 20A6: 20 * 25步骤:r=1(r表示一次计算r个矩阵) (由于矩阵自身做不了乘法,所...
2020-04-20 20:57:53 369
原创 算法分析与设计作业7:动态规划——投资问题
1.问题设m元钱,n项投资,函数fi(x)表示将x元投入第i个项目所产生的效益(i=0,1,2,3……n)。问:如何分配这m元钱,使得投资总效益最高?2.解析将这个问题分割开看,将一部分资金x元分割给第k个项目,那么剩下k-1个项目分得资金m-x元,零gk(x)表示将资金x分给前k个项目的最大利润,则求max(fk(x)+gk-1(m-x))当k=1时:g1(x)= f1(x),即找到...
2020-04-13 16:51:15 1432
原创 算法分析与设计作业6:查找第K小元素(特定分治策略)
1.问题给定一个无序数组,选出数组中第k小的元素。常规方法是将数组按升序排序,再选出其中第k个元素,但排序方法的平均时间复杂度无法左到O(n)(个别特定情况可以做到,但这里讨论平均),所以提出特定分治的策略来将该问题的时间复杂度提升到O(n).2.解析将数组分为五个一组,最后不够5个就单列一组,对每一小组进行排序找出每组的中位数,将每个小组的中位数取出,重复这个操作,直至只剩最后一个数字。...
2020-04-06 22:21:48 1791
原创 算法分析与设计作业5:最近对问题
1.问题在二位平面内,给定n(n>=2)个点,找出这n个点中两两之间的最小距离。2.解析当n=2时,直接输出两点的距离;当n=3时,两两比较点之间的距离,输出其中最短的距离;当n>3时,采用分治的方法,将点集不断二分找出最小集合内的最短距离d,但d不一定是分出的两个子集中的最短距离,再临近子集中的点与分割线上的点计算距离并与d比较,找出最小距离d依此方式递归,找出最短距离dm...
2020-03-31 13:52:35 222
原创 算法分析与设计作业4:归并排序
1.问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k标题2.解析先将杂乱的数字两两分组,对两个数字比较大小进行排序,再将两个排序好的数组按顺序归并,依此循环k次,直至所有小数组被归并为完整的大数组。3.设计void merge(int* num_1,int* num_2,int i,int s,int n){ int j=s+1;int k=i; ...
2020-03-23 20:52:47 300
原创 算法分析与设计作业3:数组中检索特定数字——遍历与二分法
一、遍历1.问题在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。2.解析最普通的方法就是把数组中所有数据遍历一遍(这种方法即使不是排好序的数组也同样适用)3.设计int Search_1(int* num,int n,int k){ //num为指向数组的指针,n为数组长度,k为待查数字 for(遍历整个数组){ if(...
2020-03-16 11:31:07 368
原创 算法分析与设计作业2:Floyd算法与Dijkstra算法求最短路径
一、Floyd算法1.问题在一个带权图中,找出各点到途中任意一点的最短路径。2.解析如图所示有向图,将每一个点作为任意两点的中转点,即可找到各点至任意一点的最短距离。步骤:将图用矩阵表示(Inf表示无线大,即不可直接到达);可以发现有三条路径的距离变了(用黄色标出);可以发现有一条路径的距离变了(用蓝色标出);可以发现有两条路径的距离变了(用橙色标出);以发现有两条...
2020-03-09 00:10:51 794
原创 算法分析与设计作业1:Prim算法与Kruskal算法构造最小生成树
一、Prim算法1.问题给定无向连通图G=<V,E>(V表示顶点,E表示线路),e(x,y)表示连接x顶点与y顶点的边,w(x,y)表示e(x,y)这条边的权重,找出G的子集M使得M包含V个顶点且不形成环(必要条件:只有V-1条边)。2.解析如图所示无向连通图,给定某一起点,将作为起点的顶点标记,从该顶点出发,找出与该起点邻接且权重最小的顶点,将此顶点标记,继续从任意已标记的...
2020-03-01 15:14:28 1213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人