算法:动态规划—矩阵链相乘

问题描述

给定n个矩阵{A1,A2,…,An},其中Ai与A i+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少

解法

1.穷举法:

列举出所有可能的计算次序,并计算出每一种计算次序相应需要的数乘次数,从中找出一种数乘次数最少的计算次序。

2.动态规划–自底向上进行计算

用动态规划算法解此问题,可依据其递归式以自底向上的方式进行计算。在计算过程中,保存已解决的子问题答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量的重复计算,最终得到多项式时间的算法。
算法:动态规划—矩阵链相乘_第1张图片

建立递归关系

算法:动态规划—矩阵链相乘_第2张图片
算法:动态规划—矩阵链相乘_第3张图片
算法:动态规划—矩阵链相乘_第4张图片
算法:动态规划—矩阵链相乘_第5张图片
算法:动态规划—矩阵链相乘_第6张图片
算法:动态规划—矩阵链相乘_第7张图片
算法:动态规划—矩阵链相乘_第8张图片
算法:动态规划—矩阵链相乘_第9张图片

用动态规划法求最优解

算法:动态规划—矩阵链相乘_第10张图片
算法:动态规划—矩阵链相乘_第11张图片
算法:动态规划—矩阵链相乘_第12张图片
算法:动态规划—矩阵链相乘_第13张图片

你可能感兴趣的:(算法,算法,动态规划,数据结构)