algorithm - 计算一组被随机子集覆盖的概率

标签 algorithm set

假设这两个集合作为输入:

  • 一组U作为universe
  • 还有一组 S 包含 U 的一些子集。

S 的成员分配有随机 标志 0 或 1。对于 S 的每个成员,标志 1 的概率是 < em>p 并且标志 0 是 (1-p)

所需的输出是:'Union of flag 1 subsets in S = U'

尽管考虑 S 中标志 1 子集的所有可能组合是导致输出的简单算法,但这种蛮力方法的运行时间显然是指数级的。

是否有任何多项式时间算法可以得出精确或近似的输出?或者我们可以将问题简化为任何著名的问题,例如 set-cover?

最佳答案

得到一个确切的答案是#P-hard(计算 NP 的模拟,因此至少同样困难),因为这个问题概括了单调的 2-CNF-SAT,它被称为#P-hard(威尔士,多米尼克; Gale, Amy (2001),“计数问题的复杂性”,复杂性方面:算法、复杂性和计算代数的迷你类(class):数学研讨会,凯库拉,2000 年 1 月 7-15 日,第 115 页,定理 57.)。归约是将U设置为子句标识符的集合,并让S中的每个子集成为某个变量出现的子句集合。编辑:为每个集合设置 p = 1/2,natch。

关于algorithm - 计算一组被随机子集覆盖的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52579747/

相关文章:

r - 将网络分解为具有相同顶点数的组件

algorithm - 合并在归并排序算法中只调用一次

循环200到205的Python整数

javascript - 将 javascript 计算样式从一个元素设置/复制到另一个元素

c++ - 在 'set' 中包含一个 'struct'

javascript - 如何可靠地检查对象是 EcmaScript 6 Map/Set?

algorithm - 将自然数表示为不同平方和

algorithm - 在 (x,y) 点的集合上生成图形

java - 为heapsort优化堆结构

python-3.x - 如果我在带括号的列表中有重复项,我该怎么办