我正在尝试理解我的AI教科书中的一段文字,需要一些帮助。
本质上,我的问题是,如果定义一个函数需要 2^n 位,为什么在 n 个属性上有 2^(2^n) 个函数?
以下是来自课本的段落(来源:AI: A Modern Approach, Stuart Russell and Norvig):
决策树对于某些类型的函数是好的,而对于另一些类型的函数则不好。是否存在一种表示方式,对于所有类型的函数都有效?不幸的是,没有。我们可以用一种非常普遍的方式来证明这一点。考虑 n 个属性上的所有布尔函数的集合。这个集合中有多少个不同的函数?这只是我们可以写下的不同真值表的数量,因为函数是由它的真值表定义的。真值表有 2^n 行,因为每个输入案例都由 n 个属性描述。我们可以将表格的“答案”列视为一个2^n 位数,它定义了函数。无论我们使用什么函数表示法,某些函数(实际上几乎所有函数)都至少需要那么多位来表示。
如果定义一个函数需要 2^n 位,那么在 n 个属性上有 2^(2^n) 个不同的函数。
第二个问题是:为什么我们需要 2^n 位数(见上面粗体部分),我以为我们只需要 n 位数,例如,如果我们有 3 个属性,我们可以定义 2^3=8 个函数,因此只需要 3 位来定义所有 8 个函数(000、001、010、011 等)。
我已经考虑了一段时间了,不确定我忽略了什么,感谢您花时间研究这个问题!
回答:
我想我明白了,而且我认为你的答案可能有一个错误…
让我根据我对你的 3 个属性示例的理解来解释一下…
n = 3
第 1 行 000
第 2 行 001
第 3 行 010
…
第 8 行 111
函数 0:对于每一行都是假,因此 0 0 0 0 0 0 0 0(8 个 ‘0’,因为有 8 行)
函数 1:对于第 1 行为真,其余为假:00000001
函数 2:对于第 2 行为真,其余为假:00000010
…
因此有 2^8 个函数,即 2^(2^3) 即 2^(2^n)。
对吗?