自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最小操作数(动态规划)

1.问题 给定一个源串和目标串,能够对源串进行以下操作:在任意位置上插入一个字符;替换任意字符;删除任意字符。 现要求写一个程序,实现返回最小操作次数,使得对源串进行上述这些操作后等于目标串(源串和目标串的长度都小于2000)。 该问题为字符串的编辑距离问题,解法与最长公共子序列(LSC)类似,故采用动态规划解决该问题。 2.解析 现假设 dis[i][j] 表示源串 s[0,1,…,s_len] 和目标串 t[0,1,…,t_len] 的最短编辑距离,其边界为 dis[0][j] = j 与 dis[i]

2021-06-06 16:34:18 1886 1

原创 m着色问题

1.问题 给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。 2.解析 算法初步分析: 算法实现步骤: 1)利用邻接矩阵存储给定的图,以完全m叉树表示该图,并依次赋予顶点颜色; 2)判断节点k当前的着色是否符合条件,即需要判断x[k]与k节点的其他相邻节点h的x[h]着色是否符合相等; 3)若此时的节点值大于节点总数且相邻节点的颜色各不相同,则表示着色已经完成,并且找到了一种可行解,此时,着色

2021-06-01 18:19:16 414

原创 最优前缀码

1.背景 代码(码字):Q{001,00,010,01}表示字符a,b,c,d 同一序列:0100001 产生两种译码(产生歧义):01 00 001;010 00 01。 二元前缀码:任何字符的代码不能作为其他字符字符代码的前缀 利用二元前缀码译码:从第一个字符开始依次读入每个字符(0或1),如果发现读到的子串与某个码字相等,就将这个子串译作对应的码字;然后从下一个字符开始继续这个过程,知道读完输入的字符串为止。 二元前缀编码存储:二叉树结构,每个字符作为树叶,对应这个字符的前缀码看作根到这篇树叶的

2021-05-25 15:00:04 2775

原创 装载问题(0-1背包问题)

1.问题 装载问题(0-1背包问题) 2.解析 装载问题(0-1背包问题)算法解析 思路:轻者先装,直到再装任何集装箱将使轮船载重量超过B时停止。 定理:对于任何正整数n,算法(轻者先装)对n个集装箱的实例得到最优解。 证明(数学归纳法): (1)k=1,只有1个集装箱,其重量小于B。任何装法都只有一种方式,因此都是最优解。故轻者先装也是最优解。 (2)归纳假设:假设算法对于规模为n的输入都能得到最优解。 考虑规模为n + 1的输入, 是集装箱重量,其中 现在从N中取出最轻的集装箱,得到n规模的输入:

2021-05-18 15:49:53 1443

原创 最长公共子序列算法和背包问题

1.问题 1.1最长公共子序列问题 1.2 背包问题 2.解析 2.1 最长公共子序列算法解析 2.2 背包算法解析 2.3 最长公共子序列算法举例 2.4 背包算法举例 根据ik(y)表推算: i5(13)=5 => x5≥1:总重13时,用到的最大标号物品为5,即5号物品至少占用1个;然后排除一个5号物品,再看其他物品; i5(13-5)=i5(8)=5 => x4≥1 => x5=1:总重为8时,剩余物品的最大标号是4,且不会再装入其他5号物品;即4号物品

2021-05-13 19:26:43 312

原创 矩阵链乘法

1.问题 矩阵链乘法问题: 设A1,A2,…An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1…Pn>给出。给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小。 例如,P=<10,100,5,50>,则A1:10×100,A2:100×5,A3:5×50,有两种结合次序, 1)(A1A2)A3:10×100×5+10×5×50=7500 2)A1(A2A3):10×100×50+100×5×50=75000 显然第二种优于第一种。 2

2021-04-27 14:04:27 4082 3

原创 投资问题

1.问题 投资问题(一般性描述): 设m万元钱,n项投资,函数fi(x)表示将x万元投入第i项项目所产生的效益,i = 1,2,…,n. 问:如何分配这m万元钱,使得投资的总效益最高? 组合优化问题: 假设分配给第i个项目的钱数是xi,问题描述为: 2.解析 投资问题的实现思路: 设Fk(x)表示x万元投给前k个项目的最大效益,k = 1,2,…,n,x = 1,2,…,m 说明:第k步,前后共分配x万元,其中分配给第k个项目为xk;x - xk万元分配给前k-1个项目。 投资问题的实现步骤(基于表1)

2021-04-26 10:49:45 1536

原创 选第k小元素:特定分治策略

1.问题 采用特定分治策略选第k小元素: 设S是n个元素的集合,从S中选取第k小的元素。其中,1≤k≤n。 这里第k小的元素是指,当集合S按升序排好序后,排在第k个位置的元素。 2.解析 采用特定分治策略选第k小元素的实现思路: ①k = |S1|+1,m即为所要找的第k小元素(原因:以m为划分标准后,比m小的有|S1|个,若此时恰巧k=|S1|+1,则m即为所要找的第k小元素); ②k ≤ |S1|,归约为在S1中找第k1小的子问题,k1在子问题中相对位置不变,即k1 = k; ③k > |S1|+1,

2021-04-19 18:05:07 877

原创 最近对问题

1.问题 P为笛卡尔平面上n>1个点构成的集合,求最近的两个点的距离(n=2k)。简单起见,假设集合中的每个点都不一样。 2.解析 最近对问题的原理: 假设在n个点中,距离最近的两个点,在二维坐标平面中,两点的坐标分别a(x1,y1),b(x2,y2),则两点距离是dist=sqrt((x1-x2)2 + (y1-y2)2)。 蛮力算法:将平面内的n个点,进行两两组合,计算出距离,并通过比较得出最小距离,一般当n≤3时,采用该方法进行计算。 分治算法:将集合S分成两个大小基本相等的子集S1和S2;递

2021-04-12 16:38:02 850

原创 二分归并排序算法

1. 问题 对于n个不同的数构成的数组A[1…n]进行排序,其中n = 2k。 2. 解析 二分归并排序算法原理(假设数组A中共有n个元素): 将数组A中n个元素看成n个独立的子序列,因此每个子序列的长度为1,然后两两合并,得到[n/2]个长度为2或1(注意如果n为奇数时,就会出现多出一个元素无法与其他元素合并)的有序子序列;再两两合并,一种重复下去,直到得到一个长度为n的有序数组为止。 二分归并排序算法实现步骤(分而治之): 1、将待排序数组从中间一分为二,对左右两边在进行递归分割操作,得到若干个相互独立

2021-03-29 17:20:31 8028 2

原创 检索算法——顺序查找与二分查找

1.问题 在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0。 2.解析 顺序查找算法原理: 对于任意一个序列T以及一个给定的元素x,将给定元素x与序列T中元素依次比较,直到找出与给定关键字x相同的元素,或者将序列T中的元素与其都比较完为止。 顺序查找算法实现步骤: 1、从T[0]开始比较; 2、若与给定的元素x相同,则查找结束;反之,则与序列T的下一个元素进行比较; 3、重复步骤二,直至找到与给定关键字x相同的元素,返回该元素的下标;若序列T中的元素全部完

2021-03-22 17:22:45 1903

原创 Floyd算法和Dijkstra算法计算顶点间的最短距离

1.问题 最短路径:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径。 Floyd算法计算顶点间的最短距离 采用Floyd算法,给定一个有向图G=<V,E>的权值矩阵,假设每条边E[i]的长度为weight[i],求对于任意顶点Vi、Vj (i!=j),求Vi到Vj的最短路径,并以距离矩阵(顶点之间的最短距离矩阵)表示。 Dijkstra算法计算顶点间的最短距离 采用Dijkstra算法,给定一个有向图G=<V,E>,假设每条边E[i]的长度为weight[i]

2021-03-16 21:36:49 1149

原创 Prim算法与Kruskal算法构造最小生成树

** Prim算法与Kruskal算法构造最小生成树 ** 1.问题 分别采用Prim算法与Kruskal算法构造最小生成树,即对于给定无向图G=<V,E>(V表示顶点,E表示边),Edge(x,y)表示连接顶点x与顶点y的边,Weight(x,y)表示Edge(x,y)这条边的权重,要求寻找出G的子集M使得M包含V个顶点,不存在闭合的环且所包含的边的权重之和最小。 2.解析 Prim算法实现步骤: ①输入一个加权连通图,其中顶点集合为V,边集合为E; ②设集合V中的任一顶点x为起始点,则Vne

2021-03-11 13:51:53 3484 1

空空如也

空空如也

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

TA关注的人

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