国家集训队2008论文集 矩阵乘法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.2 文本生成器 SPOJ1676 . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 图邻接矩阵上的乘法
9
3.1 沼泽鳄鱼 ZJTSC’05 . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.3 一些拓展 . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1
4 矩阵乘法与折半递归
14
4.1 外星语言(TopCoder Algorithm SRM 377, Div 1, 1000) . . . . . . 14
4.1.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
t
(
)
以使用快速幂。朴素算法的时间复杂度是O N 3 log t ,其中N 表示M的大小
是N × N ,因为要计算M · M,M的大小不可能是a × b, a = b。本文中大部分
算法都需要使用到矩阵的快速幂。
4
2 优化动态规划
2.1 生成树计数 NOI’07
2.1.1 题目大意
一张无向图G有N
( N
4.3 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2
正文
1 预备知识
1.1 矩阵
矩阵可以看成一个n × m的数表,其中n, m都是正整数。例如:
[
]
012
[] 1
123
一般可以用A [i, j]表示第i行第j个数。
1.3 快速幂
我们平时在计算形如at这样一个数的非负整数次幂的时候,通常会先递归计
3
算出a t/2 ,然后可以利用这个值O (1)的时间里算出at:

( a
t 2
)2
a是偶数
at =
( a
t 2
)2 ·a
a是奇数
(3)
可以得出快速幂算法的复杂度是O (log t)。 定义M · M · · · · · M = Mt,由于矩阵乘法满足结合律,计算Mt同样可
而且矩阵乘法满足结合律,即(AB) C = A (BC)。设A, B, C的大小分别为a × b, b × c, c × d,证明如下:
((AB) C) [i, j]
(
)
∑c ∑b
=
A [i, k] B [k, l] C [l, j]
l=1 k=1
∑b ∑c
=
A [i, k] B [k, l] C [l, j]
3.3 最小最大边路径问题 . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.1 描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5
2.2 文本生成器 SPOJ16761
2.2.1 题目大意
给定N (1 ≤ N ≤ 10)个长度不超过6的单词,求由 包含至少一个给定单词的字符串有多少种,答案 mod
大10写00字7,母(组1 ≤成L长≤度1为06L)。的
2.2.2 分析
考虑到至少包含一个单词这个条件比较难处理,我们可以先求出总的单词数
说,这个复杂度还是不能够接受的,我们只能优化动态规划或者另辟蹊径了。
通过观察我们发现,当前面k个点的连通性相同的时候,无论当前是哪个点,
都是转移到编号比它大一的点,并且转移都是一样的。既然转移是一样的,能
否使用一个自动化的工具来快速进行转移呢?能!那就是矩阵。
设f [i] [j]表示现在是第i个点,前k个点的连通性状态是j,达到这种状态有
(2)
k=1 l=1
(
)
∑b
∑c
= A [i, k] B [k, l] C [l, j]
k=1
l=1
= (A (BC)) [i, j]
而(AB) C和A (BC)的大小都是a × d,得证。 直接按照定义进行矩阵乘法时间复杂度是O (abc),其中a, b, c分别表示两
复个W 杂i矩杂度no阵度为gr大O约ad(小为N算是O3法)(a。,N×其2时.b8以他1间)。及有复b而杂一×现度些c约有。算为的将法O两算有(个法N更N中2低.3理6×的)。论N复的复杂矩杂度阵度,相最例乘低如,的S朴是tr素aCs算soepn法pe算的rs法时mi时间th间复—

1015)个点,编号为i的点和j的点之间有边,当且仅
当|i − j| ≤ k (2 ≤ k ≤ 5)。给定N, k,求G的生成树的个数。
2.1.2 分析
题目中提供的求行列式的值的方法并没有利用到图的特殊性。一张图的一个
生成树就是这张图的一个无环子图,并且使所有点都连通。考虑到k的范围比
较小,每个点都只和附近的很少的点连边。于是可以使用状态压缩动态规划,
4.1.5 拓展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.2 Dice Contest CEPC’03 . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
a2,1
a2Baidu Nhomakorabea2 ...
... ... ...
alk ,1
alk ,2 ...

a1,lk a2,lk . . . alk,lk
则Mi = Mi−1D,因为根据矩阵乘法的定义,有:
∑ lk Mi [1, j] = Mi−1 [1, t] · D [t, j]
t=1
即 上 面 的(4)式 。 先 搜 索 算 出aj,t 以 及Mk ( 我 还 尚 未 研 究 出 任 何 只 需 直 接 计 算化M 到O0 的(l优k3 美log方N法)。)通,过然搜后索使发用现矩lk阵=乘5法2,的这快个速复幂杂计度算完,全可可以以把接时受间。复杂度优
多少种方法,若
∑ lk
f [i] [j] = aj,t · f [i − 1] [t]
(4)
t=1
由于每一个f [i] [j]的值只依赖于所有的f [i − 1] [t]。我们把所有的f [i − 1] [t]放 在一个1 × lk的矩阵Mi−1里。定义矩阵D:


a1,1
D =
a1,2 ...
4.2.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.3 折半递归 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.4 矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.1.3 折半递归 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.1.4 矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
由于要判断连通性和环,需要存下当前点之前k个点的连通性以及当前点是第
几个点。转移的时候,枚举当前点和前面k个点的边要选中哪些,并且判断是
否出现环以及是否可能产生不连通的情况,即如果离当前最远的点不和前面其
他从原点来连的通O,(就N必3)须降和到当了前O 点(lk连2N边)。。设li为i个点的连通性的情况数。时间复杂度 尽管这个算法已经充分利用了题目当中图的特殊性,但是对于题目的规模来
3.1.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.3 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 奶牛接力 USACO’NOV07 . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5
2.1 生成树计数 NOI’07 . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 题目大意 . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.2 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
矩阵乘法在信息学中的应用
浙江省杭州二中 俞华程
摘要
矩阵在数学中应用很广,而在信息学中同样有很广的应用。本文将阐述 矩阵的乘法这一运算在三个方面的一些应用。
关键字:快速幂 矩阵乘法 优化动态规划 图的邻接矩阵 折半递归
目录
1 预备知识
3
1.1 矩阵 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 矩阵乘法
定义矩阵A,B。A和B可以作乘法操作当且仅当A的大小是a × b,B的大小 是b × c,其中a, b, c皆为正整数。设矩阵C = AB,则C的大小是a × c,且有
∑b
C [i, j] = A [i, k] B [k, j] (1 ≤ i ≤ a, 1 ≤ j ≤ c)
(1)
k=1

f [i] [a1] [a2] [a3] [a4] [a5] =
f [i + 1] [a2] [a3] [a4] [a5] [c] (5)
A ≤c≤ Z legal(a1 a2 a3 a4 a5 c)
态数其高中达leOga(lM(s)5表L)示。字即符使串预s处的理所了有l后ega缀l函均数不,是时题间目复中杂给度定还的是单有词O。(则M此6L算)(法M状表 示字母表的大小),这个复杂度根本无法接受。( )
即26L,问题就转化为求不包含任何一个给定单词的字符串有多少个。以下文 中的合法均指不包含任何一个给定单词。
根据题目中的条件单词长度不超过6,可以得到:若前i − 1个字母组成的 字符串不包含任何单词,那么要判断前i个字母组成的字符串是否满足要求, 只需考虑第i − 5个字母到第i即可。于是,可以得到一个简单的动态规划算 法,f [i] [a1] [a2] [a3] [a4] [a5]表示前i个字母已经满足条件,第(i − 4) ∼ i个字符 分别为a1 ∼ a5,在这个情况下继续生成字符串,有多少合法的方案。可以得到 转移方程:
1.2 矩阵乘法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 快速幂 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 优化动态规划
相关文档
最新文档