没有合适的资源?快使用搜索试试~ 我知道了~
斯坦福 CS367 代数图算法讲义 斯坦福 CS367 代数图算法讲义 斯坦福 CS367 代数图算法讲义 =======================
资源推荐
资源详情
资源评论
第1讲和第2讲 矩阵乘法与矩阵求逆
记录员:Jessica Su 日期:2015年9月25日
编辑:Kathy Cooper
这门课程是关于矩阵乘法及其在图算法中的应用。
1 矩阵乘法的先前工作
定义1.1. (矩阵乘法) 设A和B是n×n矩阵(其中的元素有O(logn)位)。
那么乘积C,其中AB=C,是一个n×n矩阵,定义为([i, j]) =
∑
n
k
=
1
A(i,
k
)B(
k
, j)。
我们将假设在O(logn)位整数上的操作(加法和乘法)需要O(1)的时间,即我们将在一个字-RAM计算模
型中工作,字大小为O(logn)。
为了改进矩阵乘法的运行时间,已经做出了很多努力。 简单的算法在O( n^
3
)的时间内进行矩阵乘法。
斯特拉森('69)通过提供一个O( n^
2.81
)的时间复杂度的算法,让所有人都感到惊讶。
从那时起,一系列的改进开始了,直到1986年,科波斯密斯和维诺格拉德实现了O(n^
2.37
6)的时间复杂度。
经过
2
4年的停滞,
2
010年爱丁堡大学的研究生安德鲁·斯托瑟改进了运行时间,将其降低到O(n^
2.37
4)。
2
0
11年,弗吉尼亚·威廉姆斯获得了O(n^
2.372
9)的时间复杂度,这是最好的界限,直到
2
014年勒·加尔获得了
O(n^
2.372
8
7
)的时间复杂度。 许多人相信最终的界限将是n^
2+
O(1),但这尚未被证明。
今天我们将讨论矩阵求逆和矩阵乘法之间的关系。
2 矩阵乘法等同于矩阵求逆。
矩阵求逆很重要,因为它用于解线性方程组。 乘法等同于求逆,从某种意义上说,任何乘法算法都可以用
来得到一个类似运行时间的求逆算法,反之亦然。
2.1 乘法可以简化为求逆。
定理2.1. 如果可以在T( n)时间内求解n× n矩阵的逆,那么可以在O( T (3 n))时间内相乘n× n矩阵。
证明。设 A和 B为矩阵。假设
D =
I A 0
0 I B
0 0 I
其中 I是 n乘n的单位矩阵。 通过直接计算可以验证
D
−1
=
I −A AB
0 I −B
0 0 I
求逆 D的时间复杂度为 O(T (3n)),我们可以通过求逆 C来找到 AB。 注意 C始终可逆,因为其行列式
为1。
1
2.2 求逆可以简化为乘法
定理2.2. 假设 T (n)满足 T (2n) ≥(2 + ε)T(n),其中ε > 0且对于所有的 n成立。 如果可以在 T (n)时间内进
行n乘n矩阵的乘法,则可以在 O(T(n))时间内求逆n乘 n矩阵。
证明思路:首先,我们给出一个算法来求解对称正定矩阵的逆。 然后我们使用这个算法来求解任意可逆矩
阵的逆。
第2节的其余部分专门讲解这个证明。
2.2.1 对称正定矩阵
定义2.1. 一个矩阵 A是对称正定的,如果
1. A是对称的,即 A = A
t
,所以 A(i, j) = A(j, i)对所有的i, j成立
2. A是正定的,即对于所有的 x= 0,有 x
t
Ax > 0。
2.2.2 对称正定矩阵的性质
命题1. 所有对称正定矩阵都是可逆的。
证明。假设 A不可逆。 那么存在一个非零向量 x使得 Ax= 0。 但是x
t
Ax= 0,所以 A不是对称正定的。 因
此我们得出结论,所有对称正定矩阵都是可逆的。
命题2. 对称正定矩阵的任何主子矩阵也是对称正定的。
(一个 m行 n列的矩阵 M是一个n行 n列的矩阵 A的主子矩阵,如果 M是通过删除 A的最后m行和列得到
的。)
证明。设向量 x有 m个分量。 我们需要证明 x
t
M x >0。 考虑向量 y,它是向量 x后面补充了 n − m个零。
由于矩阵 A是对称正定的, y
t
Ay >0。 但是 y
t
Ay = x
t
M x,因为除了前 m个分量外,其他都是零。
命题3. 对于任意可逆矩阵 A, A
t
A是对称正定的。
证明。 设向量 x为非零向量。. 我们现在证明 ||Ax||
2
>0。
对于任意的 x= 0,由于 A是可逆的, Ax不为零。 因此,对于任意的 x= 0, ||Ax||
2
>0。 所以 A
t
A是正
定的。 此外,它是对称的,因为(A
t
A)
t
= A
t
A。
第4个命题。假设 n是偶数, A是一个 n × n对称正定矩阵。 将 A分成四个方块(每个方块大小为 n/2× n/
2):
A =
[
M B
t
B C
]
.
然后,舒尔补, S = C − BM
− 1
B
t
,是对称正定的。
上述命题的证明将在作业中给出。
2.2.3 对称正定矩阵的约化
假设 A是对称正定的,并将其分成方块 M、 B
t
、 B和 C。 再次,令 S =
C − BM
− 1
B
t
。 通过直接计算,我们可以验证
A
−1
=
[
M
−1
+ M
−1
B
t
S
−1
BM
−1
−M
−1
B
t
S
−1
−S
−1
BM
−1
S
−1
]
2
因此,我们可以递归地计算 A
− 1
,如下所示:(让运行时间为 t(n))
算法1:对称正定矩阵的求逆
递归计算 M
− 1
(这需要 t(n/2)时间)
使用矩阵乘法计算 S = C − BM
− 1
B
t
(这需要 O(T(n))时间)
递归计算 S
− 1
(这需要 t(n/2)时间)
计算 A
− 1
的所有元素(这需要 O(T(n))时间)
该过程的总运行时间为
t(n) ≤ 2t(n/2) + O(T(n)) ≤ O(
j
2
j
T (n/2
j
))
≤ O(
j
(2/(2 + ε))
j
T (n)) ≤ O(T (n)).
2.2.4 任意矩阵的简化
假设将求逆对称正定矩阵简化为矩阵乘法。 然后考虑求逆任意可逆矩阵 A的问题。 根据第3个命题,我们
知道 A
t
A是对称的正定矩阵,因此我们可以轻松找到 C= (A
t
A)
−1
。 然后 CA
t
= A
−1
A
−t
A
t
= A
−1
,因此
我们可以通过将 C与A
t
相乘来计算 A
−1
。
3 布尔矩阵乘法(介绍)
记录员:罗比·奥斯特罗
编辑:凯西·库珀
给定两个n×n矩阵A,B,其中A,B的元素取值为{0,1},我们定义布尔矩阵乘法(BMM)如下:
(AB)[i, j ] =
∨
k
(A(i, k ) ∧ B(k, j ))
注意,布尔矩阵乘法可以使用整数矩阵乘法的算法来计算,因此对于n×n矩阵的BMM的时间复杂度为O(n
ω
+
O(
1))
,其中
ω
< 2.373(整数矩阵乘法的当前界限)。
大多数理论上快速的矩阵乘法算法在实际中是不可行的。因此,所谓的“组合算法”是可取的。 “组合算
法”没有严格的定义,但具有以下特性:
• 不使用减法
• 所有操作都是相对实际的(就像查找表)
注1.对于ε > 0,甚至对于BMM,目前没有已知的时间复杂度为O(n^
3
-
)的组合算法!这样的算法被称为“
真正的亚立方算法。”
4个俄罗斯人
1970年,Arlazarov、Dinic、Kronrod和Faradzev(他们似乎并不全是俄罗斯人)开发了一种组合算法,用
于BMM,时间复杂度为O(
n
3
log(
n
)),称为Four-Russia
n
s算法。通过对算法进行小的改变,可以
将其运行时间降低为O(
n
3
log
2
n
)。2009年,Bansal和Williams提出了一种改进的算法
3
,其运行时间为O(
n
3
log(
2.25
n)
)。2014年,Chan提出了一种运行时间为O(
n
3
log
3
n
) 然后,在
2015年,斯坦福大学的研究生Yu提出了一种运行时间为 O(的算法。
n
3
log
4
n
)。今天
我们将介绍Four-Russians算法。
4.1 Four-Russians算法
我们从一个假设开始:
• 我们可以存储多项式数量的查找表 T,大小为
c
,其中 c ≤2 + ,给定表 T的索引和任意 O(log n)位向
量 x,我们可以在常数时间O(1)内查找 T (x)。
定理4.1. 矩阵乘法的时间复杂度为 O(
n
3
log
2
n
)(在字长为 O(log n)的字RAM上)。
证明。我们给出Four Russians算法。 (更多是算法的描述而不是完整的正确性证明。)
设 A和 B为 n × n的布尔矩阵。 选择任意的 ,我们可以将 A分割成大小为
log n × log n的块。 也就是说, A被划分为块 A
i,j
,其中i, j ∈ [
n
对数
n
]。下面我们给出一个简单的例子
A的:
A
i,j
对数 n {
i
j
对于每个选择的i,j我们创建一个查找表 T
i
,
j
对应于 A
i
,
j
具有以下规格:
对于每个长度为 对数 n的位向量 v:
T
i,j
[v] = A
i,j
· v.
也就是说, Ti,
j
接受长度为 对数 n的位序列作为键,并存储长度为 对数 n的位序列。 由于存在
对数
n位的 位向量,并且 Ai,
j
· v是 对数 n位,我们有 |Ti,
j
| = n
对数 n.
这些表的整个计算时间在渐近意义上是
(
n
log n
)2n
对数
2
n = n
2+
因为有 (
n
log n
)2个选择,对于i, j, n
ε
向量 v,对于每个 Ai,
j
和每个 v,计算 A
i,j
v需要 O(log
2
n) 时
间,对于常数 ε。
给定我们在次立方时间内创建的表,我们现在可以在常数时间内查找任何 A
ij
· v。
我们现在考虑矩阵 B。 将 B的每一列分割成
n
log n
个部分,每个部分包含 ε log
n
个连续的条目。
设 B
j
k
为B的第 j个部分的第 k列。每个 A
ij
B
j
k
可以在常数时间内计算,因为它可以从预处理中创建的表 T
ij
[B
j
k
] 中访问。
要计算乘积 Q = AB,我们可以按以下步骤进行。
从 j= 1 到
n
log n
: Q
ik
= Q
ik
∨ (A
ij
∧ B
k
j), 根据定义。通过我们的表 T,我们可以在常数时间内计
算出按位“与”(或*),但“或”(或求和)仍然需要 O(log n) 时间。这给我们提供了一个在时间 O(n ·
n
log n
2
· log n) = O(
n
3
log
n
) 时间,四个俄罗斯人的原始结果。
4
我们如何摆脱由求和创建的额外log n项?
我们可以预先计算所有可能的成对求和!创建一个表 S ,使得 S (u, v) = u ∨ v 其中
u, v ∈ {0, 1}
log n
. 这需要我们 O(n
2
log n) 的时间,因为有 n
2
pairs u, v ,每个组件只需要
只需要 O(log n) 的时间。
这种预计算使我们能够在常数时间内查找任意可能的两两和 log n位向量。
因此,每个 Q
ik
= Q
ik
∨(A
ij
∧B
j
k
) 操作都需要 O(1) 时间,而最终算法的渐近运行时间为
n · (n/ε log n)
2
= n
3
/ log
2
n,
其中第一个 n计算了 B的列数 k,剩下的项是i, j对的数量。
因此,我们有一个运行时间为 O(的组合算法
n
3
log
2
n
)。
注意:我们能否节省超过对数因子? 这是一个重要的未解决问题。
5 传递闭包
定义5.1. 有向图 G= (V, E)的传递闭包(TC)是一个 n × n矩阵
使得 ∀u, v ∈ E (T (u, v) =
{
1 如果v从u可达
0 否则
对于无向图的传递闭包在线性时间内是微不足道的-只需计算连通分量。 相反,我们将证明对于有向图
,该问题等价于BMM。
定理5.1. 传递闭包等价于BMM
证明。我们分别证明等价性。
命题5. 如果TC在 T (n)时间内,则BMM在 O(T (3 n))时间内。
证明。考虑下面这样的图,其中有三行N个顶点。 给定两个布尔矩阵 A和 B,我们可以通过在第一行的第 i
个顶点和第二行的第 j个顶点之间添加一条边来创建这样的图,当且仅当 A
ij
== 1。 类似地,对于 B,在
第二行和第三行之间构建边。 因此,矩阵乘积 AB可以通过计算该图的传递闭包来得到。 通过简单地取 ij
→ jk的 ∧,它等价于BMM。 由于该图有3N个节点,给定一个 T ( n)算法来计算TC,我们就有了一个 O(T
(3n))算法来计算BMM。(当然,创建图需要N
2
的时间,但这被 T (n)所包含,因为 T (n) ≥N
2
,至少需要
打印 AB的输出。)
命题6. 如果BMM在 T (n)时间内,满足 T (n/2) ≤ T (n)/(2 + ),那么TC在 O(T (n))时间内。
我们注意到命题中的条件是非常自然的。例如,对于任意的
c > 1,都有 T ( n ) = n c成立。
证明。设 A是某个图 G的邻接矩阵。 那么(A + I)
n
是 G的传递闭包。 由于我们有一个 T (n)的BMM算法,
我们可以使用对A + I进行log
n
次连续平方运算,在O(T( n) logn)的时间内计算出( A + I) n。 我们需要消除
log项以证明等价性。
我们使用以下算法来实现:
1. 计算 G的强连通分量并将其合并得到 G
′
,这是一个有向无环图。我们可以在线性时间内完成这个步骤
。
5
剩余33页未读,继续阅读
资源评论
绝不原创的飞龙
- 粉丝: 1w+
- 资源: 1091
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功