算法证明题 8.9 HITTING SET

本文详细介绍了HITTING SET问题,即给定一组集合和一个阈值b,寻找一个不超过b个元素的集合H,使得H与所有集合Si有交集。通过证明HITTING SET是NP的以及将它归约到NP完全问题Vertex Cover,展示了HITTING SET是NP完全问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 题目描述
    In the HITTING SET problem,we are given a family of sets{S1,S2,…,Sn} and a budget b,and we wish to find a set H of size<=b which intersects every Si, if such an H exists.In other words, we want H∩Si≠∅ for all i.

    Show that HITTING SET is NP-complete.

  • 自己对题目的翻译
    题目定义了一个HITTING SET的问题:给定集合的集合(即若干个集合){S1,S2,…,Sn} 和阈值b,需要找出一个集合H,其元素个数不大于阈值b。如果存在,还要求对于所有i,H和Si的交集非空。证明,这个问题为NP完全问题。

  • 初步分析
    如何才会有集合H存在呢?若我们能找到满足条件的最小集合H’,且H’的元素个数小于等于阈值b,那么就一定存在H。反之,若我们找到的满足条件的最小集合H’的元素个数大于阈值b,那么就不存在H。

  • 证明总述
    要证一个问题是NP完全问题,需要证明该问题是NP的,并且该问题是NP难(NP-hard)的。

  • 证明该问题是NP的
    假设已给出集合H,我们需要来判断是否是HITTING SET,也就是看下述的两个条件是否同时满足。

    1、遍历H,看H的元素个数是否小于阈值b
    2、遍历S集合组,看是否都满足和H取交集为非空,也即看H中是否恰好有该S集合中的至少一个元素。

    假设S集合组中元素个数最大为m,那么我们可以在O(mn)的时间复杂度下得出结果,也即在多项式的时间内得到结果。

  • 证明该问题是NP-hard的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值