zoukankan      html  css  js  c++  java
  • 对于分支界限法的理解(补出门门票-week13,结对伙伴对我提的问题的答案)

    • 首先我的结对伙伴给我提出了一个这样的问题:
    • 使用分支界限法求解“背包问题”的步骤。
    • 当时我是这样回答他的:
    • ub=v+(W-w)x(v(i+1)/w(i+1))
    • 这个问题我在课上也没有理解清楚,因为我不知道ub是怎么算出来的。。。(虽然公式给了我,但我还是不理解)所以我准备周五去问问小助教这个问题如何求解,问题答案将在这周博客内容里体现。
    • 我问过小助教之后,他从PPT下拉出来了备注(我居然忽略了备注)
    • 于是我就把电脑抱回去自己看了。

    对于分支界限法的疑惑

    • 1、ub是什么,为什么背包没装物品的时候ub可以是100,也可以是60?
    • 2、为什么当背包中只存在物品1的时候,ub是会发生改变的?

    问题的答案(自己理解的)

    • 1、ub是理论上的最优上界,就是我要放的东西(假如说是物品1)要把背包放满能值多少钱。
    • 那么为什么会等于100呢?物品1重量不是4吗?最多不是只能放两个ub=80吗?
    • 是的,没错,但我们这里说ub是理论上的最优上界。我们要考虑的仅仅是背包的容量还有物品的单价,不去考虑物品的总重量(40),只考虑单价的重量(10)。于是ub=10x10=100。
    • 那么为什么当我们不放物品1的时候ub=60呢?
    • 这就要用到公式了:ub=v+(W-w)x(v(i+1)/w(i+1))
    • 当我们不放物品1时,第二顺位要放的物品是物品2,所以公式中的v(i+1)就等于物品2的价值(42),w(i+1)就等于物品2的重量(7)。
    • 而因为我们什么东西也没有放。
    • 所以v=0,w=0,W还是不变等于10。
    • 所以当我们不放物品1时ub=10x6=60。
    • 2、当背包中只存在物品1时,ub之所以会变化是因为接下来要放的东西不同了。
    • 在ub=76的时候,背包中接下来要放的是物品2。
    • 也就是说,此时的v(i+1)=42、w(i+1)=7。
    • 但物品2的重量加上物品1的重量等于11,超过了背包容量(10)。所以我们接下来要放物品3。
    • 那么当我们要放物品3时,此时v(i+1)和w(i+1)已经不再是物品2的值了,而是v(i+1)等于物品3的v3=25、w(i+1)等于物品3的w3=5。
    • 所以此时公式应该是:40+(10-4)×5=70。

    感想

    • 其实PPT下面的备注说的已经非常的清楚,但是我还是希望我能用自己理解的方式写在博客中。
    • 而且我一开始真的没看懂PPT上面的备注······
  • 相关阅读:
    为初学者解释下命名空间
    面向对象的思想
    SELECT查询结果集INSERT到数据表
    SQL Server事务
    Sql Server中的谓词和运算符
    SQL查询语句执行的逻辑顺序
    浏览器中的流
    CSS盒子模型
    ArcGIS提取水系并进行生态敏感性分析
    ENVI提取水系并进行生态敏感性分析
  • 原文地址:https://www.cnblogs.com/Mosemonkey/p/8001732.html
Copyright © 2011-2022 走看看