• 首先我的结对伙伴给我提出了一个这样的问题:
  • 使用分支界限法求解“背包问题”的步骤。
  • 当时我是这样回答他的:
  • 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上面的备注······

对于分支界限法的理解(补出门门票-week13,结对伙伴对我提的问题的答案)的更多相关文章

  1. 对"构建之法“的理解和困惑

    对"构建之法"的理解和困惑        本人"学沫沫"一个,对于之前的编程学习虽不大"感冒",但秉着对自己负责的态度进行了基础学习.   ...

  2. rt-thread中软件定时器组件超时界限的一点理解

    @2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...

  3. git的使用理解(分支合并的使用理解,多人编程的解决方案)

    本文主要记录了对git日常使用的一些理解,主要是对git分支的一些感悟. git强大的版本控制系统,之前也使用过SVN,感觉上git对于多人开发的版本控制更加强大,特别是最近对git分支的使用,更是深 ...

  4. 多元Huffman编码变形—回溯法

    一.问题描述 描述 在一个操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆.规定在合并过程中最多可以有m(k)次选k堆石子合并成新的一堆,2≤k≤n,合并的费用为新的一堆的石子数.试设计一个算法 ...

  5. 数据结构(DataStructure)与算法(Algorithm)、STL应用

    catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...

  6. 算法设计与分析基础 (Anany Levitin 著)

    第1章 绪论 1.1 什么是算法 1.2 算法问题求解基础 1.2.1 理解问题 1.2.2 了解计算设备的性能 1.2.3 在精确解法和近似解法之间做出选择 1.2.4 算法的设计技术 1.2.5 ...

  7. 启发式搜索技术A*

    开篇 这篇文章介绍找最短路径的一种算法,它的字我比较喜欢:启发式搜索. 对于入门的好文章不多,而这篇文章就是为初学者而写的,很适合入门的一篇.文章定位:非专业性A*文章,很适合入门. 有图有真相,先给 ...

  8. 基于分支限界法的旅行商问题(TSP)一

    旅行推销员问题(英语:Travelling salesman problem, TSP)是这样一个问题:给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路.它是组合优化 ...

  9. 利用分支限界法求解单源最短路(Dijkstra)问题

    分支限界法定义:采用Best fist search算法,并使用剪枝函数的算法称为分支界限法. 分支限界法解释:按Best first的原则,有选择的在其child中进行扩展,从而舍弃不含有最优解的分 ...

随机推荐

  1. js数组使用JSON.stringify()和toString()的区别,JSON.parse

    JSON.stringify()中的<br><br>var arr = [1,2,3,4]; console.log(arr.toString()); // 1,2,3,4 a ...

  2. 使input文本框不可编辑的3种方法

    一:disabled disabled 属性规定应该禁用 input 元素,被禁用的 input 元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传值.设置后文字的颜色会变成灰色.d ...

  3. 第一个bug

    话不多说自己遇到的第一个小程序bug 需要渲染渲染多重元素,这个没什么.but当你要获取这个大样式的id进行各种操作时,你需要每一个子节点都加上data-=""属性这样就很麻烦了, ...

  4. VS2017 启动调试报错:ID为{....}进程未启动解决方案

    今天遇到这么一个问题,打开VS启动调试,始终报错,如下图: 我重启VS,甚至重启电脑都不得行,那个进程号还在变化,就在网上查找资料,各式各样的解决方案,这里我记录我成功的方案. 打开项目文件地址,在解 ...

  5. 改造 vue-cli 脚手架

    改造 vue-cli 脚手架 注意,这里使用的 vue-cli 的版本为 2.8.2,不同版本的 vue-cli 可能会有些许不一样. 一.配置多页面 项目开发目录: 需要注意一点,每个页面的文件夹命 ...

  6. ASP.NET WebForm 通过 PagedDataSource 实现 Repeater 的分页

    1.效果图&代码说明   1.效果图     2.代码说明 1.翻页按钮         前台两个LinkButton(上一页.下一页),设置不同的CommandName.CommandArg ...

  7. jQuery框架-2.jQuery操作DOM节点与jQuery.ajax方法

    一.jQuery操作DOM 内部插入操作: append(content|fn):向每个匹配的元素内部追加内容. prepend(content):向每个匹配的元素内部前置内容. 外部插入操作: af ...

  8. 爬虫抓包工具Charles设置

    1.安装注册 感谢https://www.jianshu.com/p/89111882fa99提供注册码软件去官网下载安装即可. Registered Name:https://zhile.io Li ...

  9. maven工程 java 实现文件上传 SSM ajax异步请求上传

    java ssm框架实现文件上传 实现:单文件上传.多文件上传(单选和多选),并且用 ajax 异步刷新,在当前界面显示上传的文件 首先springmvc的配置文件要配置上传文件解析器: <!- ...

  10. 关系型数据库工作原理-数据特征统计分析(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...