矩阵连乘和0-1背包问题的动态规划算法
一、实验目的
本次实验是针对动态规划算法运用的算法设计及应用练习,旨在加深学生对该部分知识点的理解,提高学生运用该部分知识解决问题的能力。
三、 实验项目
请用动态规划法对下列问题进行求解。题目(4选2):
- 要求写相关最优子结构的证明
1.矩阵连乘问题
2.0-1背包问题
3.最长公共子序列问题
4.铺油管道问题(从前往后或从后往前均可)
四、实验过程
(一)题目一:矩阵连乘问题
- 题目分析
给定由n个矩阵构成的序列{A1,A2,…,An},对乘积A1A2…An,找到最小化乘法次数的加括号方法。 - 算法构造
在此论证算法设计中的一些必要的设计依据。
以k为位置划分:
for(k=i;k<=j-1;k++)
{
q=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];
if(q<m[i][j])
{
m[i][j]=q;
s[i][j]=k;
}
} - 算法实现
程序源代码(请写入必要的注释)。
package com.cn;
public class Matrix {
public static void main(String[] args) {