以下是我要解决的问题......
显示n个变量的布尔函数的数量由重现
给出T(1)= 4
T(n)=(T(n-1))^ 2
解决T(n)。
我一直在通过多种不同的方式思考这个问题,但对我来说唯一有意义的是T(n)将是O(1),因为
T(n)= T(n-1)= T(n-2)= T(n-3)= ... = T(ni)并且使用i = n-1将得到T(n) = 4
这意味着T(n)是O(1)并且平方它不会改变任何东西
T(n)=(T(n-1))^ 2 = T(n-1)* T(n-1)... = 4 * 4 = 16
这意味着在这种情况下T(n)也是O(n)。这是正确的想法还是我完全脱离了?任何帮助都会非常感激。
答案 0 :(得分:0)
这里有两个独立的问题:
让我们依次解决每个问题。
让我们从单个变量的布尔函数开始。这些函数将0或1分配给输入0,将0或1分配给输入1.这意味着有四种可能的功能基于这些可能的输出。事实上,你可以在这里列出所有内容:
f(0) = 0 g(0) = 0 h(0) = 1 i(0) = 1
f(1) = 0 g(1) = 1 h(1) = 0 i(1) = 1
因此,T(1)= 4。
现在,让我们考虑一下有多少(n + 1)个变量布尔函数。你可以想到一个(n + 1)变量布尔函数f(b 1 ,b 2 ,...,b n , b n + 1 )由另外两个n变量布尔函数g和h定义:
g(b 1 ,b 2 ,...,b n )= f(b 1 ,b 2 ,...,b n ,0)
h(b 1 ,b 2 ,...,b n )= f(b 1 ,b 2 ,...,b n ,1)
换句话说,对于任何一对n变量布尔函数g和h,您可以导出唯一的(n + 1)变量布尔函数。存在T(n) 2 对n变量布尔函数,因此(n + 1) - 变量布尔函数的总数是T(n) 2 。因此,T(n + 1)= T(n) 2 。
现在,我们必须弄清楚如何解决复发问题
T(1)= 4
T(n + 1)= T(n) 2
这是尝试展开前几个术语的好地方:
这些都是2的幂,因此对于k的各种选择,将它们重写为2 k 可能是个好主意。这样做会产生
由此看来,模式似乎是T(n)= 2 2 n 。我们可以通过归纳形式化这个:
所以一切都结束了。
还有另一种思考方式。任何n个布尔变量的字符串都可以被认为是一个二进制数,范围从0到2 n - 1.也就是说,有两个 n 选择n个布尔变量。对于每个选项,函数有两个可能的输出,0或1.因此,您可以将n变量布尔函数的数量视为一组2 n中的函数数元素到一组两个元素。在一个输入上选择函数的输出完全独立于另一个输入上函数的输出选择,所以我们做出2 n 独立决定是否分配0或1。有两种 2 n 方法可以做到这一点,匹配之前的界限。
希望这有帮助!