Ir para o conteúdo principal

Conjuntos: O Que São e Como Definir Precisamente

Autor
Francisco Bustamante
Um químico trabalhando com Ciência de Dados e Programação em Python.
Tabela de conteúdos
A Linguagem dos Conjuntos - Este artigo faz parte de uma série de artigos.
Parte 1: Esse Artigo

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
#

Definição

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
Convenção adotada nesta série: \(0 \notin \mathbb{N}\)

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\).

Conjunto vazio

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:

$$\{x \in \text{usuarios} \mid \text{idade}(x) \geq 18\}$$

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.

Igualdade

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.

Inclusão (subconjunto)
  • \(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:

Diagrama de inclusão dos conjuntos numéricos
Relações de inclusão entre os conjuntos numéricos clássicos: ℕ ⊂ ℤ ⊂ ℚ ⊂ ℝ

note

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\).

Conjunto das partes

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
O que é um Reticulado Booleano?

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!

A Linguagem dos Conjuntos - Este artigo faz parte de uma série de artigos.
Parte 1: Esse Artigo

Relacionados