[1] 1 2
[1] 1 2 3 4
La moderna teoria degli insiemi trae origine dalla definizione proposta da Georg Cantor:
Per insieme si intende una collezione di oggetti determinati e ben distinti della nostra intuizione o del nostro pensiero, concepiti come un tutto unico.
Sebbene la natura degli elementi possa essere arbitraria, il requisito essenziale è la possibilità di decidere univocamente se un dato oggetto appartiene o meno a un insieme. Formalmente, per ogni elemento \(x\) e ogni insieme \(A\), vale esattamente una delle due condizioni: \(x \in A\) oppure \(x \notin A\).
Due insiemi \(A\) e \(B\) sono detti uguali (\(A = B\)) se contengono gli stessi elementi, indipendentemente dall’ordine o da ripetizioni. Ad esempio:
\[ \{1, 2, 3\} = \{3, 1, 2\} = \{1, 3, 2\} = \{1, 1, 1, 2, 3, 3, 3\}. \]
Se gli insiemi non condividono gli stessi elementi, si dice che sono diversi (\(A \neq B\)).
Gli insiemi sono generalmente indicati con lettere maiuscole (\(A, B, C, \dots\)), mentre gli elementi con lettere minuscole (\(a, b, c, \dots\)). Un insieme finito può essere descritto in forma tabulare, elencando i suoi elementi tra parentesi graffe:
\[ A = \{a_1, a_2, \dots, a_n\}. \]
Quando gli elementi sono caratterizzati da una proprietà \(P(x)\), si utilizza la notazione per comprensione:
\[ A = \{x \mid P(x)\}, \]
che si legge “l’insieme degli \(x\) tali che vale \(P(x)\)”. Ad esempio, l’insieme dei punti sulla parabola \(y = x^2 + 1\) si scrive:
\[ A = \{(x, y) \mid y = x^2 + 1\}. \]
Dati due insiemi \(A\) e \(B\):
\(A\) è sottoinsieme di \(B\) (\(A \subseteq B\)) se ogni elemento di \(A\) appartiene anche a \(B\): \[ A \subseteq B \iff \forall x (x \in A \implies x \in B). \]
\(A\) è sottoinsieme proprio di \(B\) (\(A \subset B\)) se \(A \subseteq B\) ed esiste almeno un elemento di \(B\) che non appartiene ad \(A\): \[ A \subset B \iff (A \subseteq B) \land (\exists y \in B \mid y \notin A). \]
L’insieme delle parti (o insieme potenza) di un insieme \(A\), denotato con \(\mathcal{P}(A)\), è l’insieme di tutti i sottoinsiemi di \(A\), inclusi l’insieme vuoto \(\emptyset\) e \(A\) stesso. Per \(A = \{a, b, c\}\):
\[ \mathcal{P}(A) = \{\emptyset, \{a\}, \{b\}, \{c\}, \{a,b\}, \{a,c\}, \{b,c\}, \{a,b,c\}\}. \]
I diagrammi di Venn (sviluppati da John Venn sulla base di idee precedenti di Eulero e Leibniz) forniscono una rappresentazione visiva intuitiva delle relazioni tra insiemi. Gli insiemi sono raffigurati come regioni chiuse del piano, tipicamente cerchi o ellissi, all’interno di un rettangolo che rappresenta l’insieme universo. Le relazioni di appartenenza, intersezione e unione diventano immediatamente evidenti attraverso l’ombreggiatura delle aree corrispondenti.
In R, un insieme è tipicamente rappresentato come un vettore. La funzione unique() garantisce che ogni elemento compaia una sola volta, rispettando la definizione insiemistica.
[1] 1 2
[1] 1 2 3 4
L’operatore %in% verifica l’appartenenza di un elemento a un insieme:
Definito un universo di riferimento (ad esempio, i numeri interi da 0 a 10), è possibile esaminare relazioni di inclusione e disgiunzione.
[1] TRUE
[1] TRUE
[1] TRUE
Intersezione: elementi comuni a entrambi gli insiemi. \[ A \cap B = \{x \mid x \in A \land x \in B\} \]
Unione: elementi che appartengono ad almeno uno dei due insiemi. \[ A \cup B = \{x \mid x \in A \lor x \in B\} \]
Differenza: elementi del primo insieme che non appartengono al secondo. \[ A \setminus B = \{x \mid x \in A \land x \notin B\} \]
Complementare (rispetto a un universo \(U\)): \[ A^c = U \setminus A = \{x \in U \mid x \notin A\} \]
La differenza simmetrica, denotata con \(A \triangle B\), è definita come: \[ A \triangle B = (A \setminus B) \cup (B \setminus A) = (A \cup B) \setminus (A \cap B). \]
Le due leggi fondamentali che collegano unione, intersezione e complementazione:
\[ (A \cup B)^c = A^c \cap B^c, \quad (A \cap B)^c = A^c \cup B^c. \]
Queste identità sono facilmente visualizzabili mediante diagrammi di Venn.
Una coppia ordinata \((a, b)\) è un’entità in cui l’ordine degli elementi è significativo: \((a, b) \neq (b, a)\) a meno che \(a = b\). Il prodotto cartesiano di due insiemi \(A\) e \(B\) è l’insieme di tutte le possibili coppie ordinate:
\[ A \times B = \{(a, b) \mid a \in A,\ b \in B\}. \]
Esempio: \(\{1, 2\} \times \{a, b, c\} = \{(1,a), (1,b), (1,c), (2,a), (2,b), (2,c)\}\).
A <- c("a", "b", "c")
S <- 1:3
cartesian_product <- expand.grid(A, S)
print(cartesian_product) Var1 Var2
1 a 1
2 b 1
3 c 1
4 a 2
5 b 2
6 c 2
7 a 3
8 b 3
9 c 3
nrow(cartesian_product) # Cardinalità: |A| × |S| = 3 × 3 = 9[1] 9
Il concetto si estende a \(n\)-uple ordinate (o tuple) e a prodotti cartesiani di \(n\) insiemi, che corrispondono a array multidimensionali.
# Potenza cartesiana: A × A × A
A <- c("Head", "Tail")
p3 <- expand.grid(A, A, A) # 2³ = 8 combinazioniLa cardinalità di un insieme finito \(A\), indicata con \(|A|\), \(\#(A)\) o \(\mathrm{card}(A)\), rappresenta il numero di elementi distinti contenuti nell’insieme. Questa nozione quantitativa è fondamentale per descrivere la dimensione di un insieme e per calcolare la dimensione di insiemi costruiti attraverso operazioni insiemistiche.
Per il prodotto cartesiano di due insiemi, la cardinalità segue una regola moltiplicativa:
\[ |A \times B| = |A| \cdot |B|. \]
Questa proprietà si generalizza al prodotto cartesiano di \(n\) insiemi:
\[ |A_1 \times A_2 \times \dots \times A_n| = |A_1| \cdot |A_2| \cdot \dots \cdot |A_n|. \]
In particolare, la \(k\)-esima potenza cartesiana di un insieme \(A\), definita come \(A^k = A \times A \times \dots \times A\) (\(k\) volte), ha cardinalità:
\[ |A^k| = |A|^k. \]
La seguente implementazione in R illustra il calcolo della cardinalità per la terza potenza cartesiana di un insieme:
# Definizione dell'insieme di partenza
A <- c("Head", "Tail")
# Costruzione della terza potenza cartesiana A × A × A
p3 <- expand.grid(A, A, A)
# Output dei risultati
cat("L'insieme A³ è costituito da", nrow(p3), "elementi:\n")L'insieme A³ è costituito da 8 elementi:
print(p3) Var1 Var2 Var3
1 Head Head Head
2 Tail Head Head
3 Head Tail Head
4 Tail Tail Head
5 Head Head Tail
6 Tail Head Tail
7 Head Tail Tail
8 Tail Tail Tail
L’esecuzione di questo codice produce:
("Head", "Head", "Head"), ("Head", "Head", "Tail"), ecc.).Questo esempio dimostra come la proprietà moltiplicativa della cardinalità si traduca in una crescita esponenziale del numero di elementi nel prodotto cartesiano, un concetto cruciale in probabilità, combinatoria e nella data science.