当前课程知识点:算法设计与分析 >  5 Divide and Conquer >  5.5 Matrix Multiplication >  Video

返回《算法设计与分析》慕课在线视频课程列表

Video在线视频

Video

下一节:Convolution and FFT

返回《算法设计与分析》慕课在线视频列表

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 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--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 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--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

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--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

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--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 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。