当前课程知识点:算法设计与分析 > 5 Divide and Conquer > 5.5 Matrix Multiplication > Video
再来看看矩阵乘法
给定两个n×n的矩阵A和B
C=A×B
根据线性代数中矩阵乘法的定义
矩阵C的元素c_ij=A矩阵的第i行元素
与B矩阵中第j列元素对应相乘 再相加
这个算法用Θ(n^3)的次运算
这里我们把一次算数运算作为单位运算
我们能改进这个结果么
我们尝试用分治算法来求解
我们把A和B矩阵都做2×2的分块
通过分块矩阵的乘法规则
A与B的乘积C也是一个2×2的分块矩阵
令4个小块分别为C_11 C_12 C_21 C_22
这里每一个小块
都需要计算两个矩阵的乘积
乘积的规模为原问题的一半
总共需要计算
8个小矩阵的乘积
我们可以得到
分治算法的运行时间
T(n)=8T(n/2)
加分块 合并所需要的时间Θ(n^2)
我们可以得到T(n)=Θ(n^3)
这个结果也是不出所料的
因为我们虽然对矩阵
进行了分块及分治处理
但它本质上与矩阵乘法定义
来计算是一样的
没有减少运算次数
我们还是把矩阵进行2×2的分块
但是我们发现
可以计算7个小矩阵的乘积
而不是8个
我们定义P_1,P_2…P_7是这样的一个形式
可以验证C_11 C_12 C_21 C_22
分别可以用P_1,P_2…P_7的加减得到
虽然加减法的次数增加到了18个
但是小矩阵的乘积
我们只需要计算7个
这是69年发现的结果
先把矩阵进行2×2的分块
对子块进行10次加减法
得到计算P_1,P_2…P_7,所需要的14个小矩阵
递归地计算7个小矩阵的乘法
再进行8次矩阵的加减法得到C_11 C_12 C_21 C_22
假设n是2的指数形式
对于一般的情况
可以通过添加一些0的方式
把矩阵扩展为2的指数阶矩阵
这不影响计算时间的量级
T(n)=7T(n/2)
加上加减 分块 合并所需要的时间Θ(n^2)
可以得到T(n)=Θ(nlog7)=O(n^2.81)
可以把矩阵分解为2×2的矩阵
通过计算7个小矩阵的乘积得到吗
69年的这个结果表明 是可以做到的
我们得到了O(n^2.81)的这样一个结果
可以把矩阵分解为2×2的矩阵
通过计算6个小矩阵的乘积得到吗
71年证明了这是不可能的
可以把矩阵分解为3×3的矩阵
通过计算21个小矩阵的乘积得到吗
这是一个open问题
可以把矩阵分解为70×70的矩阵
计算143640个小矩阵的乘积得到吗
这是可以做到的
80年得到了这个结果
运算的时间为O(n^2.80)
还能做得好一些么
79年得到了一个O(n^2.521813)的结果
80年得到了O(n^2.521801)的这个结果
我们看到 到小数点后边第5位才分出了胜负
基于快速傅里叶变换 FFT
目前最好的结果是O(n^2.373)
是威廉姆斯在2011年得到的
可以对任意的ε>0
可能有O(n^2+ε)的结果么
这是一个open问题
从算法的角度来看
哪怕是对于最基本的问题
如两个整数的乘法 矩阵的乘法
我们都还远没有达到最优
还需要长期的追求和探索
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam