Toda vez que agrupamos objetos com algum critério em comum (os números pares menores que 10, os usuários cadastrados em um sistema, os nós de um grafo), estamos trabalhando com conjuntos. O conceito parece trivial, mas há um detalhe que separa um agrupamento matemático rigoroso de uma lista vaga: o critério precisa ser preciso o suficiente para que qualquer objeto do mundo possa ser testado.
Por que conjuntos? #
A teoria dos conjuntos ganhou forma rigorosa no final do século XIX, principalmente com Georg Cantor (1845 a 1918). Na matemática discreta e na ciência da computação, conjuntos aparecem em todo lugar:
- Lógica proposicional: o conjunto de valorações que satisfazem uma fórmula.
- Combinatória: contar subconjuntos de tamanho \(k\) de um conjunto de \(n\) elementos.
- Grafos: um grafo é um par \((V, E)\) onde \(V\) é o conjunto de vértices e \(E \subseteq V \times V\) é o conjunto de arestas.
- Programação: coleções, filtros e buscas são operações de conjunto disfarçadas de código.
Este artigo apresenta os conceitos fundamentais da teoria dos conjuntos: o que é um conjunto, como descrevê-lo, as relações entre conjuntos e o conjunto das partes. Esses conceitos formam a linguagem que usaremos em todos os outros artigos desta série.
O Que É um Conjunto #
Um conjunto é uma coleção bem definida de objetos chamados elementos.
A expressão bem definida é a parte da definição que exige cuidado. Ela significa que, dado qualquer objeto, devemos conseguir decidir sem ambiguidade se ele pertence ou não ao conjunto. Sem essa precisão, o agrupamento não é matematicamente útil.
Por convenção, conjuntos são representados por letras maiúsculas (\(A, B, C, \ldots\)) e seus elementos por letras minúsculas (\(a, b, x, \ldots\)). A relação entre um objeto e um conjunto é chamada de relação de pertinência:
- \(x \in A\): “\(x\) pertence a \(A\)”
- \(x \notin A\): “\(x\) não pertence a \(A\)”
Coleções bem definidas e coleções ambíguas #
Considere a coleção \(C\) formada pelas pessoas altas.
- Se uma pessoa mede \(1{,}95\) m, intuitivamente ela pertence a \(C\).
- Se mede \(1{,}50\) m, intuitivamente ela não pertence.
- Se mede \(1{,}75\) m, a resposta já fica ambígua.
Essa coleção não está bem definida porque o critério de pertinência não foi especificado com precisão. A forma correta de resolver isso é substituir a descrição vaga por uma propriedade objetiva:
$$C = \{x \mid \text{a altura de } x \text{ é maior que } 1{,}75\text{ m}\}$$Agora sim: para qualquer pessoa do mundo, podemos decidir se ela pertence ou não a \(C\).
O fluxograma abaixo resume o raciocínio para verificar se uma coleção é bem definida:
flowchart TD
A["Critério de pertinência"] --> B{"Qualquer objeto
pode ser
testado sem
ambiguidade?"}
B -- "Sim" --> C["Conjunto bem definido ✓"]
B -- "Não / Depende" --> D["Coleção ambígua ✗"]
D --> E["Reescrever com
propriedade objetiva"]
E --> A
Trocar a descrição vaga por uma propriedade objetiva resolve o caso das pessoas altas. Mas precisão sozinha não garante um conjunto, e a descoberta disso mudou os fundamentos da matemática:
Em 1901, Bertrand Russell considerou a coleção de todos os conjuntos que não pertencem a si mesmos:
$$R = \{X \mid X \notin X\}$$O critério não tem nada de vago. Ainda assim, pergunte se \(R \in R\): se \(R \in R\), então \(R\) satisfaz o critério \(X \notin X\), ou seja, \(R \notin R\); se \(R \notin R\), então \(R\) satisfaz o critério e, portanto, \(R \in R\). As duas respostas levam a uma contradição: para o objeto \(R\), não há como decidir a pertinência.
O defeito está em aceitar que qualquer propriedade defina um conjunto, o princípio da chamada teoria ingênua dos conjuntos. Numa carta de 1902, Russell mostrou que esse princípio tornava contraditório o sistema lógico de Gottlob Frege. A saída mais adotada foi a teoria axiomática de Zermelo–Fraenkel, em que uma propriedade só separa elementos de um conjunto que já existe, como em \(\{x \in \mathbb{N} \mid x < 10\}\). Descrever os conjuntos dentro de um universo conhecido, como faremos nesta série, evita o paradoxo. Mais em Russell’s paradox.
Os conjuntos numéricos clássicos #
Antes de prosseguir, é útil ter em mente os conjuntos numéricos que aparecem com frequência:
| Símbolo | Nome | Descrição |
|---|---|---|
| \(\mathbb{N}\) | Naturais | \(\{1, 2, 3, \ldots\}\) |
| \(\mathbb{Z}\) | Inteiros | \(\{\ldots, -1, 0, 1, \ldots\}\) |
| \(\mathbb{Q}\) | Racionais | \( \{ \frac{p}{q} \mid p, q \in \mathbb{Z}, \ q \neq 0 \} \) |
| \(\mathbb{R}\) | Reais | todos os racionais e irracionais |
A definição de \(\mathbb{N}\) não é universal. No ensino básico brasileiro (BNCC), o zero pertence aos naturais: \(\mathbb{N} = \{0, 1, 2, \ldots\}\), e usa-se \(\mathbb{N}^\ast = \{1, 2, 3, \ldots\}\) para os naturais não nulos. Em Matemática Discreta e Ciência da Computação, muitos autores (Rosen, Knuth) também incluem o zero. Nesta série adotamos \(\mathbb{N} = \{1, 2, 3, \ldots\}\) por seguir a tradição da análise matemática. Quando a convenção importar para um resultado específico, será explicitamente indicada. Para uma discussão aprofundada sobre as diferentes convenções, veja Natural number — Terminology and notation e Is 0 a natural number? (Mathematics Stack Exchange).
Esses conjuntos estão encadeados uns dentro dos outros: \(\mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q} \subset \mathbb{R}\). O significado preciso do símbolo \(\subset\) será formalizado na seção Igualdade e Inclusão, onde uma figura ilustra essa hierarquia.
Exemplos de pertinência em \(\mathbb{N}\)
- \(10598 \in \mathbb{N}\): número natural, pertence
- \(-1 \notin \mathbb{N}\): negativo, não pertence
- \(\frac{1}{5} \notin \mathbb{N}\): racional não inteiro, não pertence
- \(2{,}5 \notin \mathbb{N}\): decimal, não pertence
Formas de Descrever um Conjunto #
Existem duas maneiras de especificar um conjunto:
Na descrição por extensão, listamos explicitamente todos os elementos:
$$B = \{m, t, c, v\}$$Na descrição por compreensão, definimos uma propriedade \(P(x)\) que caracteriza os elementos:
$$C = \{x \mid P(x)\}$$Na notação por compreensão, o símbolo \(\mid\) se lê “tal que”. Podemos também restringir o universo de busca:
$$C = \{x \in \mathbb{N} \mid x\ \text{é par e}\ x < 10\} = \{2, 4, 6, 8\}$$
Exemplo: mesma coleção, duas descrições
O conjunto dos inteiros com valor absoluto menor ou igual a 2 pode ser escrito de duas formas equivalentes:
- Por extensão: \(A = \{-2, -1, 0, 1, 2\}\)
- Por compreensão: \(A = \{x \in \mathbb{Z} \mid |x| \leq 2\}\)
Ambas descrevem exatamente o mesmo conjunto.
O conjunto vazio #
Um caso especial importante é o conjunto vazio: o conjunto que não contém nenhum elemento, denotado \(\emptyset\).
O conjunto vazio \(\emptyset\) não contém elementos.
$$\emptyset = \{x \mid x \in \mathbb{N},\ x > 5\ \text{e}\ x < 0\}$$(condição impossível: nenhum natural é ao mesmo tempo maior que 5 e menor que 0)
O conjunto vazio é subconjunto de qualquer conjunto, e veremos por quê na próxima seção.
Aplicação: notação por compreensão em bancos de dados
A cláusula WHERE do SQL é exatamente uma descrição por compreensão. A consulta
SELECT * FROM usuarios WHERE idade >= 18 descreve o conjunto:
A tabela inteira é o universo de busca; o predicado do WHERE é a propriedade \(P(x)\).
Toda filtragem de dados é uma descrição por compreensão.
Igualdade e Inclusão #
Dois dos conceitos mais importantes da teoria dos conjuntos são a igualdade e a inclusão.
Dois conjuntos são iguais quando têm exatamente os mesmos elementos:
$$A = B \iff A \text{ e } B \text{ têm os mesmos elementos}$$Uma equivalência útil:
$$A = B \iff A \subseteq B \ \text{e}\ B \subseteq A$$Note que conjuntos não têm ordem nem repetição: \(\{1, 2, 3\} = \{3, 1, 2\} = \{1, 1, 2, 3\}\). O que importa é quais elementos estão presentes.
- \(A \subseteq B\) (A está contido em B): todo elemento de \(A\) também é elemento de \(B\)
- \(B \supseteq A\) (B contém A): notação equivalente a \(A \subseteq B\), lida pelo lado do conjunto maior
- \(A \subset B\) (inclusão estrita): \(A \subseteq B\) e \(A \neq B\)
Nota sobre notação: em parte da literatura moderna, \(\subset\) é usado como sinônimo de \(\subseteq\) (inclusão não estrita). Para evitar ambiguidade, alguns autores adotam \(\subsetneq\) exclusivamente para a inclusão estrita. Nesta série, \(\subset\) sempre denota inclusão estrita, conforme definido acima. Veja mais em Set notation: inclusion and proper inclusion (Mathematics Stack Exchange).
Leituras equivalentes para \(A \subseteq B\): “\(A\) está contido em \(B\)”, “\(A\) é subconjunto de \(B\)”, “\(B\) contém \(A\)”, “\(B\) é superconjunto de \(A\)”.
Propriedades da inclusão:
| Propriedade | Enunciado |
|---|---|
| Reflexividade | \(A \subseteq A\) |
| Transitividade | Se \(A \subseteq B\) e \(B \subseteq C\), então \(A \subseteq C\) |
| Inclusão do vazio | \(\emptyset \subseteq A\) para todo conjunto \(A\) |
| Inclusão estrita do vazio | \(\emptyset \subset A\) para todo \(A \neq \emptyset\) |
A propriedade \(\emptyset \subseteq A\) decorre diretamente da definição: para que \(\emptyset \not\subseteq A\), precisaria existir algum elemento de \(\emptyset\) que não está em \(A\), mas \(\emptyset\) não tem nenhum elemento, então essa situação nunca ocorre.
Os conjuntos numéricos clássicos são um exemplo direto dessas relações: \(\mathbb{N} \subset \mathbb{Z} \subset \mathbb{Q} \subset \mathbb{R}\). A figura abaixo ilustra essa hierarquia de inclusões:

A figura usa regiões aninhadas para representar inclusão: cada conjunto está geometricamente dentro do maior. Essa forma de visualizar conjuntos costuma ser chamada de diagrama de Venn e será apresentada formalmente no próximo artigo desta série, onde veremos também que, a rigor, um desenho só com regiões aninhadas como este tem outro nome: diagrama de Euler.
Aplicação: resolução de dependências como inclusão
Gerenciadores de pacotes (pip, apt, npm) decidem se uma instalação é viável verificando se \(A \subseteq B\). Um pacote pode ser instalado quando:
$$\text{deps}(\text{pacote}) \subseteq \text{instalados}$$
Se alguma dependência não estiver em instalados, a inclusão falha e o
gerenciador busca o que falta. A “resolução de dependências” é encontrar o menor
conjunto adicional que torne a inclusão verdadeira.
O Conjunto das Partes #
Dado um conjunto \(A\), podemos construir um novo conjunto cujos elementos são todos os subconjuntos possíveis de \(A\).
O conjunto das partes (ou conjunto potência) de \(A\), denotado \(\mathcal{P}(A)\), é o conjunto de todos os subconjuntos de \(A\):
$$\mathcal{P}(A) = \{S \mid S \subseteq A\}$$Em inglês, o nome é power set (veja o verbete Power set da Wikipedia).
Exemplo: Seja \(A = \{1, 2, 3\}\).
$$\mathcal{P}(A) = \{\emptyset,\ \{1\},\ \{2\},\ \{3\},\ \{1,2\},\ \{1,3\},\ \{2,3\},\ \{1,2,3\}\}$$O diagrama abaixo é um diagrama de Hasse que representa o reticulado booleano de P(A) (ordenado pela relação de inclusão ⊆): cada aresta sobe de um subconjunto para o imediatamente maior (aquele que acrescenta exatamente um elemento).
Ler o diagrama de baixo para cima revela visualmente como esses subconjuntos se encaixam uns dentro dos outros.
flowchart BT
E["∅"]
A1["{1}"]
A2["{2}"]
A3["{3}"]
B12["{1,2}"]
B13["{1,3}"]
B23["{2,3}"]
C["{1,2,3}"]
E --> A1
E --> A2
E --> A3
A1 --> B12
A2 --> B12
A1 --> B13
A3 --> B13
A2 --> B23
A3 --> B23
B12 --> C
B13 --> C
B23 --> C
Em termos práticos (e visuais), é uma estrutura matemática perfeitamente simétrica. Ela possui um “fundo” absoluto (o conjunto vazio, ∅) e um “topo” absoluto (o conjunto original completo, A). Entre eles, os elementos se conectam de tal forma que, se você escolher quaisquer dois subconjuntos, a união e a interseção deles também estão garantidas dentro da estrutura.
Exemplo com o diagrama acima: escolha \(\{1,2\}\) e \(\{1,3\}\).
- A união \(\{1,2\} \cup \{1,3\} = \{1,2,3\}\) é o nó do topo.
- A interseção \(\{1,2\} \cap \{1,3\} = \{1\}\) é um nó do nível intermediário.
Ambos os resultados aparecem no diagrama: nenhuma operação “sai” da estrutura.
A cardinalidade (número de elementos) do conjunto das partes é dada por:
$$|\mathcal{P}(A)| = 2^{|A|}$$Aqui as barras verticais indicam cardinalidade (número de elementos do conjunto), não valor absoluto, notação que será aprofundada no artigo futuro sobre cardinalidade.
Para \(A = \{1, 2, 3\}\): \(|\mathcal{P}(A)| = 2^3 = 8\) subconjuntos.
Isso faz sentido combinatoriamente: para cada elemento de \(A\), temos exatamente duas escolhas, incluí-lo ou não no subconjunto. Com \(n\) elementos e 2 escolhas por elemento, há \(2^n\) subconjuntos possíveis.
A árvore abaixo torna isso concreto para \(A = \{1, 2, 3\}\): cada nível representa a decisão sobre um elemento, e as 8 folhas são exatamente os subconjuntos de \(\mathcal{P}(A)\).
flowchart TD
R["A = {1, 2, 3}"]
R -->|"1 ∈ S"| Y1["{1, ?, ?}"]
R -->|"1 ∉ S"| N1["{_, ?, ?}"]
Y1 -->|"2 ∈ S"| Y12["{1, 2, ?}"]
Y1 -->|"2 ∉ S"| N12["{1, _, ?}"]
N1 -->|"2 ∈ S"| Y02["{_, 2, ?}"]
N1 -->|"2 ∉ S"| N02["{_, _, ?}"]
Y12 -->|"3 ∈ S"| L123["{1, 2, 3}"]
Y12 -->|"3 ∉ S"| L12["{1, 2}"]
N12 -->|"3 ∈ S"| L13["{1, 3}"]
N12 -->|"3 ∉ S"| L1["{1}"]
Y02 -->|"3 ∈ S"| L23["{2, 3}"]
Y02 -->|"3 ∉ S"| L2["{2}"]
N02 -->|"3 ∈ S"| L3["{3}"]
N02 -->|"3 ∉ S"| LE["∅"]
A árvore faz as três escolhas uma depois da outra. Também dá para vê-las ao mesmo tempo: se cada elemento vira um eixo (entra ou não entra), os subconjuntos de \(\{1, 2, 3\}\) ocupam os oito vértices de um cubo. A figura abaixo desenha o mesmo reticulado do diagrama de Hasse em três dimensões: cada aresta acrescenta um único elemento, a cor indica qual, e subir de \(\emptyset\) até \(\{1, 2, 3\}\) é acrescentar um elemento por vez.

Atenção: elementos de \(\mathcal{P}(A)\) são conjuntos #
Uma fonte comum de confusão é misturar pertinência (\(\in\)) com inclusão (\(\subseteq\)) ao trabalhar com \(\mathcal{P}(A)\). Se \(A = \{1, 2, 3\}\):
- \( \{1 \} \in \mathcal{P}(A)\): o conjunto \(\{1\}\) pertence a \(\mathcal{P}(A)\) (é um de seus elementos)
- \(1 \notin \mathcal{P}(A)\): o número \(1\) não pertence a \(\mathcal{P}(A)\) (o número não é um conjunto)
- \(\emptyset \in \mathcal{P}(A)\): o conjunto vazio sempre pertence
- \(\{\{1\}\} \subseteq \mathcal{P}(A)\): o conjunto \(\{\{1\}\}\) está incluído em \(\mathcal{P}(A)\) porque seu único elemento, \(\{1\}\), pertence a \(\mathcal{P}(A)\)
Tabela-Resumo #
Os conceitos e resultados do artigo, reunidos para consulta rápida:
| Conceito | Notação | Resultado |
|---|---|---|
| Pertinência | \(x \in A\), \(x \notin A\) | relação entre um objeto e um conjunto |
| Descrição por extensão | \(A = \{a, b, c\}\) | lista todos os elementos |
| Descrição por compreensão | \(A = \{x \in U \mid P(x)\}\) | elementos de \(U\) que satisfazem \(P\) |
| Conjunto vazio | \(\emptyset\) | \(\emptyset \subseteq A\) para todo \(A\) |
| Igualdade | \(A = B\) | \(A = B \iff A \subseteq B \text{ e } B \subseteq A\) |
| Inclusão | \(A \subseteq B\) | todo elemento de \(A\) está em \(B\); é reflexiva e transitiva |
| Inclusão estrita | \(A \subset B\) | \(A \subseteq B\) e \(A \neq B\) |
| Conjunto das partes | \(\mathcal{P}(A) = \{S \mid S \subseteq A\}\) | \(\lvert \mathcal{P}(A) \rvert = 2^{\lvert A \rvert}\) |
| Elementos de \(\mathcal{P}(A)\) | \(\{1\} \in \mathcal{P}(A)\) | são conjuntos: \(1 \notin \mathcal{P}(A)\) e \(\{\{1\}\} \subseteq \mathcal{P}(A)\) |
Na última linha, \(A = \{1, 2, 3\}\), como no exemplo do artigo.
Exercícios #
Exercício 1 — Igualdade de conjuntos
Determine quais dos seguintes conjuntos são iguais:
$$A = \{a, b, -1\} \qquad B = \{b, a, -1\} \qquad C = \{b, a, b, -1\} \qquad D = \{a, -1\}$$
Solução
\(A = B = C\). Conjuntos não têm ordem nem consideram repetições: \(A\), \(B\) e \(C\) contêm exatamente os elementos \(a\), \(b\) e \(-1\). Já \(D\) não contém \(b\), portanto \(D \neq A\).
Exercício 2 — Conjuntos por extensão e compreensão
Escreva os seguintes conjuntos listando explicitamente seus elementos:
(i) \(A = \{x \in \mathbb{Z} \mid -1 \leq x \leq 4\}\)
(ii) \(B = \{x \in \mathbb{N} \mid x \leq \sqrt{10}\ \text{ou}\ x > -2\}\)
(iii) \(C = \{x \in \mathbb{R} \mid 2x + 1 = 5\}\)
(iv) \(D = \{x \in \mathbb{R} \mid x^2 + 1 = 0\}\)
Soluções
(i) \(A = \{-1, 0, 1, 2, 3, 4\}\). São todos os inteiros entre \(-1\) e \(4\) inclusive.
(ii) \(B = \mathbb{N} = \{1, 2, 3, \ldots\}\). A condição \(x > -2\) é satisfeita por todo \(x \in \mathbb{N}\), portanto já cobre todo \(\mathbb{N}\). A condição \(x \leq \sqrt{10} \approx 3{,}16\) dá \(\{1,2,3\} \subset \mathbb{N}\). A união das duas condições é todo \(\mathbb{N}\).
(iii) \(C = \{2\}\), pois \(2x+1=5 \Rightarrow x=2 \in \mathbb{R}\).
(iv) \(D = \emptyset\), pois \(x^2+1=0 \Rightarrow x^2=-1\), que não tem solução real.
Exercício 3 — Relações de pertinência
Determine se cada relação é verdadeira ou falsa:
(i) \(\sqrt{2} \in \{x \in \mathbb{R} \mid x \geq 2\}\)
(ii) \(3 \in \{x \in \mathbb{R} \mid |x| \leq 4\}\)
(iii) \(\emptyset \notin \mathcal{P}(A)\) onde \(A = \{1, 2\}\)
(iv) \(\{1\} \in \{x \in \mathbb{R} \mid x^2 = 1\}\)
(v) \(\emptyset \in \{\emptyset, \{1\}\}\)
Soluções
(i) Falsa. \(\sqrt{2} \approx 1{,}41 < 2\), portanto não satisfaz \(x \geq 2\).
(ii) Verdadeira. \(|3| = 3 \leq 4\).
(iii) Falsa. \(\mathcal{P}(A) = \{\emptyset, \{1\}, \{2\}, \{1,2\}\}\) e \(\emptyset \in \mathcal{P}(A)\).
(iv) Falsa. \(\{x \in \mathbb{R} \mid x^2 = 1\} = \{-1, 1\}\). Os elementos são números \(-1\) e \(1\), não o conjunto \(\{1\}\).
(v) Verdadeira. O conjunto vazio é explicitamente listado como elemento de \(\{\emptyset, \{1\}\}\).
Exercício 4 — Relações de inclusão
Determine se cada relação é verdadeira ou falsa:
(i) \(\{-2, 0\} \subseteq \{x \in \mathbb{Z} \mid |x| \leq 2\}\)
(ii) \(\{\pi\} \subset \{1, \{\pi\}, a\}\)
(iii) \(\{\{\pi\}\} \subset \{1, \{\pi\}, a\}\)
(iv) \(\emptyset \not\subseteq \{3, 1, -7\}\)
(v) \(\emptyset \subseteq \{\emptyset, \{1\}\}\)
Soluções
(i) Verdadeira. \(\{x \in \mathbb{Z} \mid |x| \leq 2\} = \{-2,-1,0,1,2\}\), que contém \(-2\) e \(0\).
(ii) Falsa. O conjunto \(\{1, \{\pi\}, a\}\) contém o conjunto \(\{\pi\}\) como elemento, mas não contém \(\pi\) diretamente. Logo \(\{\pi\} \not\subset \{1, \{\pi\}, a\}\).
(iii) Verdadeira. \(\{\pi\}\) é elemento de \(\{1, \{\pi\}, a\}\), portanto \(\{\{\pi\}\}\) está incluído nesse conjunto.
(iv) Falsa. \(\emptyset \subseteq C\) para todo conjunto \(C\), sem exceção.
(v) Verdadeira. \(\emptyset\) é subconjunto de qualquer conjunto.
Exercício 5 — Conjunto das partes
Dado \(A = \{x \in \mathbb{Z} \mid |x| \leq 1\}\), determine \(\mathcal{P}(A)\).
Solução
Primeiro, \(A = \{-1, 0, 1\}\) (inteiros com valor absoluto no máximo 1).
$$\mathcal{P}(A) = \{\emptyset,\ \{-1\},\ \{0\},\ \{1\},\ \{-1,0\},\ \{-1,1\},\ \{0,1\},\ \{-1,0,1\}\}$$Como \(|A| = 3\), temos \(|\mathcal{P}(A)| = 2^3 = 8\) subconjuntos, todos listados acima.
Próximos passos #
Com a noção de conjunto, pertinência e inclusão estabelecidas, o próximo passo natural é aprender a operar sobre conjuntos: como combinar dois conjuntos em um só, como encontrar o que eles têm em comum, como remover elementos de um em relação a outro. Isso é o assunto do próximo artigo, onde também veremos os diagramas de Venn, uma ferramenta visual para raciocinar sobre conjuntos.
Mais adiante na série, toda essa teoria ganha uma dimensão prática: veremos como
os conceitos de conjunto, pertinência, inclusão e operações se traduzem
diretamente em código Python, com o tipo set e frozenset da linguagem.
Para uma visão geral de matemática discreta e do roadmap desta série, veja Matemática Discreta: Apresentação e Roadmap.
Até a próxima!