Set Size

Set Size

The number of elements in a set $S$ is called its size or cardinality, and denoted $\vert S \vert$ or $\# S$.

For example,

  • Bits: $\vert\{0, 1\}\vert = 2$
  • Coin: $\vert\{\text{heads, tails}\} \vert = 2$
  • Die: $\vert\{1, 2, 3, 4, 5, 6\}\vert = 6$
  • Digits: $\vert\{0, 1, \dots, 9\}\vert = 10$
  • Letters: $\vert \{ a, \dots, z\} \vert = 26$
  • Empty set: $\vert \emptyset \vert = 1$
  • Integers: $\vert \mathbb{Z}\vert = \vert \mathbb{N} \vert = \vert \mathbb{P} \vert = \infty$ (Countably infinite $\aleph_0$)
  • Reals: $\vert \mathbb{R} \vert = \infty$ (Uncountably infinite $\aleph$)

Integer Intervals

if $m \leq n, \{m, \dots n\} = \{\text{integers from m to n, inclusive}\}$,

$$ \vert \{m, \dots, n\} \vert = n - m +1 $$

Integer Multiples

$$ {}_d (n] = \{1 \leq i \leq n : d / i \} $$

For example,

  • ${}_3(8] = \{3, 6\} = \{1\cdot3, 2\cdot3\}$
  • ${}_3(9] = \{3, 6, 9\} = \{1\cdot3, 2\cdot3, 3\cdot3\}$

$$ \vert {}_d (n] \vert = \lfloor n/d \rfloor$$

For example,

  • $\vert {}_3(8] \vert = \lfloor 8/3 \rfloor = 2$
  • $\vert {}_3(9] \vert = \lfloor 9/3 \rfloor = 3$

Set size in Python

print(len({-1, 1}))
2
print(sum({-1, 1}))
0
print(min({-1, 1}))
-1
print(max({-1, 1}))
1
A = {1, 2, 3}
print(sum(A))

total = 0
for i in A:
    total += i
print(total)
6
6

Disjoint Unions

Disjoint Unions

A union of disjoint sets is called a disjoint union.

For example,

  • $\{0\} \cup \{1\} = \{0, 1\}$

For disjoint sets, the size of the union is the sum of the sizes.

$$ \vert A \cup B \vert = \vert A \vert + \vert B \vert $$

Note: In set theory, it is called addition rule

Complements

  • Quintessential disjoint sets ($A$ and $A^{c}$) $$ A \cup A^c = \Omega \\ \vert \Omega \vert = \vert A \cup A^c \vert = \vert A \vert + \vert A^c \vert \\ \vert A^c \vert = \vert \Omega \vert - \vert A \vert $$
    Note: In set theory, it is called subtraction(or complement) rule

General Subtraction Rule

$$ \begin{aligned} A \subseteq B \quad \rightarrow B &= A \cup (B - A) \\ \vert B \vert &= \vert A \vert + \vert B - A \vert \\ \vert B - A \vert &= \vert B \vert - \vert A \vert \end{aligned}$$

General Unions

General Unions

  • Disjoint $A$ and $B$: $\vert A \cup B \vert = \vert A \vert + \vert B \vert$
  • Size of union = sum of sizes
  • In general: $\vert A \cup B \vert \neq \vert A \vert + \vert B \vert$
    • $\vert \{a\} \cup \{a\} \vert = \vert \{a\} \vert = 1$
    • $\vert \{ a \} \vert + \vert \{ a \} \vert = 2$

$$ \vert A \cup B \vert = \vert A \vert + \vert B \vert - \vert A \cap B \vert $$

This is Principle of Inclusion-Exclusion(or PIE for short)

Multiple sets

  • Two sets

$$ \vert A \cup B \vert = \vert A \vert + \vert B \vert - \vert A \cap B \vert $$

  • Three sets
$$ \begin{aligned} \vert A \cup B \cup C \vert &= \vert A \vert + \vert B \vert + \vert C \vert \\ &- \vert A \cap B \vert - \vert A \cap C \vert - \vert B \cap C \vert \\ &+ \vert A \cap B \cap C \vert \end{aligned}$$
  • n sets

$$ \Big \vert \cup_{i=1}^n A_i \Big \vert = \sum_{i \leq i \leq n} \vert A_i \vert - \sum_{1 \leq i < j \leq n} \vert A_i \cap A_j \vert + \cdots + (-1)^{n-1} \Big \vert \cap_{i=1}^n A_i \Big \vert $$

Sanity checks

  • $A$, $B$ disjoint

$$ \vert A \cup B \vert = \vert A \vert + \vert B \vert - \vert A \cap B \vert = \vert A \vert + \vert B \vert $$

  • Equal sets

$$ \vert A \cup A \vert = \vert A \vert + \vert A \vert - \vert A \cap A \vert = \vert A \vert $$

  • nested/disjoint

$$ \max \{ \vert A \vert, \vert B \vert \} \leq \vert A \cup B \vert \leq \vert A \vert + \vert B \vert $$

Cartesian Products

Cartesian Products

If $\vert \{a, b\} \vert = 2$ and $\vert \{1, 2, 3\} = 3$, then

$$ \{a, b\} \times \{1, 2, 3\} = \begin{Bmatrix} (a, 1) & (a, 2) & (a, 3) \\ (b, 1) & (b, 2) & (b, 3) \end{Bmatrix} $$

And,

$$ \vert \{a, b\} \times \{1, 2, 3\} \vert = 2 \times 3 = 6 $$

In general, the size of a Cartesian Product is the product of the set sizes.

$$ \vert A \times B \vert = \vert A \vert \times \vert B \vert $$

Note: In set theory, it is called Product Rule

Three Sets

If we have two sets, ($A \times B \quad \{(a, b): a \in A, b \in B \}$), its shape has rectangle, And set size is $\vert A \times B \vert = \vert A \vert \times \vert B \vert$

If we have three sets, ($A \times B \times C \quad \{(a, b, c): a \in A, b \in B c \in C\}$), then its shape has cuboid, and number of element will be

$$ \vert A \times B \times C \vert = \vert A \vert \times \vert B \vert \times \vert C \vert $$

n Sets

For $n$ sets, by Product Rule and induction,

$$ \vert A_1 \times \dots \times A_n \vert = \vert A_1 \vert \times \dots \times \vert A_n \vert $$

Cartesian Powers

Cartesian Powers of a Set

Cartesian product of a set with ifself is a Cartesian Power

  • Cartesian Square: $A^2 = A \times A$
  • $n$-th Cartesian Power: $A^n \stackrel{\text{def}}{=} \underbrace{A \times A \times \dots A}_n $
    • $\vert A^n \vert = \vert A \times A \times \dots \times A \vert = \vert A \vert \times \vert A \vert \times \dots \times \vert A \vert $

Binary Strings

  • $ \{0, 1\}^n = \{\text{length-n binary strings}\} \quad \text{or n-bit strings}$
  • $\vert \{0, 1\}^n \vert = \vert \{0, 1\} \vert^n = 2^n $

Subsets

The power set of $S$, denoted $\mathbb{P}(S)$ is the collection of all subsets of $S$,

$$ \mathbb{P}(\{a, b\}) = \Big\{ \{ \}, \{a\}, \{b\}, \{a,b\}\Big\} $$

By the 1-1 correspondence betwen $\mathbb{P}(S)$ and $\{0,1\}^{\vert S \vert}$,

$$ \vert \mathbb{P}(S) \vert = \vert \{0, 1\}^{\vert S \vert} \vert = 2^{\vert S \vert} $$

The size of the power set is the power of the set size.

Functions

A function from $A$ to $B$ maps every element $a \in A$ to an element $f(a) \in B$

  • Define a function $f$: specify $f(a)$ for every $a \in A$
    • $f$ from $\{1, 2, 3\}$ to $\{p, u\}$: $f(1)=p, f(2)=u, f(3)=p$
    • $f: 3-\text{tuple}(f(1), f(2), f(3)): (p, u, p)$
    • $\{\text{functions from } \{1, 2, 3\} \text{ to } \{p, u\}: \{p, u\} \times \{p, u\} \times \{p, u\}$
    • size of functions from $\{1, 2, 3\}$ to $\{p, u\}$ = $2^3 = \vert \{p, u\} \vert^{\vert \{1, 2, 3\} \vert}$
  • $\{\text{functions from } A \text{ to } B \} \quad \underbrace{B \times B \times \dots \times B}_{\vert A \vert} = B^{\vert A \vert}$
    • Size of functions from $A$ to $B$: $\vert B^{\vert A \vert} \vert = \vert B \vert^{\vert A \vert}$

Cartesian Powers in Python

  • Cartesian Power
import itertools

print(set(itertools.product({2, 5, 9}, repeat=2)))
{(5, 9), (5, 5), (2, 9), (9, 2), (9, 9), (2, 2), (9, 5), (2, 5), (5, 2)}
  • Exponent
3 ** 2
9

Counting Variations

PIN

PIN is short for Personal Identification Number. What if we have 4-digits PIN, how many variation of each PIN?

$$ D = \{0, \dots, 9\} \\ \{\text{4-digit PIN}\} = D^4 \\ \vert D^4 \vert = \vert D \vert^4 = 10^4$$

Variable Length

Consider 3-5 digit PINs.

$$ D = \{0, \dots, 9\}, \{\text{PINs}\} = D^3 \cup D^4 \cup D^5 $$

In this case,

$$ \sharp \text{ of PINs} = \vert D^3 \cup D^4 \cup D^5 \vert = \vert D^3 \vert + \vert D^4 \vert + \vert D^5 \vert = 10^3 + 10^4 + 10^5 $$

PINs Containing Zero

Consider 4 digit PINs with containing zero

  • $D = \{0, 1, \dots, 9\}$
  • $Z = \{0\}, \bar{Z} = \{1, 2, \dots, 9\}$
    Note: $\bar{Z} = Z^c$: set of non-zero digits
  • $x^n \triangleq x_1, \dots, x_n$ - ($n$-digit sequence)

$\qquad \rightarrow \exists Z = \{ x^n \in D^n : \exists i x_i \in Z\} $: {$n$-digit PINs containing 0}

  • $\vert \exists Z \vert = ?$

2-Digit case - Inclusion-Exclusion

$$ \exists Z = \{x_1 x_2 : \exists i \quad x_i = 0\} $$

  • $Z_1 = \{x_1 x_2: x_1 = 0\}$
  • $Z_2 = \{x_1 x_2: x_2 = 0\}$

  • $\exists Z = Z_1 \cup Z_2$

  • $\vert \exists Z \vert = \vert Z_1 \vert + \vert Z_2 \vert - \vert Z_1 \cap Z_2 \vert $

2-Digit case - Complement Rule

$$ \exists Z = \{x_1 x_2 : \exists i \quad x_i = 0\} $$

  • $\omega = D^2$

  • $\bar{\exists Z} = \bar{\{x_1 x_2: \exists i \quad x_i = 0 \}} = \{x_1 x_2: \forall i \quad x_i \neq 0\} = \bar{Z} \times \bar{Z}$

  • $ \vert \bar{ \exists Z} \vert = \vert \bar{Z} \times \bar{Z} \vert = \vert \bar{Z} \vert^2 $

n-Digit case - Inclusion-Exclusion

$$ \exists Z = \{ x^n : \exists i \quad x_i = 0 \} $$

  • $Z_i = \{x^n: x_i = 0\}$
  • $\exists Z = Z_1 \cup \dots \cup Z_n$
  • $\vert \exists Z \vert = \vert Z_1 \vert + \vert Z_2 \vert + \dots + \vert Z_n \vert - \vert Z_1 \cap Z_2 \vert - \vert Z_1 \cap Z_3 \vert - \dots - \vert Z_{n-1} \cap Z_n \vert \\ + (-1)^{n-1} \vert Z_1 \cap Z_2 \cap \dots \cap Z_n \vert$

n-Digit case - Complement Rule

$$ \bar{\exists Z} = \bar{\{x^n \vert \exists i \quad x_i \in Z\}} = \{x^n \vert \forall i \quad x_i \not \in Z \} = (\bar{Z})^n \triangleq \forall \bar{Z} $$

  • $\vert \forall \bar{Z} \vert = \vert \bar{Z} \vert^n = 9^n$
  • $\exists Z = D^n - \forall \bar{Z} $
  • $\vert \exists Z \vert = \vert D^n \vert - \vert \forall \bar{Z} \vert = 10^n - 9^n$

Counting Trees

Why Trees

  • A tree can represent any set of sequence, not just Cartesian Products
  • And it enables systematic counting technique
  • And it is useful in model random phenomena

Exercise 1

Exercise 1.1

The inclusion-exclusion principle states that for two sets $A$ and $B$,

$$|A\cup B|=|A|+|B|-|A\cap B|.$$

Write the following functions to determine $|A\cup B|$ in two different ways.

A function union that determines first $A\cup B$ and then evaluates the union's size. Output the ordered pair $(A\cup B, |A\cup B|)$.

* **Sample run** *

A = {1, 2, 3}
B = {3, -6, 2, 0}
print union(A, B)

* **Expected Output** *

({-6, 0, 1, 2, 3}, 5)
def union(A, B):
    # inputs: A and B are of type 'set'
    # output: a tuple of the type (set, set_length)
    union_set = A.union(B)
    union_size = len(union_set)
    return (union_set, union_size)
A = {1,4,-3, "bob"}
B = {2,1,-3,"jill"}
assert union(A,B) == ({-3, 1, 2, 4, 'bob', 'jill'}, 6)

Exercise 1.2

A function inclusion_exclusion that first deterimines $|A|$, $|B|$, $A\cap B$, and $|A\cap B|$, and then uses the inclusion-exclusion formula to determine $|A\cup B|$. Output the tuple $(|A|, |B|, |A\cap B|, |A\cup B|)$.

* **Sample run:** *

A = {1, 2, 3}
B = {3, -6, 2, 0}
print inclusion_exclusion(A, B)
print "notice: 3 + 4 - 2 == 5"

* **Expected Output:** *

(3, 4, 2, 5)
notice: 3 + 4 - 2 == 5
def inclusion_exclusion(A, B):
    # inputs: A and B are of type 'set'
    # output: a tuple of four integers
    union_set = A.union(B)
    intersect_set = A.intersection(B)
    return (len(A), len(B), len(intersect_set), len(union_set))
A = {1, 2, 3, 4, 5}
B = {0, 2, -6, 5, 8, 9}
assert inclusion_exclusion(A, B) == (5, 6, 2, 9)

Exercise 2

The inclusion-exclusion principle says that for three sets $A$, $B$ and $C$,

$$|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|B\cap C|-|C\cap A|+|A\cap B\cap C|$$

We will write the following functions to determine $|A\cup B\cup C|$ in two different ways.

Exercise 2.1

Write function union3 that first determines $A\cup B\cup C$ and then evaluates the size of this union. Output the tuple $(A\cup B\cup C, |A\cup B\cup C|)$.

* **Sample run:** *

A = {1, 2, 3, 4, 5}
B = {0, 2, -6, 5, 8, 9}
C = {2, 10}
union3(A, B, C)

* **Expected Output:** *

({-6, 0, 1, 2, 3, 4, 5, 8, 9, 10}, 10)
def union3(A, B, C):
    # inputs: A, B and C are of type 'set'
    # output: a tuple of the type (set, set_length)
    
    union_set = A.union(B).union(C)
    return (union_set, len(union_set))
A = {1, 2, 4, 5, 10}
B = {5, 2, -6, 5, 8, 9}
C = {2, 10, 13}
assert union3(A,B,C) == ({-6, 1, 2, 4, 5, 8, 9, 10, 13}, 9)

Exercise 2.2

A function inclusion_exclusion3 that first deterimines the sizes of $A$, $B$, $C$ and their mutual intersections, and then uses the inclusion-exclusion principle to determine the size of the union. Output the tuple $(|A\cap B\cap C|, |A\cup B\cup C|)$. Note that for brevity we are asking you to output the intermediate answer just for $A\cap B\cap C$, but you need to calculate all.

* **Sample run:** *

A = {1, 2, 3, 4, 5}
B = {0, 2, -6, 5, 8, 9}
C = {2, 10}
print inclusion_exclusion3(A, B, C)

* **Expected Output:** *

(1, 10)
def inclusion_exclusion3(A, B, C):
    # inputs: A, B and C are of type 'set'
    # output: a tuple of two integers
    
    intersect_set = A.intersection(B).intersection(C)
    union_set = A.union(B).union(C)
    
    return (len(intersect_set), len(union_set))
A = {1, 2, 4, 5, 10}
B = {5, 2, -6, 5, 8, 9, 10}
C = {2, 10, 13}
assert inclusion_exclusion3(A,B,C) == (2, 9)