我正在阅读以下位置的数组和位向量集。
http://www.brpreiss.com/books/opus4/html/page390.html
在本节中,我们考虑有限宇宙上的有限集。 具体来说,我们考虑的宇宙是{0,1,...,N-1},这是一组 对于一些固定的和相对的,整数在0到N-1的范围内 小的N.
设U = 0,1,...,N-1}为宇宙。我们希望的每一套 代表是U的子集.U的所有子集的集合称为 U的幂集合被写为2 ^ U(即2的U的幂)。从而, 我们希望代表的集合是2 ^ U的元素 集合U中的元素数量,写入| U |,是N.类似地,| 2 ^ U | = 2 ^ | U | = 2 ^ N。这种观察应该是显而易见的:对于每一个元素 通用集合U只有两种可能性:它是,或者 它不是,给定集合的成员。
这表明了相对简单的表现形式 2 ^ U的元素 - 布尔值数组,每个元素对应一个 通用集。通过在U中使用数组下标,我们可以表示 隐含地设置。即,如果是第i个数组,我是该集合的成员 元素是真的。
我对上述文字的疑问是
作者的意思是什么?#34; U的所有子集的集合被称为U的幂集并被写为2 ^ U(即2的U的幂)?例如,如果我们有U = {0,1,2},那么我们有2 ^ 3 = 8是所有子集的集合但我们有超过8例如{empty set},{0},{1}, {2},{0,1},{0,2},{0,3},{1,2}和{1,2,3}为9.如果我错了,请纠正我?
作者和为何如何提出2的力量而不是像3等其他任何数字?
请澄清。
答案 0 :(得分:3)
@haccks给出的第一个问题的答案是正确的,但我认为理解第二个问题实际上更重要,因为它确实显示了一个阵列到底是什么。
您将集{0,1,2}
表示为位数组,如下所示:
2 1 0 <-- set members
0 0 0 <-- bit array value (present/not present)
(由于一会儿就会明白的原因,我已经向后订购了这套装置。)
位数组[0,0,0]
表示空集。没有任何集合成员存在。子集{1,2}
表示为:
2 1 0 <-- set members
1 1 0 <-- bit array value
每个成员都可以存在或不存在;零或一。每个成员有两种可能性,这意味着我们拥有一个包含3个元素的集合的2*2*2=2^3
个子集。因此,这是作者提出2
而不是其他数字的地方。
您现在应该能够看到位数组只不过是带有|U|
位的二进制数。实际上,生成幂集的一种方法是从0
到(2^|U|)-1
计算二进制数:
0 000 {}
1 001 {0}
2 010 {1}
3 011 {0,1}
4 100 {2}
5 101 {0,2}
6 110 {1,2}
7 111 {0,1,2}
现在还应该显而易见的是,我已经向后排序了集合,以便第一个元素与对应于位数组的二进制数的LSB对齐。您可以通过其他方式对其进行排序,但bit 0
对应U[0]
似乎更合乎逻辑。
答案 1 :(得分:1)
U= {0,1,2}
的权力集将包含
{empty set}
{0}
{1}
{2}
{0,1}
{0,2}
{1,2}
{0,1,2}
等于2 | U | 。
我想知道你是怎么来到子集{0,3}
和{1,2,3}
的?