自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法设计与分析作业十二——图的m着色问题

1.问题给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,如果要求G的每条边的两个顶点着不同颜色,给出所有可能的着色方案;如果不存在,则回答“NO”。2.解析设G有n个顶点,将顶点编号为1,2,……,n,则搜索空间为深度n的m叉完全树,将颜色编号为1,2,……,m,结点<x1,x2,…,xk>(x1,x2,…xk∈{1,…,m},1≤k≤n)表示顶点1的颜色x1,顶点2的颜色x2,…,顶点k的颜色xk。3.设计4.分析搜索树有:1+m+m2+…+m

2021-05-31 18:11:52 734

原创 算法分析与设计作业十一——最优二元前缀码

1.问题二元前缀码:任何字符的代码不能作为其他字符代码的前缀。利用二元前级码译码:从第一个字符开始一次读入每个字符(0或1),如果发现读到的子串与某个码字相等,就将这个子串译作对应的码字;然后从下一个字符开始继续这个过程,直到读完输入的字符串为止。二元前缀编码存储:二叉树结构,每个字符作为树叶,对应这个字符的前缀码看作根到这片树叶的一条路径,每个结点通向左儿子的边记作0,通向右儿子的边记作 1。字符集合C={X1,X2,…,Xn}Xi的频率是f(Xi)d(Xi)表示字符Xi二进制位数,也就是X

2021-05-24 16:30:39 2585

原创 算法分析与设计作业十——装载问题(0-1背包问题)

1.问题2.解析思路:轻者先装,直到再装任何集装箱将使轮船载重量超过C时停止。定理:对于任何正整数k,算法(轻者先装)对k个集装箱的实例得到最优解。证明:(数学归纳法)(1)k=1,只有1个集装箱,其重量小于C。任何装法都只有一种方式,因此都是最优解,因此轻者先装也是最优解。(2)归纳假设:假设算法对于规模为k的输入都能得到最优解。考虑规模为k+1的输入,N={1,2,…,k+1},W={w1,w2,…,wk+1}是集装箱重量,w1≤w2≤…≤wk+1。从N中拿掉最轻的集装箱,得到k规模的

2021-05-17 16:14:45 475 1

原创 算法分析与设计作业九——LCS算法和背包算法

1.问题(1):LCS算法:(2)背包算法:非形式化描述:一个旅行者准备随身携带一个背包。可以放入背包的物品有n种,物品j的重量和价值分别为Wj,Vj,j=1,2…n如果背包的最大重量限制是b,怎么选择放入背包物品以使得背包的价值最大。组合优化问题:其中xj,表示放入背包的第j种物品的数量组合优化问题的目标函数和约束条件都是线性函数,称为线性规划问题。2.解析(1):LCS算法:(2):背包算法:3.设计(1):LCS算法:(2):背包算法:4.分析(1):

2021-05-11 23:24:11 191

原创 算法分析与设计作业八——矩阵链乘法

1.问题2.解析3.设计递归算法:迭代算法:4.分析5.源码

2021-04-26 18:29:35 122

原创 算法分析与设计作业七——投资问题

1.问题2.解析3.设计4.分析5.源码https://github.com/Hyacincy/-/blob/main/%E6%8A%95%E8%B5%84%E9%97%AE%E9%A2%98.cpp

2021-04-25 17:39:25 148

原创 算法分析与设计作业六——选择问题

1.问题选择问题(Selection Problem),即在n个元素的集合中寻找第K小的元素的问题。2.解析3.设计将S划分成5个一组,共n/5(上取整)个组每组中找一个中位数,把这些中位数放到集合M中m* <- Select(M,|M|/2) //选M中的中位数m*,将S中的数组划分成A,B,C,D四个集合把A和D中的每个元素与m*比较,小的构成S1,大的构成S2S1 <- S1并C ; S2 <- S2并Bif k=|S1|+1 t

2021-04-19 16:20:39 710

原创 算法分析与设计作业五——最近对问题

1.问题用分治法解决最近对问题。2.解析在利用分治法思想解决此问题时,首先考虑将最近对问题进行分治,设计其分治策略。将集合S分成两个子集S1和S2,根据平衡子问题原则,每个子集中的点数大致都为n/2。这样分治后,最近点对将会出现三种情况:在S1中,在S2中或者最近点对分别在集合S1和S2中。利用递归分析法分别计算前两种情况,第三种方法另外分析。求解出三类子情况后,再合并三类情况,比较分析后输出三者中最小的距离。分解:1、对所有的点按照x坐标(或者y)从小到大排序(排序方法时间复杂度 O(nlogn

2021-04-12 18:14:25 182

原创 算法分析与设计作业四——二分归并排序

1.问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。2.解析采用分治法的思想,对待排序数组先分组再排序。3.设计Mergesort(A[0...n-1])if n >1 copy A[0..⌊n/2 ⌋-1] to B[0..⌊n/2 ⌋-1] copy A[ ⌊n/2 ⌋..n-1] to C[0.. ⌈n/2 ⌉-1] Mergesort(B[0..⌊n/2 ⌋-1]) Mergesort(C[0..⌈n/2 ⌉-1]) Merge(B,C,A

2021-03-29 16:48:30 112

原创 算法分析与设计作业三——检索算法

1.问题写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。按实验模板编写,“分析”部分仅给出复杂度结果即可。2.解析(1)顺序查找:从顺序表的一端开始,依次将每个元素的关键字同给定值 K 进行比较,直到相等或比较完毕还未找到即结束。(2)折半查找:查找过程是首先取整个有序表 A[0] ~ A[n - 1] 的中点元素 A[mid] (mid = (0 + n -1) / 2) 的关键字同给定值 K 比较,相等则成功,若 K较小

2021-03-22 16:06:36 215

原创 算法分析与设计作业二——使用Floyd算法求解最短距离,使用Dijkstra算法求解最短路径

1.问题(1)用Floyd算法求解下图各个顶点的最短距离。写出Floyd算法的伪代码和给出距离矩阵(顶点之间的最短距离矩阵)。(2)对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。2.解析(1)从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短,如果是就更新它。把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i][j]=d,d表示

2021-03-16 15:25:55 680

原创 算法分析与设计作业一——采用Prim算法和Kruskal算法构造最小生成树

1、问题(1)举一个实例,画出采用Prim算法构造最小生成树的过程。(2)举一个实例,画出采用Kruskal算法构造最小生成树的过程2.解析(1)Prim算法:V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U)的边中选取权值最小的边(u, v),将顶点v加入集合U中,将边(u, v)加入集合T中,如此不断重复,直到U=V为止,最小生成树构造完毕,这时集合T中包含了最小生成树中的所有边。(2)Krus

2021-03-14 00:23:57 505 1

空空如也

空空如也

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

TA关注的人

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