zoukankan      html  css  js  c++  java
  • 算法分析与设计(work8)

    示例

    (n=6)
    (P=<5,10,6,20,2,25,30>)

    • (A_{1}:5 imes 10)
    • (A_{2}:10 imes 6)
    • (A_{3}:6 imes 20)
    • (A_{4}:20 imes 2)
    • (A_{5}:2 imes 25)
    • (A_{6}:25 imes 30)

    (m[i,j])表示计算(A[i,j])所需的最少运算次数,(s[i,j])表示计算(A[i,j])的最少运算次数是最后一次运算的位置

    (Step1)

    (r=1):
    (m[1,1]=0), (m[2,2]=0), (m[3,3]=0), (m[4,4]=0), (m[5,5]=0), (m[6,6]=0).

    (Step2)

    (r=2),那么需要枚举的 (iin (1,2,3,4,5)) , (jin (2,3,4,5,6))

    • (m[1,2]=5 imes 10 imes 6=300)
    • (m[2,3]=10 imes 6 imes 20=1200)
    • (m[3,4]=6 imes 20 imes 2=240)
    • (m[4,5]=20 imes 2 imes 25=1000)
    • (m[5,6]=2 imes 25 imes 30=1500)

    (Step3)

    (r=3),那么需要枚举的 (iin (1,2,3,4)) , (jin (3,4,5,6))

    • (m[1,3]=min(m[1,2]+m[3,3]+P_{0} imes P_{2} imes P_{3},m[1,1]+m[2,3]+P_{0} imes P_{1} imes P_{3}=min(300+600,1200+1000)=900), (s[1,3]=1)
    • (m[2,4]=min(m[2,3]+m[4,4]+P_{1} imes P_{3} imes P_{4},m[2,2]+m[3,4]+P_{1} imes P_{2} imes P_{4})=min(1200+400,240+120)=360), (s[2,4]=2)
    • (m[3,5]=min(m[3,4]+m[5,5]+P_{2} imes P_{4} imes P_{5},m[3,3]+m[4,5]+P_{2} imes P_{3} imes P_{5})=min(240+300,1000+3000)=540), (s[3,5]=4)
    • (m[4,6]=min(m[4,5]+m[6,6]+P_{3} imes P_{5} imes P_{6},m[4,4]+m[5,6]+P_{3} imes P_{4} imes P{6})=min(1000+1500,1500+1200)=2500), (s[4,6]=5)

    (Step4)

    (r=4),那么需要枚举的 (iin (1,2,3)) , (jin (4,5,6))

    • (m[1,4]=min(m[1,3]+m[4,4]+P_{0} imes P_{3} imes P_{4},m[1,2]+m[3,4]+P_{0} imes P_{2} imes P_{4},m[1,1]+m[2,4]+P_{0} imes P_{1} imes P_{4})=min(900+200,300+240+60,360+100)=460), (s[1,4]=1)
    • (m[2,5]=min(m[2,4]+m[5,5]+P_{1} imes P_{4} imes P_{5},m[2,3]+m[4,5]+P_{1} imes P_{3} imes P_{5},m[2,2]+m[3,5]+P_{1} imes P_{2} imes P_{5})=min(360+500,2200+5000,540+1500)=860), (s[2,5]=4)
    • (m[3,6]=min(m[3,5]+m[6,6]+P_{2} imes P_{5} imes P_{6},m[3,4]+m[5,6]+P_{2} imes P_{4} imes P_{6},m[3,3]+m[4,6]+P_{2} imes P_{3} imes P_{6})=min(540+4500,1740+300,2500+3600)=2040), (s[3,6]=4)

    (Step5)

    (r=5),那么需要枚举的 (iin (1,2)) , (jin (5,6))

    • (m[1,5]=min(m[1,4]+m[5,5]+P_{0} imes P_{4} imes P_{5},m[1,3]+m[4,5]+P_{0} imes P_{3} imes P_{5},m[1,2]+m[3,5]+P_{0} imes P_{2} imes P_{5},m[1,1]+m[2,5]+P_{0} imes P_{1} imes P_{5})=min(460+250,900+1000+2500,300+540+750,860+1250)=710), (s[1,5]=4)
    • (m[2,6]=min(m[2,5]+m[6,6]+P_{1} imes P_{5} imes P_{6},m[2,4]+m[5,6]+P_{1} imes P_{4} imes P_{6},m[2,3]+m[4,6]+P_{1} imes P_{3} imes P_{6},m[2,2]+m[3,6]+P_{1} imes P_{2} imes P_{6})=min(860+7500,360+1500+600,1200+1200+6000,2040+1800)=2460), (s[2,6]=4)

    (Step6)

    (r=6),那么需要枚举的 (iin (1)) , (jin (6))

    • (m[1,6]=min(m[1,5]+m[6,6]+P_{0} imes P_{5} imes P_{6},m[1,4]+m[5,6]+P_{0} imes P_{4} imes P_{6},m[1,3]+m[4,6]+P_{0} imes P_{3} imes P_{6},m[1,2]+m[3,6]+P_{0} imes P_{2} imes P_{6},m[1,1]+m[2,6]+P_{0} imes P_{1} imes P_{6})=min(710+3750,460+1500+300,900+2500+3000,300+2040+900,2460+1500)=2260), (s[1,6]=4)

    (Step7)

    • (ans=2260)
    • 运算顺序:
      ((1)、) (s[1,6]=4 ightarrow ((A_{1} imes A_{2} imes A_{3} imes A_{4}) imes (A_{5} imes A_{6})))
      ((2)、) (s[1,4]=1 ightarrow ((A_{1} imes (A_{2} imes A_{3} imes A_{4})) imes (A_{5} imes A_{6})))
      ((3)、) (s[2,4]=2 ightarrow ((A_{1} imes (A_{2} imes (A_{3} imes A_{4}))) imes (A_{5} imes A_{6})))
    越自律,越自由
  • 相关阅读:
    Akka框架使用注意点
    log4j配置文件加载
    iptables常规使用
    linux ipv6临时地址
    组合数取模Lucas定理及快速幂取模
    Shell变量的定义与赋值操作注意事项
    虚拟机软件bochs编译使用问题
    实现一个简陋操作系统的相关笔记日志
    linux内核增加系统调用--Beginner's guide
    c语言几种异常
  • 原文地址:https://www.cnblogs.com/ha-chuochuo/p/14752238.html
Copyright © 2011-2022 走看看