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 fundamental 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. 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, buscas — 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 poderoso objeto chamado conjunto das partes. Tudo isso forma 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 é o coração da definição. 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
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}^* = {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:
Descrição por extensão — lista explicitamente todos os elementos:
$$B = \{m, t, c, v\}$$Descrição por compreensão — define 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)
Uma propriedade fundamental: \(\emptyset\) é subconjunto de qualquer conjunto — 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 é, no fundo, 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, chamada diagrama de Venn, será apresentada formalmente no próximo artigo desta série.
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\}$$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 tem uma fórmula elegante:
$$|\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["∅"]
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)\)
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\}\) — 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 poderosa 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!