问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

急:两个2个算法题

发布网友 发布时间:2022-05-01 04:20

我来回答

2个回答

热心网友 时间:2022-06-24 09:04

http://cache.baidu.com/c?word=%B7%D6%D6%CE%3B%B2%DF%C2%D4&url=http%3A//www%2E91tech%2Ecn/BBS/printpage%2Easp%3FBoardID%3D17%26ID%3D3582&b=0&a=91&user=

http://cache.baidu.com/c?word=strassen&url=http%3A//www%2Eprogramfan%2Ecom/club/showbbs%2Easp%3Fid%3D78010&b=0&a=112&user=

热心网友 时间:2022-06-24 09:04

设计一个有效的算法,可以进行两个n位大整数的乘法运算
小学的方法:O(n2) 效率太低
分治法:
X=a2n/2+b
Y=c2n/2+d
XY=ac2n+(ad+bc)2n/2+bd
复杂度分析

T(n)=O(n2) 没有改进
为了降低时间复杂度,必须减少乘法的次数。为此,我们把XY写成另外的形式:
XY = ac 2n + ((a-c)(b-d)+ac+bd) 2n/2 + bd 或
XY = ac 2n + ((a+c)(b+d)-ac-bd) 2n/2 + bd
复杂性:
这两个算式看起来更复杂一些,但它们仅需要3次n/2位乘法[ac、bd和(a±c)(b±d)],于是

T(n)=O(nlog3) =O(n1.59) 较大的改进
细节问题:两个XY的复杂度都是O(nlog3),但考虑到a+c,b+d可能得到m+1位的结果,使问题的规模变大,故不选择第2种方案。

用STRASSEN方法求矩阵乘积:
例2-3 [矩阵乘法] 两个n×n 阶的矩阵A与B的乘积是另一个n×n 阶矩阵C,C可表示为假如每一个C(i, j) 都用此公式计算,则计算C所需要的操作次数为n3 m+n2 (n- 1) a,其中m表示一次乘法,a 表示一次加法或减法。

为了得到两个矩阵相乘的分而治之算法,需要: 1) 定义一个小问题,并指明小问题是如何进行乘法运算的; 2) 确定如何把一个大的问题划分成较小的问题,并指明如何对这些较小的问题进行乘法运算; 3) 最后指出如何根据小问题的结果得到大问题的结果。为了使讨论简便,假设n 是2的幂(也就是说, n是1,2,4,8,1 6,.)。

首先,假设n= 1时是一个小问题,n> 1时为一个大问题。后面将根据需要随时修改这个假设。对于1×1阶的小矩阵,可以通过将两矩阵中的两个元素直接相乘而得到结果。

考察一个n> 1的大问题。可以将这样的矩阵分成4个n/ 2×n/ 2阶的矩阵A1,A2,A3,和A4。当n 大于1且n 是2的幂时,n/ 2也是2的幂。因此较小矩阵也满足前面对矩阵大小的假设。矩阵Bi 和Ci 的定义与此类似.

根据上述公式,经过8次n/ 2×n/ 2阶矩阵乘法和4次n/ 2×n/ 2阶矩阵的加法,就可以计算出A与B的乘积。因此,这些公式能帮助我们实现分而治之算法。在算法的第二步,将递归使用分而治之算法把8个小矩阵再细分(见程序2 - 1 9)。算法的复杂性为(n3 ),此复杂性与程序2 - 2 4直接使用公式(2 - 1)所得到的复杂性是一样的。事实上,由于矩阵分割和再组合所花费的额外开销,使用分而治之算法得出结果的时间将比用程序2 - 2 4还要长。

为了得到更快的算法,需要简化矩阵分割和再组合这两个步骤。一种方案是使用S t r a s s e n方法得到7个小矩阵。这7个小矩阵为矩阵D, E, ., J,矩阵D到J可以通过7次矩阵乘法, 6次矩阵加法,和4次矩阵减法计算得出。前述的4个小矩阵可以由矩阵D到J通过6次矩阵加法和两次矩阵减法得出.

用上述方案来解决n= 2的矩阵乘法。将某矩阵A和B相乘得结果C,如下所示:

因为n> 1,所以将A、B两矩阵分别划分为4个小矩阵,每个矩阵为1×1阶,仅包含一个元素。1×1阶矩阵的乘法为小问题,因此可以直接进行运算。利用计算D~J的公式,得:

D= 1(6-8)=-2

E= 4(7-5)= 8

F=(3 + 4)5 = 3 5

G=(1 + 2)8 = 2 4

H=(3-1)(5 + 6)= 2 2

I=(2-4)(7 + 8)=-3 0

J=(1 + 4)(5 + 8)= 6 5

根据以上结果可得:

对于上面这个2×2的例子,使用分而治之算法需要7次乘法和1 8次加/减法运算。而直接使用公式(2 - 1),则需要8次乘法和7次加/减法。要想使分而治之算法更快一些,则一次乘法所花费的时间必须比11次加/减法的时间要长。

假定S t r a s s e n矩阵分割方案仅用于n≥8的矩阵乘法,而对于n<8的矩阵乘法则直接利用公式(2 - 1)进行计算。则n= 8时,8×8矩阵相乘需要7次4×4矩阵乘法和1 8次4×4矩阵加/减法。每次矩阵乘法需花费6 4m+ 4 8a次操作,每次矩阵加法或减法需花费1 6a次操作。因此总的操作次数为7 ( 6 4m+ 4 8a) + 1 8 ( 1 6a) = 4 4 8m+ 6 2 4a。而使用直接计算方法,则需要5 1 2m+ 4 4 8a次操作。要使S t r a s s e n方法比直接计算方法快,至少要求5 1 2-4 4 8次乘法的开销比6 2 4-4 4 8次加/减法的开销大。或者说一次乘法的开销应该大于近似2 . 7 5次加/减法的开销。

假定n<1 6的矩阵是一个“小”问题,S t r a s s e n的分解方案仅仅用于n≥1 6的情况,对于n<1 6的矩阵相乘,直接利用公式( 2 - 1)。则当n= 1 6时使用分而治之算法需要7 ( 5 1 2m+ 4 4 8a) +1 8 ( 6 4a) = 3 5 8 4m+ 4 2 8 8a次操作。直接计算时需要4 0 9 6m+ 3 8 4 0a次操作。若一次乘法的开销与一次加/减法的开销相同,则S t r a s s e n方法需要7 8 7 2次操作及用于问题分解的额外时间,而直接计算方法则需要7 9 3 6次操作加上程序中执行f o r循环以及其他语句所花费的时间。即使直接计算方法所需要的操作次数比St r a s s e n方法少,但由于直接计算方法需要更多的额外开销,因此它也不见得会比S t r a s s e n方法快。

n 的值越大,Strassen 方法与直接计算方法所用的操作次数的差异就越大,因此对于足够大的n,Strassen 方法将更快。设t (n) 表示使用Strassen 分而治之方法所需的时间。因为大的矩阵会被递归地分割成小矩阵直到每个矩阵的大小小于或等于k(k至少为8,也许更大,具体值由计算机的性能决定). 用迭代方法计算,可得t(n) = (nl og27 )。因为l og27 ≈2 . 8 1,所以与直接计算方法的复杂性(n3 )相比,分而治之矩阵乘法算法有较大的改进。
数学智商测试题?一筐鸡蛋,一个一个拿,正好拿完, 2个2个拿,还剩一...

这不是智力题,是计算题,有算法的。2个2个拿、4个4个拿、8个8个拿都剩一个,这个数是奇数。令这个数是8m+1。这个数+1,能被5整除,这个数又是奇数,因此这个数的个位数字是9。1个1个拿、3个3个拿、7个7个拿、9个9个拿都正好拿完,这个数是7和9的公倍数。7和9的最小公倍数是63...

任意两个两位数相乘的简便算法

第一步:将两个两位数的个位相乘。如上述的3X2=6;8X6=48。将得出积的个位数作为两个两位数乘积的个位;将得出积的十位数向前进位,若积是个位数,则向前进位0。所以:a1的个位是6;a2的个位是8;其中要心里记住a2向前进了数字4。第二步: 将两个两位数的十位数字分别与两个两位数的个位数字...

求一个数列算法:1,2,7,8,13,14,19,20,24,29,30,35,36,41,42,47,51,5...

1、2、7不看 8=2+7-1 13=7+8-2 14=8+13-7 19=13+14-8 以此类推,看出来了吗?就是从8开始,所有的数值都是前两个数值之和减去再前面那个数值的差

算法题,求解加详细步骤?

这不是什么算法,主要是找规律。第一行是基本,没有白圈代表 1;然后你把每行都从右开始数,数到白圈结束,每个白圈数一次;第二行,一个白圈,从右数第一个位置,所以是 1 + 1 = 2(加的 1 表示相对于第一行);第三行,一个白圈,从右数第二个位置,所以是 2 + 1 = 3;第四行...

急解一个数据结构的题(C语言)

题目如下:两个一元多项式相乘的算法M(x)=A(x)*B(x)=A(x)*[b1X^e1+b2X^e2+...+bnX^en]也就是A(x)和B(x)都个是一个一元多项式。例如:M(x)=A(x)*B(x)=(2x^2+3x^3+4x^4)*(5x^2+6x^3+7... 题目如下: 两个一元多项式相乘的算法 M(x)=A(x)*B(x) =A(x)*[b1X^e1+b2X^...

一桶水,2个小和尚抬,3个小和尚抬几次就抬满了?

=400(米)本题考查路程问题,以及混合运算的掌握。已知一桶水需要2个小和尚抬,所以三个小和尚实际走过的路程和为600x2=1200(米),用路程和除以总人数就可以求出一个小和尚需要走多少米,可列式:600x2÷3=400(米)。四则混合运算顺序:1、同级运算时,从左到右依次计算;2、两级运算时,...

设两个算法在同一台机器上执行,其执行时间分别是n^2和2^n,要是前者...

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可...

数学排列组合的算法、如图两个、有什么区别、求算法谢谢

具体算法如下:全排列算法:1. 将数组中的第数依次与后面的数交换,形成新的排列。2. 每次交换后,递归到下一位,直到最后一位交换完毕。3. 输出排列。组合算法:1. 从数组的第数开始往后取,取到指定数量的数时输出。2. 如果未取到指定数量的数,则从当前位置的下数开始递归取数,以此类推。3...

求助NSGA2算法问题

算法首先从非支配集开始,逐个选取,直到达到所需的个体数量。如果最后一个非支配集中仍有剩余,会选择crowd distance较大的个体,以保证多样性在选择中的重要性。总的来说,NSGA-II通过非支配集划分和crowd distance排序,实现了多目标优化问题中的有效选择,确保了种群的多样性和优化效率的平衡。

算法作业!!求两个不等长有序数组的中位数!

1. 把 A 平均分为前后两个部分,前部分有 x 个元素,后部分有 n1-x 个元素(由于 A 是有序的,所以后一部分的所有元素大于前一部分)。A[x] = A的后一部分的第一个元素。2. 同理把 B 也平均分成前后两个部分,前部分有 y 个元素,后部分有 n2-y 个元素。B[y] = B的后一部分的...

算法的两个主要方面 算法的两个要素 算法的两个基本要素是什么 算法的两个重要指标 算法包含的两个要素 算法题 简便算法数学题 五年级上册简便算法题 简便方法计算题100道
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
用在饮水机上的大桶矿泉水怎么用手打开啊 不想用饮水机 计算下面个题能简算的要先简算八分之五乘以5%加八分之三乘四分之一要... 九分之五乘以十三分之十二除以十三分之四能简算的要简 电脑用IE浏览器过一段时间就会出现这个 点击关闭程序就会让所以开着的... win10 ie浏览器打不开怎么办? 春季汽车保养的主要部位 一季三防是什么 ...分别是哪三防?保养为省钱,需注意哪四个关键点? 宣威有些什么中学 ...电压下降到12.5v了,不确定的电阻我用的是200欧的 用分治算法实现2^n*2^n的矩阵乘法 写出计算方阵A[n][n]与B[n][n]乘积C[n][n]的算法,分析算法的时间复杂度. 为什么用Strassen 矩阵算法相乘两个非负矩阵会得到负数元素 在线等:Strassen矩阵乘法的C++算法中,数组的申请与溢出 Strassen 矩阵算法 Java 实现 用Strassen算法做矩阵乘法, 若n*n矩阵中的n不是2的幂(例如3*3矩阵),如何用strassen算法表示? strassen矩阵乘法采用什么算法 怎样修改矩阵乘法的strassen算法,它也可以用于大小不必为2的幂的矩阵 我爱上了一个动漫人物 咋搞? 法律篡改的性质是()A法律清理B国家立法活动cC法律解释D法律汇编 在规范性法律文件系统化的方法中,不具有立法性质的方法是( ) A法律清理 B法律汇编 C法律编纂 D法典编纂 法律编篆为什么是法律系统化的基本方式 长270米宽270米高90米等于多少吨? 历史上有哪些重大的规范性法律文件系统化与规范化的活动? 试述规范性法律文件系统化的概念和方法。 规范性法律文件有哪些 规范性法律文化的系统化有何意义 什么是系统化 规范性文件系统化的形式中,法律讲解属不属于立法活动? 论规范性法律文件的系统化? 线程数为多少时并行算法实现矩阵乘法的时间最少? 矩阵的乘法,如果两个矩阵的行列太多,计算乘积结果会很麻烦,有没有简便的方法?或者有关矩阵乘法的定理 线性代数中矩阵的乘法代表什么意义? 什么是罗德里戈矩阵 求多个矩阵联乘的最优算法! 矩阵太大没法相乘怎么办 如何写出比 MATLAB 更快的矩阵运算程序 酒店常用英语 请问谁知道酒店房间种类的这些简称分别代表这么意思啊? SK ST DK DT JS. 求酒店的一些英文缩写名词及翻译? 酒店的术语!! 奔腾1155针cpu哪个性能好 请教:酒店术语、英文缩写 数据库开发都需要学什么、什么东西,都需要掌握到什么地步 什么四核CPU性价比高,1155针的 养老保险可不可以累计 社保养老保险是累计还是持续 买了一袋小卖粉适用馒头是不是不用加发酵粉了? 养老保险15年是累计还是连续 猜谜语三个字的拼音 猜谜语(拼音)