Matrix Chain Multiplication using Dynamic Programming Formula
2022/4/12 23:16:06
本文主要是介绍Matrix Chain Multiplication using Dynamic Programming Formula,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Matrix Chain Multiplication using Dynamic Programming Formula
what is matrix multiplication
-
做矩阵相乘的前提是第一个矩阵的列必须和第二个矩阵的行相等。
-
结果的矩阵的dimension是2×2( first row × second column)
-
我做了2×3×2次乘法 first row ×(first column/second row)× second column
What is matrix chain Multiplication
这个问题不关心内部是如何计算的,我只在乎为了计算他们我花费了多少次乘法运算。
How to use DP Formula
卡特兰数:规定h(0)=1,而h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=429,h(8)=1430,h(9)=4862,h(10)=16796,h(11)=58786,h(12)=208012,h(13)=742900,h(14)=2674440,h(15)=9694845·····················
通项公式为:
作者:力扣(LeetCode)
链接:https://zhuanlan.zhihu.com/p/976190852.1 进出栈序列
这是一道 最经典 的入门级卡特兰数题目,如果能把这题看懂,相信后面的题目也能迎刃而解。
题目描述
n 个元素进栈序列为:1,2,3,4,...,n,则有多少种出栈序列。
思路
我们将进栈表示为 +1,出栈表示为 -1,则 1 3 2 的出栈序列可以表示为:+1 -1 +1 +1 -1 -1。
根据栈本身的特点,每次出栈的时候,必定之前有元素入栈,即对于每个 -1 前面都有一个 +1 相对应。因此,出栈序列的 所有前缀和 必然大于等于 0,并且 +1 的数量 等于 -1 的数量。
接下来让我们观察一下 n = 3 的一种出栈序列:+1 -1 -1 +1 -1 +1。序列前三项和小于 0,显然这是个非法的序列。
如果将 第一个 前缀和小于 0 的前缀,即前三项元素都进行取反,就会得到:-1 +1 +1 +1 -1 +1。此时有 3 + 1 个 +1 以及 3 - 1 个 -1。
因为这个小于 0 的前缀和必然是 -1,且 -1 比 +1 多一个,取反后,-1 比 +1 少一个,则 +1 变为 n + 1 个,且 -1 变为 n - 1 个。进一步推广,对于 n 元素的每种非法出栈序列,都会对应一个含有 n + 1 个 +1 以及 n - 1个 -1 的序列。
如何证明这两种序列是一一对应的?
假设非法序列为 A,对应的序列为 B。每个 A 只有一个"第一个前缀和小于 0 的前缀",所以每个 A 只能产生一个 B。而每个 B 想要还原到 A,就需要找到"第一个前缀和大于 0 的前缀",显然 B 也只能产生一个 A。
每个 B 都有 n + 1 个 +1 以及 n - 1 个 -1,因此 B 的数量为 ,相当于在长度为 2n 的序列中找到
n + 1
个位置存放 +1。相应的,非法序列的数量也就等于 。出栈序列的总数量共有 ,因此,合法的出栈序列的数量为 。
此时我们就得到了卡特兰数的通项 ,至于具体如何计算结果将会在后面进行介绍。
2.2 括号序列
题目描述
n 对括号,则有多少种 “括号匹配” 的括号序列
思路
左括号看成 +1,右括号看成 -1,那么就和上题的进出栈一样,共有 种序列。
Example
这里举个例子
c[1,1] = 0这里是因为:1≤k<1
没有大于等于1又小于1的k所以这里是0
c[1,2]
可以计算,这里1≤k<2,所以这里k可以取一个值1
如何确定括号的序列?
首先先看右上角的那个数字,是3,我们确定了刚开始括起来的位置就是3这个地方。
再看[1,3]的那个格子,是1,所以在1的地方加括号
这篇关于Matrix Chain Multiplication using Dynamic Programming Formula的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升