Skip to content

2.3 一个简单的优化 #11

@sssn-tech

Description

@sssn-tech

作者在2.3小节写到

完全背包问题有一个很简单有效的优化,是这样的:若两件物品 $$i$$ , $$j$$ 满足 $$C_i \le C_j$$$$W_i \ge W_j$$,则将可以将物品 $$j$$ 直接去掉,不用考虑。
这个优化的正确性是显然的:任何情况下都可将价值小费用高的 $$j$$ 换成物美价廉的 $$i$$ , 得到的方案至少不会更差。对于随机生成的数据,这个方法往往会大大减少物品的件数,从而加快速度。然而这个并不能改善最坏情况的复杂度,因为有可能特别设计的数据可以一件物品也去不掉。

思考这样的问题, 背包空间为5, 只有有两件物品:

  • A: 代价=3, 收益=4, 性价比=1.33
  • B: 代价=5, 收益=5, 性价比=1

如果按照作者的理解, 将物品B删除, 则最终收益只有3. 而实际上可以选择B获得总收益5
性价比高的物品在空间限制中也许并不一定表现更好

这也许是作者的失误, 也有可能是我误解了, 不知道有没有朋友可以解释

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions