Algorithm 布尔方程集补码

Algorithm 布尔方程集补码,algorithm,Algorithm,若我有一个n位的布尔方程组,有什么简单的方法或算法可以得到它的补集吗 例如,假设我有一个3位布尔方程集{110001},有没有简单的方法可以得到U(3位置换)下的is补集,即{00001011100101111} 谢谢大家! 运行整个U(从0到2^x-1,其中x是位数),并忽略已有的位。您可以将它们转换为数字,以便更快地检查相等性。SET[]={6,1} SET[] = {6, 1} for(i=0;i<N;i++) { if(!exists(SET)) { add(i, COMP

若我有一个n位的布尔方程组,有什么简单的方法或算法可以得到它的补集吗

例如,假设我有一个3位布尔方程集{110001},有没有简单的方法可以得到U(3位置换)下的is补集,即{00001011100101111}

谢谢大家!

运行整个U(从
0
2^x-1
,其中x是位数),并忽略已有的位。您可以将它们转换为数字,以便更快地检查相等性。

SET[]={6,1}
SET[] = {6, 1}

for(i=0;i<N;i++) {
 if(!exists(SET)) {
  add(i, COMPLEMENT_SET)
 }
}

对于(i=0;i你可以从U中减去你的集合。

我的关键点是当n增加时,算法似乎是指数的?U中的元素数量随着n呈指数增长,这意味着补码中的元素数量将呈指数增长。算法没有办法解决(这个问题的任何算法)在
n
中是指数的(或者,等价地,在
O(2^n)
中是线性的),其中
n
是位的数量。你真的在问你是否能在不到2^n步的时间内得到2^n个元素吗?或者有没有什么好的算法来推导它的补码集表示法,比如x01..x代表任何位0或1,我们能为补码集推导出这样的方程吗?但是当x相当大时,算法是指数型的吗有一种方法可以避免它,或者问题是NPC?谢谢!@koko-问题是指数增长的,但它不是NP完全的。不同的概念。@koko,它是指数型的。对我来说,它看起来基本上是最快的方法,因为否则你怎么能得到这些元素?如果你有大量的数字(例如,所有数字都将1设置为一位)您可以对它们进行预分析,以便能够跳过循环中的循环量。