子集相等性是NP完全的

子集相等性是np完全的

子集对应,也称为“子集总计”问题,是一个示例性的 NP 完全计算问题。给定一堆数字和一个客观价值,任务是确定是否存在其总数等于客观价值的数字子集。该问题的 NP 顶峰源于其通过多项式时间递减来解决各种其他 NP 完全问题的能力。不管其简单的定义如何,没有一种有效的计算可以解决所有事件的“子集对应”,这使得它在假设的软件工程和简化中具有重要意义,并且在不同领域(如密码学、资产分配和动态问题)具有功能应用。

使用的方法

子集总和的减少

从 3SAT 减少

从子集总和中减少

处理“子集公平性”是 NP 完成问题的一种方法是显示显着的 NP 完成问题(“子集总数”问题)的减少。

算法

给定一个“子集聚合”问题的案例,它是一堆整数 S 和一个价值 T 的目标。

使用类似的集合 S 和目标自尊 2T 来制作“子集权益”问题的另一个案例。

如果在“子集聚合”问题中存在 S 的子集汇总为 T,那么此时,“子集均匀性”问题中将存在一个汇总为 T 的子集2T 通过添加与其自身相似的子集。

假设在“子集总计”问题中不存在 S 的子集汇总为 T,那么在“子集公平性”问题中也不存在汇总为 2T 的子集,因为任何具有总计的子集低于2T的与其自身相加不能超过2T。

这种下降表明解决“子集公平性”问题与解决“子集聚合”问题几乎一样困难,使其成为 NP 完全问题。

示例

#include #include using namespace std;bool isSubsetSum(vector& set, int n, int sum) {   if (sum == 0) return true;   if (n == 0) return false;   if (set[n - 1] > sum) return isSubsetSum(set, n - 1, sum);   return isSubsetSum(set, n - 1, sum) || isSubsetSum(set, n - 1, sum - set[n - 1]);}bool isSubsetAggregateReduction(vector& set, int n, int sum) {   return !isSubsetSum(set, n, sum) && !isSubsetSum(set, n, 2 * sum);}int main() {   vector set = {3, 34, 4, 12, 5, 2};   int sum = 18;    if (isSubsetAggregateReduction(set, set.size(), sum)) {      cout << "No subset exists in Subset Aggregate issue that sums to " << sum << " and no subset exists that sums to " << 2 * sum << " by adding the same subset with itself." << endl;   } else {      cout << "There exists a subset in Subset Aggregate issue that sums to " << sum << " or a subset in Subset Equity issue that sums to " << 2 * sum << " by adding the same subset with itself." << endl;   }   return 0;}

输出

There exists a subset in Subset Aggregate issue that sums to 18 or a subset in Subset Equity issue that sums to 36 by adding the same subset with itself.

从 3SAT 减少

另一种方法是通过直接从一个已知的 NP 完全问题(例如 3SAT 问题)中减去它来证明“子集对应”是 NP 完成的。

算法

给出了 3SAT 问题的示例,其中包含一个联合普通结构中的布尔配方,每个条件具有三个文字。

用一堆整数和目标值再讨论一下“子集均匀性”问题,如下所示:

a.对于 3SAT 方程中的每个变量,在集合中创建一个值为 1 的数字。

b.对于 3SAT 方程中的每个附加条件,在集合中生成一个值为 2 的数字。

c.将目标值设置为 3SAT 配方中的全部附加条件和所有因素的全部数量。

如果 3SAT 方案可满足,则“子集均匀性”问题中存在一个子集,该子集通过为每个已满足的条件选择一个变量来总结目标值。

如果 3SAT 配方无法满足,那么“子集对应”问题中就没有子集可以概括为目标值,因为任何合法子集都必须包含不少于一个值为 2 的整数,与已履行的条款相关。

由于已知 3SAT 问题是 NP 完成的,因此这种下降表明“子集股权”的 NP 顶峰。

示例

#include #include using namespace std;bool ThreeSAT_Satisfiable(const vector<vector>& clauses) {   return false;}class SubsetUniformity {private:   vector numbers;   int targetValue;public:   SubsetUniformity(const vector& vars, const vector& clauses) {      for (int v : vars) {         numbers.push_back(1);      }      for (int c : clauses) {         numbers.push_back(2);      }      targetValue = vars.size() + clauses.size();   }   bool isSubsetSumPossible(int idx, int sum) {      if (sum == targetValue) {         return true;      }      if (idx >= numbers.size() || sum > targetValue) {         return false;      }      return isSubsetSumPossible(idx + 1, sum) || isSubsetSumPossible(idx + 1, sum + numbers[idx]);   }   bool hasSolution() {      return isSubsetSumPossible(0, 0);   }};int main() {   vector<vector> clauses = {      {1, 2, -3},      {-1, -2, 3},      {-1, 2, 3}   };   bool isSatisfiable = ThreeSAT_Satisfiable(clauses);   SubsetUniformity su(clauses[0], clauses[1]);   cout << "3SAT Formula is " << (isSatisfiable ? "satisfiable." : "not satisfiable.") << endl;   cout << "Subset Uniformity has " << (su.hasSolution() ? "a" : "no") << " solution." << endl;   return 0;}

输出

3SAT Formula is not satisfiable.Subset Uniformity has a solution.

结论

这两种方法都表明“子集权益”或“子集聚合”问题是 NP 完成的,因此,跟踪有效的计算来解决所有示例的问题是不可能的。科学家经常利用动态规划或其他估计程序来有效地解决此问题的可行情况。

以上就是子集相等性NP完全的的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443980.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:50:00
下一篇 2025年12月16日 05:50:40

相关推荐

  • AI应用再度崛起,文心一言再次登顶!

    据《科创板日报》,8月30日,首批8家大模型通过《生成式人工智能服务管理暂行办法》备案,分别为上海地区三家——商汤的“商量sensechat”、minimax的abab大模型、上海人工智能实验室的书生通用大模型,北京地区五家——百度文心一言、抖音的云雀大模型、百川智能的百川大模型、清华系ai公司智谱…

    2025年12月1日 科技
    000
  • 在赵巷公园里,孩子们邂逅了一场智能机器人的探秘之旅

    作为赵巷人的“后花园”,赵巷公园一直是周边社区居民热爱的小憩之地。公园内水波荡漾、树影摇曳,营造出秋日浪漫氛围。10月28日,在公园的趣汇楼里,赵巷镇举办的“探秘%ignore_a_1%”活动,吸引了辖区20组家庭参与,孩子们在这场科技感十足的手工制作中对智能机器人的知识进行了一次过瘾的探秘之旅。 …

    2025年12月1日 科技
    000
  • 调用SQL触发器执行外部程序

    标题:SQL触发器%ignore_a_1%的具体代码示例 正文:在使用SQL触发器时,有时候需要调用外部程序来处理一些特定的操作。本文将介绍如何在SQL触发器中调用外部程序,并给出具体的代码示例。 一、创建触发器首先,我们需要创建一个触发器来监听数据库中的某个事件。这里以“订单表(order_tab…

    2025年11月17日
    000
  • 在 React Query 中使用数据库进行数据筛选和排序

    在 React Query 中使用数据库进行数据筛选和排序 React Query 是一个用于管理数据的库,它的强大之处在于可以与数据库进行交互,实现数据筛选和排序的功能。在本文中,我们将演示如何在 React Query 中使用数据库进行数据筛选和排序的具体示例。 首先,为了演示方便,我们假设使用…

    2025年11月9日 web前端
    000
  • 对话系统中的上下文生成问题

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 对话系统中的上下文生成问题,需要具体代码示例 引言:对话系统是人工智能领域中的一个重要研究方向,它旨在实现人机之间自然流畅的对话交流。一个好的对话系统不仅需要能够理解用户的意图,还需要能够根据上…

    2025年11月8日 科技
    100
  • 麒麟9000s的综合性能分析

    麒麟9000s的综合性能分析 随着科技的不断进步和智能化的发展,手机作为人们生活中不可或缺的设备,其性能和体验也变得日益重要。华为作为中国手机市场的领军企业之一,一直致力于推动手机技术的发展与创新。而其最新推出的麒麟9000s处理器,作为其旗舰级芯片,备受瞩目。麒麟9000s的综合性能究竟如何?我们…

    2025年11月4日
    000

发表回复

登录后才能评论
关注微信