矩阵乘法经典题目
三行三列矩阵乘三行一列例题
三行三列矩阵乘三行一列例题矩阵乘法是线性代数中的重要概念,它在计算机科学、物理学、工程学等多个领域中都有广泛的应用。
本文将以一个例题来说明如何进行三行三列矩阵乘以三行一列矩阵的运算。
假设我们有两个矩阵A和B,矩阵A是一个三行三列的矩阵,矩阵B是一个三行一列的矩阵。
我们的任务是计算这两个矩阵的乘积。
首先,让我们来定义矩阵A和矩阵B。
假设矩阵A的元素如下:A = [a1,1 a1,2 a1,3][a2,1 a2,2 a2,3][a3,1 a3,2 a3,3]其中a1,1、a1,2、a1,3等分别表示矩阵A中对应元素的值。
同样地,我们也定义矩阵B的元素如下:B = [b1][b2][b3]现在我们需要计算矩阵A和矩阵B的乘积。
矩阵乘法的规则是,矩阵A的第一行与矩阵B的第一列进行对应元素相乘,并将结果相加得到乘积的第一个元素。
以此类推,我们可以得到一个三行一列的乘积矩阵C。
C = [c1][c2][c3]其中c1、c2、c3分别表示乘积矩阵C中对应元素的值。
具体计算步骤如下:c1 = a1,1 * b1 + a1,2 * b2 + a1,3 * b3c2 = a2,1 * b1 + a2,2 * b2 + a2,3 * b3c3 = a3,1 * b1 + a3,2 * b2 + a3,3 * b3根据上述计算步骤,我们可以将矩阵A和矩阵B的乘积计算出来。
这个例题中,我们有一个三行三列的矩阵A和一个三行一列的矩阵B,通过矩阵乘法的规则,我们可以得到一个三行一列的乘积矩阵C。
每个元素c1、c2、c3分别表示乘积矩阵C中对应元素的值。
2x3矩阵乘3x2矩阵例题
2x3矩阵乘3x2矩阵例题本文将介绍2x3矩阵乘3x2矩阵的例题,并详细解释矩阵乘法的原理和计算方法。
一、矩阵乘法的定义矩阵乘法是指将两个矩阵相乘得到一个新的矩阵的运算。
在进行矩阵乘法时,需要满足两个矩阵的列数和行数相等,否则无法进行乘法运算。
具体来说,设A为m行n列的矩阵,B为n行p列的矩阵,则它们的乘积C为一个m行p列的矩阵,其中C的第i行第j列元素为A的第i行与B的第j列对应元素的乘积之和。
二、2x3矩阵乘3x2矩阵的例题现在我们来看一个实际的例题。
假设有两个矩阵A和B,分别为:A = [1 2 3][4 5 6]B = [7 8][9 10][11 12]要求计算A与B的乘积C,即C = A * B。
根据矩阵乘法的定义,我们可以得到C的大小为2x2,即C = [c11 c12; c21 c22]。
接下来,我们按照矩阵乘法的计算方法,逐一计算出C的每一个元素。
首先计算c11,根据定义有:c11 = a11 * b11 + a12 * b21 + a13 * b31将A和B的对应元素代入上式,得到:c11 = 1 * 7 + 2 * 9 + 3 * 11 = 58同理,我们可以计算出C的其他元素:c12 = a11 * b12 + a12 * b22 + a13 * b32= 1 * 8 + 2 * 10 + 3 * 12= 64c21 = a21 * b11 + a22 * b21 + a23 * b31= 4 * 7 + 5 * 9 + 6 * 11= 139c22 = a21 * b12 + a22 * b22 + a23 * b32= 4 * 8 + 5 * 10 + 6 * 12= 154因此,我们得到了矩阵A与B的乘积C为:C = [58 64][139 154]三、矩阵乘法的性质除了以上的计算方法,矩阵乘法还具有一些重要的性质,包括结合律、分配律和乘法单位元等。
1. 结合律矩阵乘法具有结合律,即对于任意的矩阵A、B和C,都有:(A * B) * C = A * (B * C)2. 分配律矩阵乘法具有分配律,即对于任意的矩阵A、B和C,都有:A * (B + C) = A * B + A * C(B + C) * A = B * A + C * A3. 乘法单位元对于任意的m行n列矩阵A,都存在一个n行n列的单位矩阵I,使得:A * I = I * A = A其中,单位矩阵I的定义为对角线上的元素均为1,其余元素均为0的n行n列矩阵。
三行三列矩阵乘三行一列例题
三行三列矩阵乘三行一列例题
【原创实用版】
目录
1.矩阵乘法的基本概念
2.三行三列矩阵乘三行一列矩阵的例子
3.矩阵乘法的意义和应用
正文
矩阵乘法是线性代数中的一种基本运算,它可以用来解决线性方程组等问题。
矩阵乘法的基本概念是,给定两个矩阵 A 和 B,它们的乘积是
一个矩阵 C,其中 C 的元素是由 A 和 B 的对应元素相乘并相加得到的。
矩阵乘法有两种形式,一种是行乘列,另一种是列乘行。
例如,假设我们有一个三行三列的矩阵 A 和一个三行一列的矩阵 B,我们可以用矩阵乘法求出它们的乘积。
首先,我们按照行乘列的方式,将矩阵 B 的每一行与矩阵 A 的每一列对应元素相乘,并将结果相加,得到一个新的矩阵 C。
然后,我们将矩阵 C 中的元素按照列的方式排列,得
到一个新的矩阵。
这个新的矩阵就是一个三行一列的矩阵,它表示了矩阵
A 和矩阵
B 的乘积。
矩阵乘法的意义在于,它可以用来解决线性方程组等问题。
例如,假设我们有一个线性方程组,我们可以通过矩阵乘法求出方程组的解。
第1页共1页。
矩阵的乘法运算例题带过程
矩阵的乘法运算例题带过程
矩阵乘法是矩阵计算中最基本的操作之一,它允许你将一个矩阵乘以另一个矩阵,并返回一个新的矩阵。
下面是一些矩阵乘法的例题及其过程:
1. 矩阵乘法示例1:将两个2x2的矩阵A和B乘以它们的元素,并返回C的值。
C = A * B
过程:
首先,将A的2x2矩阵的对角线元素与B矩阵的第一行第一列元素相乘,将B的2x2矩阵的对角线元素与A的对角线元素相乘,以此类推。
这将得到一个3x3的新矩阵C,其中c[i][j]表示A矩阵中i行j列的元素。
例如,假设矩阵A和B如下:
A = [1 2; 3 4]
B = [2 4; 1 3]
那么,C = [1 * 2; 3 * 4]
= [1; 7]
= [1; 1; 7]
[2 * 4; 1 * 3]
= [6; 1]
= [6; 1; 6]
2. 矩阵乘法示例2:将两个3x3的矩阵A和B乘以它们的元素,并返回C的值。
C = A * B
过程:
首先,将A的3x3矩阵的对角线元素与B矩阵的第一行第一列元素相乘,将B的3x3矩阵的对角线元素与A矩阵的对角线元素相乘,以此类推。
这将得到一个4x4的新矩阵C,其中c[i][j][k]表示A矩阵中i行j列k个元素与B矩阵中相应元素乘积的值。
例如,假设矩阵A和B如下:
A = [1 2 3]
B = [2 4 5]
那么,C = [1 * 2 * 3; 2 * 4 * 5]
= [1; 12]
= [1; 16]
[1 * 2 * 3; 2 * 4 * 5]
= [2; 5]
= [6; 10]
3. 矩阵乘法示例。
三行三列矩阵乘三行一列例题
三行三列矩阵乘三行一列例题
摘要:
1.矩阵乘法的基本概念
2.三行三列矩阵乘三行一列矩阵的例子
3.矩阵乘法的计算方法
4.矩阵乘法的应用领域
正文:
矩阵乘法是线性代数中的一种基本运算,它对于理解和解决许多实际问题具有重要意义。
矩阵乘法的基本概念是,给定两个矩阵A 和B,它们的乘积C 是一个新的矩阵,其中C 的元素是由A 和B 的对应元素相乘后相加得到的。
例如,假设我们有一个三行三列的矩阵A 和一个三行一列的矩阵B,我们可以通过矩阵乘法来计算它们的乘积。
具体来说,我们可以按照以下步骤进行计算:
1.将矩阵A 的每一行与矩阵B 的每一列对应元素相乘,然后将结果相加,得到矩阵C 的一行。
2.重复上述步骤,直到计算出矩阵C 的所有行。
矩阵乘法的计算方法依赖于矩阵的行和列的数量。
对于三行三列的矩阵A 和三行一列的矩阵B,它们的乘积是一个三行三列的矩阵。
矩阵乘法的应用领域非常广泛,包括线性方程组、特征值和特征向量、矩阵分解等。
在实际问题中,矩阵乘法常常用于解决线性方程组。
例如,给定一个三行
三列的矩阵A 和一个三行一列的矩阵B,我们可以通过计算矩阵乘积AB 来求解方程组AX=B。
此外,矩阵乘法还用于计算矩阵的特征值和特征向量,这对于理解矩阵的性质和结构非常重要。
总之,矩阵乘法是线性代数中的一种基本运算,它对于理解和解决许多实际问题具有重要意义。
矩阵乘法练习题
矩阵乘法练习题一、选择题:1. 矩阵A与矩阵B相乘,结果矩阵的行列数应为:A. A的行数与B的列数B. A的列数与B的行数C. A的行数与B的行数D. A的列数与B的列数2. 矩阵乘法中,如果矩阵A的行数与矩阵B的列数不相等,则:A. 可以进行矩阵乘法B. 可以进行矩阵乘法,但结果矩阵的行数和列数不确定C. 不能进行矩阵乘法D. 可以进行矩阵乘法,但结果矩阵的行数等于矩阵A的行数3. 矩阵A和矩阵B相乘,如果矩阵A是一个m×n矩阵,矩阵B是一个n×p矩阵,则结果矩阵的维度是:A. m×pB. n×pC. m×nD. p×n二、填空题:1. 设矩阵A是一个2×3矩阵,矩阵B是一个3×4矩阵,则矩阵AB 的维度是______。
2. 如果矩阵C是一个4×2矩阵,矩阵D是一个2×3矩阵,那么矩阵CD的维度是______。
3. 矩阵乘法不满足交换律,即AB______BA(填入“等于”或“不等于”)。
三、计算题:1. 计算以下矩阵乘法,如果结果存在,请给出结果矩阵:A = [1 2; 3 4]B = [5 6; 7 8]求AB。
2. 已知矩阵E和F如下,求EF:E = [1 0; -1 1]F = [2 3; 4 5]四、证明题:1. 证明如果矩阵A是一个m×n矩阵,矩阵B是一个n×p矩阵,那么AB的转置矩阵(AB)^T是一个p×m矩阵。
2. 证明矩阵乘法满足结合律,即对于任意矩阵A, B, C,有(AB)C =A(BC)。
五、应用题:1. 一个线性变换可以用矩阵乘法表示,如果这个变换的矩阵表示为:M = [1 2; 3 4]求这个线性变换将向量v = [1; 2]映射到的新向量。
2. 假设有一个3×3的单位矩阵I和矩阵J,其中J的元素都是1,即:I = [1 0 0; 0 1 0; 0 0 1]J = [1 1 1; 1 1 1; 1 1 1]求IJ和JI的乘积,并说明它们是否相等。
《1.3.2 矩阵乘法的运算律》习题1
《1.3.2 矩阵乘法的运算律》习题1一、选择题1、“两个矩阵的行数和列数相等”是“两个矩阵相等”的( )A 、充分不必要条件B 、必要不充分条件是C 、充要条件D 、既不充分又不必要条件2、用矩阵与向量的乘法的形式表示方程组⎩⎨⎧-=-=+1y 2x 2y 3x 2其中正确的是( )A 、⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-122132y xB 、⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-122312y x C 、⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-122132y x D 、⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-121223y x 3、若211403201453A B -⎛⎫⎛⎫ ⎪ ⎪== ⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭,,且23A X B -=,则矩阵X =___________.4、点A (1,2)在矩阵⎥⎦⎤⎢⎣⎡-1022对应的变换作用下得到的点的坐标是___________ 5、已知⎥⎦⎤⎢⎣⎡b a 2000是一个正三角形的三个顶点坐标所组成的矩阵,那么a+b= . 6、若点A )22,22(在矩阵⎥⎦⎤⎢⎣⎡-ααααcos sin sin cos 对应的变换作用下得到的点为(1,0),那么α= .7、若点A 在矩阵1222-⎡⎤⎢⎥-⎣⎦对应的变换作用下下得到的点为(2,4),那么点A 的坐标为 .8、已知⎥⎦⎤⎢⎣⎡--+-=1sin cos sin cos 1ββααA ,⎥⎦⎤⎢⎣⎡--=1221B 若A=B ,那么α+β= . 9、设A 为二阶矩阵,其元素满足,0a a ji ij =+i=1,2,j=1,2,且2a a 2112=-,那么矩阵 A= .10:46xAy⎛⎫= ⎪⎝⎭,13uBv⎛⎫= ⎪⎝⎭,且A B=,那么A+AB= 。
11、一个线性方程组满足,系数矩阵为单位矩阵,解为1行3列的矩阵(1,2,1)-,那么该线性方程组为。
12、计算:若矩阵1cos60sin602sin60cos6012A B⎛-︒-︒⎛⎫⎪==⎪⎪︒︒⎝⎭-⎪⎭,,则AB=___________.13、计算:342112546110221⎛⎫⎛⎫ ⎪⎪ ⎪-⎝⎭ ⎪⎝⎭= .14. 线性方程组603540x yx y--=⎧⎨++=⎩对应的系数矩阵是___________,增广矩阵是___________.15、已知矩阵2301(1,2)123A B C⎛⎫-⎛⎫⎪==-= ⎪⎪-⎝⎭⎪-⎝⎭,,,则()AB C=___________.二、简答题1. 已知1011A⎛⎫= ⎪⎝⎭,分别计算23A A、,猜测*(2)nA n n≥∈N,;2. 将下列线性方程组写成矩阵形式,并用矩阵变换的方法求解:⑴32110 250x yx y--=⎧⎨+-=⎩;⑵ 111612102113x y z ⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪-= ⎪⎪ ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭.3. 若202137x y -⎛⎫⎛⎫⎛⎫= ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭,则x y +=__________ 4、已知矩阵[])(x f A =,[]x x x B sin 2cos sin -=,⎥⎦⎤⎢⎣⎡=x x C sin cos ,若A=BC ,求函数)x (f 在]3,0[π上的最小值.。
矩阵相乘练习题
矩阵相乘练习题矩阵是线性代数中的重要工具,而矩阵相乘是线性代数中的基本运算之一。
矩阵相乘不仅在理论研究中有着广泛应用,还在实际问题的求解中发挥着重要作用。
为了巩固我们对矩阵相乘的理解,下面将给出一些矩阵相乘的练习题。
练习题 1:已知矩阵 A 如下:2 41 3矩阵 B 如下:5 67 8求矩阵 C = A * B。
解答:C 的元素 cij 可以通过矩阵 A 的第 i 行和矩阵 B 的第 j 列进行内积得到。
c11 = 2*5 + 4*7 = 10 + 28 = 38c12 = 2*6 + 4*8 = 12 + 32 = 44c21 = 1*5 + 3*7 = 5 + 21 = 26c22 = 1*6 + 3*8 = 6 + 24 = 30所以,矩阵 C 为:38 4426 30练习题 2:已知矩阵 A 如下:1 2 34 5 6矩阵 B 如下:7 89 1011 12求矩阵 C = A * B。
解答:C 的元素 cij 可以通过矩阵 A 的第 i 行和矩阵 B 的第 j 列进行内积得到。
c11 = 1*7 + 2*9 + 3*11 = 7 + 18 + 33 = 58c12 = 1*8 + 2*10 + 3*12 = 8 + 20 + 36 = 64c21 = 4*7 + 5*9 + 6*11 = 28 + 45 + 66 = 139c22 = 4*8 + 5*10 + 6*12 = 32 + 50 + 72 = 154所以,矩阵 C 为:58 64139 154练习题 3:已知矩阵 A 如下:1 2 3矩阵 B 如下:456求矩阵 C = A * B。
解答:C 的元素 cij 可以通过矩阵 A 的第 i 行和矩阵 B 的第 j 列进行内积得到。
c11 = 1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32所以,矩阵 C 为:32练习题 4:已知矩阵 A 如下:1 23 45 6矩阵 B 如下:1 2 34 5 6求矩阵 C = A * B。
矩阵相关练习题
矩阵相关练习题矩阵是线性代数中的重要概念,具有广泛的应用。
下面将给出几道矩阵相关的练习题,帮助读者更好地理解和应用矩阵的性质和运算。
1. 矩阵的基础运算给定矩阵A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],求矩阵A的转置。
2. 矩阵的乘法设矩阵B = [[1, 2, 3], [4, 5, 6]],矩阵C = [[7, 8], [9, 10], [11, 12]],求矩阵B和矩阵C的乘积BC。
3. 矩阵的逆给定方阵D = [[2, 1], [4, 3]],求矩阵D的逆。
4. 矩阵的行列式设矩阵E = [[1, 2], [3, 4]],求矩阵E的行列式。
5. 矩阵的特征值与特征向量给定矩阵F = [[3, -1], [4, -2]],求矩阵F的特征值与特征向量。
6. 矩阵的奇异值分解给定矩阵G = [[1, 2], [3, 4], [5, 6]],对矩阵G进行奇异值分解。
7. 矩阵的广义逆设矩阵H = [[1, -2], [3, -6]],求矩阵H的广义逆。
8. 矩阵的转置与共轭转置给定复数矩阵I = [[1+2i, 3-4i], [5+6i, 7-8i]],求矩阵I的转置和共轭转置。
9. 矩阵的正交性给定矩阵J = [[1, 0], [0, -1]],判断矩阵J是否是正交矩阵。
10. 矩阵的对称性设矩阵K = [[1, 2, 3], [2, 4, 5], [3, 5, 6]],判断矩阵K是否是对称矩阵。
这些练习题可以帮助读者巩固对矩阵性质和运算的理解,并提升解决实际问题时的能力。
希望读者能够认真思考并合理应用矩阵的知识,进一步拓展线性代数的应用领域。
十个利用矩阵乘法解决的经典题目
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n 行m 列的矩阵可以乘以一个m 行p 列的矩阵,得到的结果是一个n 行p 列的矩阵,其中的第i 行第j 列位置上的数等于前一个矩阵第i 行上的m 个数与后一个矩阵第j 列上的m 个数对应相乘后所有m 个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:经 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。
我们可以得A^(n/2) * A (其中n/2取整)。
这就告诉我们,计算A^n 也可以使用二分快速求幂的方法。
例如,为了算出A^25的值,我们只需要递归地计算出A^12、A^6、A^3的值即可。
根据典题目2 给定矩阵A ,请快速计算出A^n (n 个A 相乘)的结果,输出的每个数都mod p 。
到这样的结论:当n 为偶数时,A^n = A^(n/2) * A^(n/2);当n 为奇数时,A^n = A^(n/2) * 这里的一些结果,我们可以在计算过程中不断取模,避免高精度运算。
经典题目3 POJ3233 (感谢rmq )分别相加)。
输出的数据mod m 。
这道题两次二分,相当经典。
首先我们知道,A^i 可以二分求出。
然后我们需要对整个题目的数据规模k 进行二分。
比如,当k=6时,有: A + A^2 + A^3 + A^4 + A^5 + A^6 = 题目大意:给定矩阵A ,求A + A^2 + A^3 + … + A^k 的结果(两个矩阵相加就是对应位置k<=10^9。
(A + A^2 + A^3) + A^3*(A + A^2 + A^3)应用这个式子后,规模k 减小了一半。
矩阵与矩阵的乘法例题
矩阵与矩阵的乘法例题好像目前还没有这方面题目的总结。
这几天连续看到四个问这类题目的人,今天在这里简单写一下。
这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。
为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。
为什么它又满足结合律呢?仔细想想你会发现这也是废话。
假设你有三个矩阵A、B、C,那么(AB)C和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。
经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。
操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。
其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。
如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。
利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。
假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。
预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。
经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。
一行三列乘以三行三列的矩阵例题
一行三列乘以三行三列的矩阵例题题目:探究一行三列乘以三行三列的矩阵例题1. 简介和定义一行三列乘以三行三列的矩阵例题,是线性代数中常见的一个题目。
在这个例题中,我们需要探讨矩阵相乘的规则以及相乘后得到的新矩阵的性质。
矩阵相乘是线性代数中非常重要的一个概念,对于理解矩阵的运算规则和应用有着至关重要的作用。
2. 矩阵相乘的规则在矩阵相乘中,我们首先需要明确的是两个矩阵相乘的条件,即第一个矩阵的列数要等于第二个矩阵的行数。
在一行三列乘以三行三列的矩阵例题中,我们可以看到第一个矩阵有一行三列,而第二个矩阵有三行三列,符合相乘的条件。
3. 矩阵相乘的计算过程接下来,我们可以按照矩阵相乘的规则进行计算,具体计算过程如下:- 我们需要将第一个矩阵中的每一个元素分别与第二个矩阵中对应位置的元素相乘,并将相乘后的结果相加。
- 以一行三列乘以三行三列的矩阵为例,我们可以将第一个矩阵的每一个元素分别与第二个矩阵中对应位置的元素相乘,并相加得到新矩阵的第一个元素。
- 依次计算得到新矩阵的其他元素,直到得到最终的新矩阵。
4. 例题解析现在,让我们通过一个具体的例题来进行深入的探讨。
假设有一个一行三列的矩阵 A 和一个三行三列的矩阵 B,它们分别如下所示:A = [1, 2, 3]B = [4, 5, 67, 8, 910, 11, 12]根据矩阵相乘的规则,我们可以计算得到新矩阵 C = A * B,具体计算过程如下所示:C的第一行第一列元素:1*4 + 2*7 + 3*10 = 4 + 14 + 30 = 48C的第一行第二列元素:1*5 + 2*8 + 3*11 = 5 + 16 + 33 = 54C的第一行第三列元素:1*6 + 2*9 + 3*12 = 6 + 18 + 36 = 60得到新矩阵 C 如下所示:C = [48, 54, 60]5. 总结和回顾通过以上的计算过程,我们可以得出一行三列乘以三行三列的矩阵例题的计算结果。
李尚志线性代数习题答案
李尚志线性代数习题答案李尚志线性代数习题答案线性代数是一门重要的数学学科,它在各个领域都有广泛的应用。
而李尚志老师的线性代数习题集,无疑是学习这门学科的重要参考资料。
本文将为大家提供一些李尚志线性代数习题的答案,希望对大家的学习有所帮助。
1. 矩阵的乘法题目:计算以下两个矩阵的乘积。
A = [1 2 3][4 5 6]B = [7 8][9 10][11 12]答案:首先,我们需要确定乘积矩阵的维度。
由于A是一个2x3的矩阵,B是一个3x2的矩阵,所以乘积矩阵的维度应该是2x2。
接下来,我们按照矩阵乘法的定义进行计算。
乘积矩阵C的第一行第一列元素为A的第一行与B的第一列对应元素的乘积之和,即:C[1,1] = (1*7) + (2*9) + (3*11) = 58同理,可以计算出C的其他元素:C[1,2] = (1*8) + (2*10) + (3*12) = 64C[2,1] = (4*7) + (5*9) + (6*11) = 139C[2,2] = (4*8) + (5*10) + (6*12) = 154所以,乘积矩阵C为:[139 154]2. 矩阵的逆题目:求以下矩阵的逆矩阵。
A = [2 1][4 3]答案:要求一个矩阵的逆矩阵,我们需要首先判断该矩阵是否可逆。
一个矩阵可逆的充要条件是其行列式不为零。
计算矩阵A的行列式:det(A) = (2*3) - (1*4) = 2由于行列式不为零,所以矩阵A可逆。
接下来,我们可以使用伴随矩阵法求解逆矩阵。
首先,计算矩阵A的伴随矩阵:adj(A) = [3 -1][-4 2]然后,计算逆矩阵A的每个元素:A^(-1) = (1/det(A)) * adj(A)A^(-1) = (1/2) * [3 -1][-4 2]所以,矩阵A的逆矩阵为:A^(-1) = [3/2 -1/2][-2 1]3. 特征值和特征向量题目:求以下矩阵的特征值和对应的特征向量。
矩阵乘法练习题.doc
矩阵乘法练习题By Matrix67好像目前还没有这方面题目的总结。
这几天连续看到四个问这类题目的人,今天在这里简单写一下。
这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n 行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x的矩阵乘以x的矩阵,得到一个1 x的矩阵:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。
为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。
为什么它又满足结合律呢?仔细想想你会发现这也是废话。
假设你有三个矩阵A、B、C,那么C和A的结果的第i行第j 列上的数都等于所有A*E*C的和。
经典题目1给定n个点,m个操作,构造0的算法输岀m个操作后各点的位置。
操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。
其中翻转是以坐标轴为对称轴进行翻转,旋转则以原点为中心。
如果对每个点分别进行模拟,那么m个操作总共耗时0。
利用矩阵乘法可以在0的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时0o 假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、应用这个式子后,规模k减小了一半。
我们二分求出AL 后再递归地计算A + A— AJ即可得到原问题的答案。
经典题目V0J1049题目大意:顺次给出m个置换,反复使用这m个置换对初始序列进行操作,问k次置换后的序列。
m 首先将这m个置换“合并”起来,然后接下来我们需要执行这个置换k/m次。
1x3矩阵跟3x1矩阵乘法例题
1x3矩阵跟3x1矩阵乘法例题
1x3矩阵乘以3X1矩阵的乘法是:利用矩阵乘法公式.算出来是一个3x1的矩阵,就是3*5矩阵的行乘以3*1矩阵的列。
在数学上矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数及常数所构成的方阵。
这一概念由19世纪英国数学家凯利首先提出在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。
矩阵的运算是数值分析领域的重要问题。
将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。
十个利用矩阵乘法解决的经典题目
十个利用矩阵乘法解决的经典题目好像目前还没有这方面题目的总结。
这几天连续看到四个问这类题目的人,今天在这里简单写一下。
这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m 个数对应相乘后所有m个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。
为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。
为什么它又满足结合律呢?仔细想想你会发现这也是废话。
假设你有三个矩阵A、B、C,那么(AB)C和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。
经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。
操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。
其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。
如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。
利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。
假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。
预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。
经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。
矩阵乘法题目总结
矩阵乘法题目总结By Matrush由于k最大有10^9,所以只能用矩阵二分快速幂得到A k,最后求和即可。
PKU3233-Matrix Power Series:求Sn = A + A2 + A3+ … + A n。
首先我们能矩阵二分快速幂计算出A k,那么我们对S再进行二分:当n % 2 != 0则计算A n+S(n-1),当n % 2 == 0时计算S(n/2)*(A n/2+E),这样就可以在log(n)的时间里算出Sn代码:Mat sum(int x)//A^1+A^2+...+A^x{if (x == 1)return A;if (x & 1)return (A^x)+sum(x-1);elsereturn sum(x/2)*((A^(x/2))+E);}HDU2604-Queuing:推出递推式构造矩阵:HDU1757-A Simple Math Problem:按题意所给的函数递推构造矩阵:HDU2256-Problem of Precision:按题目所给的式子算出前几项找规律,不知道有没有更好的数学证明:HDU2294-Pendant:题意求长为n的挂件一定包含k种颜色的方案数,应该算DP+矩阵优化,第一次这么做竟然1Y,很高兴:HDU2276-Kiki & Little Kiki 2:按shǎ崽大牛的话说是隐藏比较深的题,不过在纸上小推了一下就找到了规律:因为当某个位的左边是1时该位0->1,1->0,左边是0时该位0->0,1->1,不难发现当考虑线性结构的话有f[i] = (f[i] + f[i-1]) % 2,而题目是环形结构,只需对两端的点考虑特殊情况即可:f[i] = (f[i] + f[(n+i-2) % n + 1]) % 2:FZU1692-Key problem:A(i)=A(i) + L*A(i+n-1)%n + R*A(i+1)%n这种环形权值改变问题都可以和上题一样构造矩阵来解:☆以上两题的矩阵都有一个特点就是矩阵的每行都是循环同构的,也就是可以通过对矩阵某一行右移一位从而得到该行的下一行,这样在计算矩阵乘法的时候只需要用o(n^2)的时间来计算第一行的相乘后的行向量,再花o(n^2)的时间计算出将接下来各行平移复制出即可:代码如下:Mat operator*(Mat a,Mat b){Mat c;for (int i = 0;i < 1;i++)for (int j = 0;j < n;j++){c.mat[i][j] = 0;for (int k = 0;k < n;k++)if (a.mat[i][k] && b.mat[k][j])c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] *b.mat[k][j]) % MOD;}for (int i = 1;i < n;i++){c.mat[i][0] = c.mat[i-1][n-1];for (int j = 1;j < n;j++)c.mat[i][j] = c.mat[i-1][j-1];}return c;}☆下面是几个给出F[n]的递推式,求S[n] = F[n] + F[n-1] +……+F[1]的题目,方法有两个:1.增加一维S[n],重新利用S[n-1]和F[n]、F[n-1] ……、F[1]构造S[n]的函数。
利 用 矩 阵 乘 法 解 决 的 十 个 经 典 题 目
利用矩阵乘法解决的十个经典题目原作者所有于Matrix67好像目前还没有这方面题目的总结。
这几天连续看到四个问这类题目的人,今天在这里简单写一下。
这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n行m列的矩阵可以乘以一个m行p 列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。
为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。
为什么它又满足结合律呢?仔细想想你会发现这也是废话。
假设你有三个矩阵A、B、C,那么(AB)C和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。
经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。
操作有平移、缩放、翻转和旋转这里的操作是对所有点同时进行的。
其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。
如果对每个点分别进行模拟,那么m 个操作总共耗时O(mn)。
利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。
假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。
预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。
一行三列乘以三行三列的矩阵例题
一行三列乘以三行三列的矩阵例题摘要:1.矩阵的定义与基本概念2.矩阵的乘法运算3.一行三列乘以三行三列的矩阵例题解析4.矩阵在实际问题中的应用正文:1.矩阵的定义与基本概念矩阵是数学中的一个重要概念,它是一个按照长方形阵列排列的复数或实数集合。
矩阵通常用大写字母表示,如A、B 等。
矩阵的每一个元素都是一个实数或复数,它们按照横行和纵列的方式排列,这些横行和纵列被称为矩阵的行和列。
矩阵的行数和列数决定了矩阵的大小,通常用“m×n 矩阵”表示一个具有m 行n 列的矩阵。
2.矩阵的乘法运算矩阵的乘法是矩阵运算中最基本的运算之一,它类似于向量的乘法,满足结合律、交换律和分配律。
矩阵乘法的定义是:给定两个矩阵A 和B,它们的乘积是一个新的矩阵C,其中C 的元素是由A 和B 的对应元素相乘后求和得到的。
具体地说,如果A 是一个m×n 矩阵,B 是一个n×p矩阵,那么它们的乘积C 是一个m×p 矩阵,其中C 的第i 行第j 列的元素为:C_{ij} = ∑_{k=1}^{n} A_{ik}B_{kj}3.一行三列乘以三行三列的矩阵例题解析假设有一个3 行3 列的矩阵A,另一个也是3 行3 列的矩阵B,我们要计算它们的乘积。
具体如下:A = begin{bmatrix}1 &2 & 34 &5 & 67 & 8 & 9end{bmatrix}B = begin{bmatrix}1 &2 & 34 &5 & 67 & 8 & 9end{bmatrix}我们按照矩阵乘法的定义,从右向左、从下向上依次计算C 的元素:C = A * B = begin{bmatrix}1*1 & 1*2 & 1*34*1 & 4*2 & 4*37*1 & 7*2 & 7*3end{bmatrix}计算得到C = begin{bmatrix}13 & 16 & 1932 & 40 & 4861 & 72 & 81end{bmatrix}这就是两个3 行3 列矩阵相乘的结果。
矩阵的例题
矩阵的例题一. 矩阵乘法1. 已知⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=210021 α是n 维列向量,A=E-aa T ,B=E+2aa T ,求AB 与BA 。
解:显然A 与B 均为n 阶方阵,由矩阵运算规律可得AB =[E-aa T ][E+2aa T ]=E+2aa T -aa T -2aa T aa T =E+(1-2a T a)aa T 由于214141210021210021=+=⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎭⎫ ⎝⎛= ααT ,所以AB= E 。
由于A 与B 是同阶方阵,故由AB= E ,可得必有BA= E 。
注1:对n 维列向量a 来说,aa T 与a T a 有很大不同,由此也说明任意矩阵A ,AA T 与A T A 未必相同,应看仔细,不能混为一谈。
注2:作矩阵运算时,应尽量先根据运算规则进行符号运算,最后将具体数字代入求得结果。
2.设A 与B 是n 阶矩阵,且满足A 2=A ,B 2=B 及(A+B )2=A+B ,求证AB =0。
证明:由于(A+B )2=A 2+AB+BA+B 2,故由已知可得AB+BA=0, (1)两边分别左,右乘A ,得AB+ABA=0及ABA+BA=0,故AB+BA=-2ABA 代入(1)式可得AB=0。
二. 幂的运算1.设,,2132,1001,2132Q P A Q P Λ=⎪⎪⎭⎫ ⎝⎛--=⎪⎪⎭⎫ ⎝⎛-=Λ⎪⎪⎭⎫ ⎝⎛=计算n A QP ,。
解:;100121322132E QP =⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛⎪⎪⎭⎫ ⎝⎛--= ;122)1(001⎩⎨⎧+=Λ==⎪⎪⎭⎫ ⎝⎛-=Λk n k n E n n Q P Q QP QP QP P Q P Q P Q P Q P A n n n Λ=ΛΛΛΛ=ΛΛΛ=Λ=)()()(][]][[][⎪⎩⎪⎨⎧+=⎪⎪⎭⎫ ⎝⎛--==⎩⎨⎧+=Λ=12741272122k n k n E k n Q P k n PQ2.已知。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十个利用矩阵乘法解决的经典题目
By Matrix67
好像目前还没有这方面题目的总结。
这几天连续看到四个问这类题目的人,今天在这里简单写一下。
这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。
不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。
在数学中,一个矩阵说穿了就是一个二维数组。
一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。
比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。
其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 x 2的矩阵,得到一个1 x 2的矩阵:
矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律;二,矩阵乘法满足结合律。
为什么矩阵乘法不满足交换律呢?废话,交换过来后两个矩阵有可能根本不能相乘。
为什么它又满足结合律呢?仔细想想你会发现这也是废话。
假设你有三个矩阵A、B、C,那么(AB)C和A(BC)的结果的第i行第j列上的数都等于所有A(ik)*B(kl)*C(lj)的和(枚举所有的k和l)。
经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置。
操作有平移、缩放、翻转和旋转
这里的操作是对所有点同时进行的。
其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心。
如果对每个点分别进行模拟,那么m个操作总共耗时O(mn)。
利用矩阵乘法可以在O(m)的时间里把所有操作合并为一个矩阵,然后每个点与该矩阵相乘即可直接得出最终该点的位置,总共耗时O(m+n)。
假设初始时某个点的坐标为x和y,下面5个矩阵可以分别对其进行平移、旋转、翻转和旋转操作。
预先把所有m个操作所对应的矩阵全部乘起来,再乘以(x,y,1),即可一步得出最终点的位置。
经典题目2 给定矩阵A,请快速计算出A^n(n个A相乘)的结果,输出的每个数都mod p。
由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。
我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (其中n/2取整)。
这就告诉我们,计算A^n也可以使用二分快速求幂的方法。
例如,为了算出A^25的值,我们只需要递归地计算出A^12、A^6、A^3的值即可。
根据这里的一些结果,我们可以在计算过程中不断取模,避免高精度运算。
经典题目3 POJ3233 (感谢rmq)
题目大意:给定矩阵A,求A + A^2 + A^3 + ... + A^k的结果(两个矩阵相加就是对应位置分别相加)。
输出的数据mod m。
k<=10^9。
这道题两次二分,相当经典。
首先我们知道,A^i可以二分求出。
然后我们需要对整个题目的数据规模k进行二分。
比如,当k=6时,有:
A + A^2 + A^3 + A^4 + A^5 + A^6 =(A + A^2 + A^3) + A^3*(A + A^2 + A^3)
应用这个式子后,规模k减小了一半。
我们二分求出A^3后再递归地计算A + A^2 + A^3,即可得到原问题的答案。
经典题目4 VOJ1049
题目大意:顺次给出m个置换,反复使用这m个置换对初始序列进行操作,问k次置换后的序列。
m<=10, k<2^31。
首先将这m个置换“合并”起来(算出这m个置换的乘积),然后接下来我们需要执行这个置换k/m次(取整,若有余数则剩下几步模拟即可)。
注意任意一个置换都可以表示成矩阵的形式。
例如,将1 2 3 4置换为3 1 2 4,相当于下面的矩阵乘法:
置换k/m次就相当于在前面乘以k/m个这样的矩阵。
我们可以二分计算出该矩阵的k/m次方,再乘以初始序列即可。
做出来了别忙着高兴,得意之时就是你灭亡之日,别忘了最后可能还有几个置换需要模拟。
经典题目5 《算法艺术与信息学竞赛》207页(2.1代数方法和模型,[例题5]细菌,版次不同可能页码有偏差)
大家自己去看看吧,书上讲得很详细。
解题方法和上一题类似,都是用矩阵来表示操作,然后二分求最终状态。
经典题目6 给定n和p,求第n个Fibonacci数mod p的值,n不超过2^31
根据前面的一些思路,现在我们需要构造一个2 x 2的矩阵,使得它乘以(a,b)得到的结果是(b,a+b)。
每多乘一次这个矩阵,这两个数就会多迭代一次。
那么,我们把这个2 x 2的矩阵自乘n次,再乘以(0,1)就可以得到第n个Fibonacci数了。
不用多想,这个2 x 2的矩阵很容易构造出来:
经典题目7 VOJ1067
我们可以用上面的方法二分求出任何一个线性递推式的第n项,其对应矩阵的构造方法为:在右上角的(n-1)*(n-1)的小矩阵中的主对角线上填1,矩阵第n行填对应的系数,其它地方都填0。
例如,我们可以用下面的矩阵乘法来二分计算f(n) = 4f(n-1) - 3f(n-2) + 2f(n-4)的第k项:利用矩阵乘法求解线性递推关系的题目我能编出一卡车来。
这里给出的例题是系数全为1的情况。
经典题目8 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值
把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。
令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。
类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。
同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。
经典题目9 用1 x 2的多米诺骨牌填满M x N的矩形有多少种方案,M<=5,N<2^31,输出答案mod p的结果
我们以M=3为例进行讲解。
假设我们把这个矩形横着放在电脑屏幕上,从右往左一列一列地进行填充。
其中前n-2列已经填满了,第n-1列参差不齐。
现在我们要做的事情是把第n-1列也填满,将状态转移到第n列上去。
由于第n-1列的状态不一样(有8种不同的状态),因此我们需要分情况进行讨论。
在图中,我把转移前8种不同的状态放在左边,转移后8种不同的状态放在右边,左边的某种状态可以转移到右边的某种状态就在它们之间连一根线。
注意为了保证方案不重复,状态转移时我们不允许在第n-1列竖着放一个多米诺骨牌(例如左边第2种状态不能转移到右边第4种状态),否则这将与另一种转移前的状态重复。
把这8种状态的转移关系画成一个有向图,那么问题就变成了这样:从状态111出发,恰好经过n步回到这个状态有多少种方案。
比如,n=2时有3种方案,111->011->111、111->110->111和111->000->111,这与用多米诺骨牌覆盖3x2矩形的方案一一对应。
这样这个题目就转化为了我们前面的例题8。
经典题目10 POJ2778
题目大意是,检测所有可能的n位DNA串有多少个DNA串中不含有指定的病毒片段。
合法的DNA只能由ACTG四个字符构成。
题目将给出10个以内的病毒片段,每个片段长度不超过10。
数据规模n<=2 000 000 000。
下面的讲解中我们以ATC,AAA,GGC,CT这四个病毒片段为例,说明怎样像上面的题一样通过构图将问题转化为例题8。
我们找出所有病毒片段的前缀,把n位DNA分为以下7类:以AT 结尾、以AA结尾、以GG结尾、以?A结尾、以?G结尾、以?C结尾和以??结尾。
其中问号表示“其它情况”,它可以是任一字母,只要这个字母不会让它所在的串成为某个病毒的前缀。
显然,
这些分类是全集的一个划分(交集为空,并集为全集)。
现在,假如我们已经知道了长度为n-1的各类DNA中符合要求的DNA个数,我们需要求出长度为n时各类DNA的个数。
我们可以根据各类型间的转移构造一个边上带权的有向图。
例如,从AT不能转移到AA,从AT转移到??有4种方法(后面加任一字母),从?A转移到AA有1种方案(后面加个A),从?A转移到??有2种方案(后面加G或C),从GG到??有2种方案(后面加C将构成病毒片段,不合法,只能加A和T)等等。
这个图的构造过程类似于用有限状态自动机做串匹配。
然后,我们就把这个图转化成矩阵,让这个矩阵自乘n次即可。
最后输出的是从??状态到所有其它状态的路径数总和。
题目中的数据规模保证前缀数不超过100,一次矩阵乘法是三方的,一共要乘log(n)次。
因此这题总的复杂度是100^3 * log(n),AC了。