自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 The-Design-and-Analysis-of-Algorithms 作业13

《漫画算法:小灰的算法之旅》读后感在上学期数据结构课程的学习过程中,就查阅到过这本书中的相关内容,书的主人公是两只可爱的小仓鼠,语言很口语化,以漫画的形式讲述小灰学习算法和数据结构的心路历程,从读者的视角出发,比较容易理解,因此留下了比较深刻的印象。这学期算法课选择了《漫画算法:小灰的算法之旅》这本书阅读,虽然知识面覆盖不广,但形式新颖,讲解通俗易懂。通过阅读此书,我渐渐感受到算法趣味性,认识到学习算法更重要的是领悟算法思想,相对于死记硬背的一些指令语法,算法的学习过程更加灵活。在第一章中,作者介绍了

2021-06-13 16:59:52 83

原创 The-Design-and-Analysis-of-Algorithms 作业14

1. 问题设有n项任务,加工时间分别表示为正整数t1,t2,…,tn.现有2台同样的机器,从0时刻开始安排对这些任务的加工。规定只要有待加工的任务,任何机器就不得闲置。如果直到时刻T所有任务都完成了,总加工时间就等于T。设计一个算法找到使得总加工时间T达到最小的调度方案。设给定的实例如下:t1=1,t2=5,t3=2,t4=10,t5=3试给出一个加工时间最少的调度方案,给出计算过程和问题的解。2. 解析选择采用贪心算法解决此问题,让最长处理时间的作业优先,即把处理时间最长的作业分配给最先空闲的机

2021-06-12 18:12:08 322

原创 The-Design-and-Analysis-of-Algorithms 作业12

1. 问题给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2. 解析这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的两个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问题。输入:第一行是顶点的个数n(2≤n≤10),颜色数m(1≤m≤n)。接下来是顶点之间的相互关系:a b表示a和b相邻。当a,b同时为0时表示输

2021-06-01 23:08:18 85

原创 The-Design-and-Analysis-of-Algorithms 作业11

1. 问题2. 解析构造最优前缀码的贪心算法就是哈夫曼算法(Huffman)实例:3. 设计create_HuffmanTree();void HfCoding(HfTree HT, HfCode& HC, int n){ HC = (HfCode)malloc(n * sizeof(char*)); char* code = (char*)malloc(n * sizeof(char)); int cur = 2 * n - 2,code_len = 0; for

2021-05-25 00:30:47 84

原创 The-Design-and-Analysis-of-Algorithms 作业10

1. 问题2. 解析定理:如果装载问题有解,则存在一个使得第一条船装载量与c1的差达到最小的解。证明:将第一艘船装入尽可能重的集装箱当剩余集装箱重量小于第二艘船时,那么能够装下所有集装箱。通过不断交换集装箱,直到找到一个使得第一条船装载量与 c1的差达到最小的解。设计实例:分析最坏情况要遍历图中所有结点,算法的时间复杂度为O(2n)。源码https://github.com/LiChunning/The-Design-and-Analysis-of-Algorithms

2021-05-19 12:18:02 63 1

原创 The-Design-and-Analysis-of-Algorithms 作业9

1. 问题最长公共子序列算法:2. 解析3. 设计实例:4. 分析两重循环,故时间复杂度为O(mn),其中m代表第一个字符串长度,n代表第二个字符串长度.5. 源码https://github.com/LiChunning/The-Design-and-Analysis-of-Algorithms/blob/main/LCS.cpp6. 问题7. 解析8. 设计实例:9. 分析O(n)10. 源码https://github.com/LiChunning

2021-05-11 10:50:27 60

原创 The-Design-and-Analysis-of-Algorithms 作业8

1. 问题例如,P=<10,20,30,40>,则A1:10×20,A2:20×30,A3:30×40,有两种结合次序1)(A1A2)A3:10×20×30+10×30×40=180002)A1(A2A3):10×20×40+20×30×40=320002. 解析动态规划法:示例:P=<10,6,30,20,7,5> n=5p0=10 p1=6 p2=30 p3=20 p4=7 p5=5A1:106A2:630A3:3020A4:207A5:7*5(

2021-04-27 10:43:28 91

原创 The-Design-and-Analysis-of-Algorithms 作业7

1. 问题m元钱,n项投资,fi(x):将x元投入第i个项目的效益.求使得总效益最大的投资方案.2. 解析建模:问题的解是向量<x1,x2,…,xn>,xi是投给项目i的钱数,i=1,2,…,n.目标函数 max{f1(x1)+f2(x2)+…+fn(xn)}约束条件 x1+x2+…+xn=m,xi∈N实例:5万元钱,4个项目.效益函数如下表所示:子问题界定:有参数k和x界定. k:考虑对项目1,2,…,k投资 x:投资总钱数不超过x原始输入:k=n,x=m子问题计算顺序

2021-04-25 22:01:14 123

原创 The-Design-and-Analysis-of-Algorithms 作业6

1. 问题设S是n个元素的集合,从S中选取第k小的元素,其中1<=k<=n。这里第k小的元素是指,当L按从小到大排好序之后,排在第k个位置的元素。利用特定分治策略选出第k小的元素。2. 解析分治算法:假设元素彼此不等1.用某个元素m作为标准将S划分成S1与S2,其中S1的元素小于m,S2的元素大于等于m*.2.如果k<=|S1|,在S1中找第k小.如果k=|S1|+1,则m*是第k小.如果k>|S1|+1,则在S2中找第k-|S1|-1.3. 设计4. 分

2021-04-19 16:38:29 52

原创 The-Design-and-Analysis-of-Algorithms 作业5

1. 问题n个点在公共空间中,求出所有点对的欧几里得距离最小的点对。2. 解析令P为笛卡儿平面上n>1个点构成的集合。简单起见,假设集合中的每个点都不一样,这些点是按照其x、y轴坐标升序排列的,并将这个列表示为 Q。当2≤n≤3时,问题就可以通过蛮力算法求解。当n>3时可以利用点集在x轴方向上的中位数m,在该处作一条垂线,将点集分成大小分别为⌈n/2⌉和⌊n/2⌋的两个子集Pl和Pr。即使得其中⌈n/2⌉个点位于线的左边或线上,⌊n/2⌋个点位于线的右边或线上。然后就可以通过递归求解子

2021-04-12 23:15:48 60

原创 The-Design-and-Analysis-of-Algorithms 作业4

1. 问题对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k.2. 解析二分归并排序是一种分治算法。这个算法不断地将一个数组分为两部分,分别对左子数组和右子数组排序,然后将两个数组合并为新的有序数组。用二分归并排序算法对[7,91,23,1,6,3,79,2]从小到大排序。(1)首先将数据进行两两分组,[7,91],[23,1],[6,3],[79,2],一共分为4组。(2)将4组数分别两两比较大小排序,得到[7,91,1,23,3,6,2,79],第一趟排序完成。(3)进行第

2021-03-29 16:28:00 49

原创 The-Design-and-Analysis-of-Algorithms 作业3

1. 问题写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.2.解析顺序查找:顺序查找是一种最简单和最基本的方法,从顺序表的一端开始,依次将每个元素的关键字同给定值 x 进行比较,直到相等或比较完毕还未找到则结束程序。二分查找:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表

2021-03-22 16:09:51 63

原创 The-Design-and-Analysis-of-Algorithms 作业2

1. 问题用Floyd算法求解下图各个顶点的最短距离。给出距离矩阵(顶点之间的最短距离矩阵)对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。2. 解析Floyd算法:可以方便的求得任意两点的最短路径,称为“多源最短路”。当任意两点之间不允许经过第三个点时,这些点之间最短路径就是初始路径。假如现在只允许经过1号顶点,求任意两点之间的最短路径,只需判断e[i][1]+e[1][j]是否比e[i][j]要小即可。e[i][j]表示的是从i号顶点到j号顶点之间的路径。e[i][1]+e[

2021-03-15 22:08:57 102

原创 The-Design-and-Analysis-of-Algorithms 作业1

1. 问题举实例,分别画出采用Prim算法和Kruskal算法构造最小生成树的过程,并实现代码。2. 解析生活中最小生成树问题的应用很广泛,例如有四个村庄要修四条路,让村子能两两联系起来,这时就有最优的问题,怎样修才是做好的。可以采用Prim算法或Kruskal算法解决。**最小生成树:**一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。**Prim算法:**通过一系列不断扩张的子树来构造一棵最小生成树。如图,从图的顶点集合中选择

2021-03-13 14:28:42 148

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除