1.1 构造最优值矩阵 ,并将断开位置记录在断开位置矩阵中

def matrixChain():

"""

计算最优值关系矩阵

:return: None

"""

for i in range(2, n + 1):  # 对角线

for r in range(1, n - i + 2):  # 行

c = r + i - 1  # 列

# 找到 m[r][c] 的最小值并计入列表

m[r][c] = m[r][r] + m[r + 1][c] + p[r - 1] * p[r] * p[c]

s[r][c] = r

# 从 r+1 道 c-1 寻找 m[r][c] 的最小值

for j in range(r + 1, c):

t = m[r][j] + m[j + 1][c] + p[r - 1] * p[j] * p[c]

if t < m[r][c]:

m[r][c] = t

# 将子序列 r-c 段中 j 的位置存入 s ,此处断开可以得到最优解

s[r][c] = j

1.2 根据断开位置矩阵计算得出最优解

def traceBack(r: int, c: int) -> None:

"""

根据 s 记录的各个子段的最优解,将其输出

:param r: 行

:param c: 列

:return: None

"""

if r == c:

return

traceBack(r, s[r][c])

traceBack(s[r][c] + 1, c)

# 描述括号位置

print(f' 左括号 : A{s[r][c]} 之前 \t 与之对应的右括号 : A{c} 之后 ')

2. 算法实现 - 完整代码

print(' 请输入连乘矩阵的维数: ')

print(' 示例: A[2*5],B[5*10],C[10*2]')

print(' 应输入: 2 5 10 2( 使用空格隔开 )')

p = list(map(int, input().split()))  #外汇跟单gendan5.com  获取用户输入连乘矩阵维数

n = len(p) - 1  # 计算用户输入矩阵个数

m = [[0 for i in range(n + 1)] for j in range(n + 1)]  # 初始化最优解列表

s = [[0 for i in range(n + 1)] for j in range(n + 1)]  # 初始化断开位置列表

def matrixChain():

"""

计算最优值关系矩阵

:return: None

"""

for i in range(2, n + 1):  # 对角线

for r in range(1, n - i + 2):  # 行

c = r + i - 1  # 列

# 找到 m[r][c] 的最小值并计入列表

m[r][c] = m[r][r] + m[r + 1][c] + p[r - 1] * p[r] * p[c]

s[r][c] = r

# 从 r+1 道 c-1 寻找 m[r][c] 的最小值

for j in range(r + 1, c):

t = m[r][j] + m[j + 1][c] + p[r - 1] * p[j] * p[c]

if t < m[r][c]:

m[r][c] = t

# 将子序列 r-c 段中 j 的位置存入 s ,此处断开可以得到最优解

s[r][c] = j

def traceBack(r: int, c: int) -> None:

"""

根据 s 记录的各个子段的最优解,将其输出

:param r: 行

:param c: 列

:return: None

"""

if r == c:

return

traceBack(r, s[r][c])

traceBack(s[r][c] + 1, c)

# 描述括号位置

print(f' 左括号 : A{s[r][c]} 之前 \t 与之对应的右括号 : A{c} 之后 ')

matrixChain()

traceBack(1, n)

print(f' 乘法次数 : {m[1][n]}')

矩阵连乘问题 Python 动态规划相关推荐

  1. python连乘函数_动态规划之矩阵连乘问题Python实现方法

    本文实例讲述了动态规划之矩阵连乘问题Python实现方法.分享给大家供大家参考,具体如下: 给定n个矩阵{A1,A2,-,An},其中Ai与Ai+1是可乘的,i=1,2 ,-,n-1.如何确定计算矩阵 ...

  2. 矩阵连乘算法代码JAVA_矩阵连乘问题的动态规划算法(java)

    /** * 下面是矩阵连乘问题的动态规划算法 * 假设有6个矩阵: * A1 A2A3 A4 A5A6 * 30*35 35*15 15*5 5*10 10*20 20*25 则matrixChain ...

  3. 混淆矩阵是什么?Python多分类的混淆矩阵计算及可视化(包含原始混淆矩阵及归一化的混淆矩阵):基于skelarn框架iris数据集

    混淆矩阵是什么?Python多分类的混淆矩阵计算及可视化(包含原始混淆矩阵及归一化的混淆矩阵):基于skelarn框架iris数据集 目录

  4. 矩阵相乘的strassen算法_矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)...

    矩阵乘法的Strassen 这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率. 先来看看咱们在高等代数中学的普通矩阵的乘法 两个矩阵相乘 上边这种普通求解方法的复杂度为: O(n3) 也称 ...

  5. python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!

    点击关注我哦 一篇文章带你了解矩阵乘法的纯Python实现 在<这篇文章>中,我们有简单提到"矩阵乘法"的相关知识,如果你不记得了,可以复习一下这张图片. 想起来了没? ...

  6. 剑指offer 矩阵中的路径 @python

    剑指offer 矩阵中的路径 @python 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向 ...

  7. 矩阵乘法的纯Python实现 | 离开Python库!!

    点击关注我哦 一篇文章带你了解矩阵乘法的纯Python实现 在<这篇文章>中,我们有简单提到"矩阵乘法"的相关知识,如果你不记得了,可以复习一下这张图片. 想起来了没? ...

  8. python实现录音小程序 界面_python怎么对矩阵添加一列python实现录音小程序

    本文为大家分享了python实现录音小程序的具体代码,供大家参考,具体内容如下 学习目标: 学习电脑网从python实现录音小程序分析来看,对python实现录音小程序的结果.掌握python的pya ...

  9. 模型效果评价—混淆矩阵(原理及Python实现)

      对于分类模型,在建立好模型后,我们想对模型进行评价,常见的指标有混淆矩阵.KS曲线.ROC曲线.AUC面积等.也可以自己定义函数,把模型结果分割成n(100)份,计算top1的准确率.覆盖率.   ...

最新文章

  1. array.array python yhzf
  2. PushYourself
  3. 微型计算机引脚,微型计算机硬件基础8086引脚.doc
  4. 数学狂想曲(十二)——熵(2), 阴影面积, 肺炎版《黄冈密卷》
  5. 2021 年前端趋势预测
  6. 创建数据库python: can‘t open file ‘manage.py‘: [Errno 2] No such file or directory报错
  7. LeetCode-Maximal Rectangle-最大矩形
  8. ElasticSearch面试 - es 写入数据的工作原理是什么啊?
  9. python函数——形参中的:*args和**kwargs
  10. windos 为什么会突然服务停止了_女生为什么会突然说分手?
  11. python爬取快手视频并批量下载
  12. Verilog语法练习
  13. 4.re包学习(正则表达式)
  14. SUSE收购Rancher Labs,云原生时代大幕拉开
  15. 改变磁盘格式gpt_改变游戏规则或结束游戏? 准备好参加GPT-3
  16. BUUCTF [WUSTCTF2020]alison_likes_jojo
  17. 浙大翁恺pat练习题_中国大学MOOC-翁恺-C语言-PAT习题及解答-第二周
  18. 最新计算机毕业设计选题推荐 - 毕设选题建议
  19. 涨知识了,原来微信可以一键找到对方位置
  20. python读取文件夹下所有图片

热门文章

  1. linux目录表及功能n鸟哥,鸟哥linux私房菜_笔记_Linux的文件权限与目录配置
  2. 远程无法连接svn服务器失败_windows vscode 远程连接linux服务器
  3. dg oracle 切换模式_oracle dg切换操作示例
  4. matlab根据成绩划分等级_学生成绩分等级:ABCD,分优秀 良好合格 不及格,一组公式即可解决...
  5. layui数据表格自定义复选框表头_layui中table表头样式修改方法
  6. 源服务器信息,软件源搭建
  7. 3dmax挤出制作窗花_「教程」3DMAX制作藤编家具模型,超实用教程,收藏备用
  8. 支付二维码php能实现吗_(实用篇)微信支付扫码支付php版
  9. ubuntu14.04下apt-get install出现E: Sub-process /usr/bin/dpkg returned an error code 解决方法
  10. 神奇的JavaScript之正则