algorithm - 生成所有可能组合的分类和复杂性:P、NP、NP-Complete 或 NP-Hard
问题描述
该算法需要从给定列表中生成所有可能的组合(不包括空集)。
list => [1, 2, 3]
combinations => [{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}]
该算法将花费 O(2 n ) 时间复杂度来生成所有组合。但是,我不确定改进的算法是否可以降低时间复杂度。如果存在改进的算法,请分享您的知识!
如果它需要 O(2 n ) 是指数的,我想了解一下这个算法属于 P、NP、NP-Complete 或 NP-Hard 的哪个类。提前致谢 :)
解决方案
P、NP、NP-complete 和 NP-hard 都是决策问题的类别,其中没有一个包含涉及非二进制输出的问题(例如这个枚举问题)。
人们经常将FNP中的问题通俗地称为 NP 中的问题。这个问题也不存在于 FNP 中,因为关系的输出字符串的长度必须受输入长度的某个多项式函数的限制。这可能是 FNP 难的,但我们正在进入即使是研究生 CS 教育也无法涵盖的杂草。如果您足够关心,值得在 CS Stack Exchange 上询问。
推荐阅读
- mysql - ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Ubuntu 20.04
- excel - VBA Selenium Chrome:如何更改链接
- html - 如何保存和使用来自输入类型收音机的数据
- java - 用于 ValueObject 层次结构的 Jackson 序列化器 - 多态
- python - 如何使用 fpdf 将表格添加到 pdf 页面中
- ubuntu - ssh 更改默认身份验证
- git - 带有壁球的 Git Workflow 短期功能分支
- python - python中的语音识别在linux中不起作用
- javascript - 如何将子组件数据传递给父组件
- javascript - WooCommerce 在使用浏览器后退按钮和页面刷新后将产品变体列表重置为第一个?