Subconjuntos em Código
Sobre a Matemática
Consideremos os exemplos: A = {a,b,c,d….x,y,z}
Seja agora o conjunto V das vogais do alfabeto: V = {a,e,i,o,u}
Ora, qualquer que seja o elemento de V, ele também pertence a A. Indica-se:
V ⊂ A ⇔ está contido em A
ou
A ⊃ V ⇔ A contém V
Define-se então, que um conjunto V é subconjunto de A quando, e somente quando, todo elemento de V é também elemento de A. Esta, pois, é a definição exata para um subconjunto, e a ideia dos símbolos contém e está contido ilusta bem a ideia geral do que é um conjunto e um subconjunto.
Sobre o Código
Na linguagem de programação Python,
from – é a palavra-chave usada para importar partes específicas de um módulo ou biblioteca. Biblioteca, por sua vez, é um conjunto de códigos prontos que oferecem funções e ferramentas para resolver problemas específicos, sem precisar programar tudo do zero.
itertools – é a biblioteca padrão que fornece funções para criar e manipular iteradores eficientes (como combinações e permutações).
import – é a palavra-chave usada para trazer módulos ou funções externas para o código.
chain() – é a função da biblioteca itertools que junta vários iteradores em um só, permitindo percorrê-los como se fossem um único.
combinations() – é a função da biblioteca itertools que gera todas as combinações possíveis de elementos de um conjunto, de tamanho r.
set() – é a estrutura de dados nativa que representa conjuntos (coleções sem elementos repetidos).
print() – é a função nativa que exibe informações na saída padrão (geralmente a tela).
.issubset() – é o método de conjuntos que verifica se todos os elementos de um conjunto estão contidos em outro.
.issuperset() – é o método de conjuntos que verifica se um conjunto contém todos os elementos de outro.
def – é a palavra-chave usada para definir uma função.
docstring – é o texto explicativo dentro de aspas triplas (“””) que documenta o propósito de uma função, classe ou módulo.
return – é a palavra-chave usada para devolver um valor como resultado da execução de uma função.
\n – é a sequência especial (escape sequence) que representa uma quebra de linha.
for...in... – é a estrutura de repetição usada para percorrer elementos de uma sequência (lista, conjunto, string, etc.).
# – é usado para criar comentários ao código, que são notas para se entender melhor o que o código faz.
Vamos ao código…
from itertools import chain, combinations
# Conjunto A: todas as letras do alfabeto
A = set("abcdefghijklmnopqrstuvwxyz")
# Conjunto V: vogais
V = set("aeiou")
# Verificação se V é subconjunto de A
print("V ⊆ A ?", V.issubset(A)) # True
print("A ⊇ V ?", A.issuperset(V)) # True
# Função para gerar todos os subconjuntos de um conjunto
def todos_subconjuntos(conjunto):
"""Retorna todos os subconjuntos possíveis de um conjunto."""
return list(chain.from_iterable(combinations(conjunto, r) for r in range(len(conjunto)+1)))
# Exemplo: subconjuntos das vogais
subconjuntos_vogais = todos_subconjuntos(V)
print("\nSubconjuntos de V:")
for s in subconjuntos_vogais:
print(set(s))| Código Python (.py) | O que faz |
| from itertools import chain, combinations | Importa funções da biblioteca itertools para gerar combinações (subconjuntos). |
| A = set(“abcdefghijklmnopqrstuvwxyz”) | Cria o conjunto A com todas as letras do alfabeto. |
| V = set(“aeiou”) | Cria o conjunto V com as vogais. |
| print(“V ⊆ A ?”, V.issubset(A)) | Verifica se V é subconjunto de A e imprime o resultado (True). |
| print(“A ⊇ V ?”, A.issuperset(V)) | Verifica se A é superconjunto de V e imprime o resultado (True). |
| def todos_subconjuntos(conjunto): | Define uma função para gerar todos os subconjuntos de um conjunto. |
| “””…””” | Esta é a docstring da função, ou seja, um comentário especial que descreve o que a função faz. |
| return list(chain.from_iterable(combinations(conjunto, r) for r in range(len(conjunto)+1))) | Usa combinations para gerar subconjuntos de tamanho r (de 0 até o tamanho do conjunto) e retorna todos em uma lista. |
| subconjuntos_vogais = todos_subconjuntos(V) | Gera todos os subconjuntos possíveis do conjunto V. |
| print(“\nSubconjuntos de V:”) | Imprime um título para a lista de subconjuntos. |
| for s in subconjuntos_vogais: | Inicia um loop para percorrer cada subconjunto gerado. |
| print(set(s)) | Converte cada subconjunto em set e imprime. |
Saída do código (valor de retorno)…
V ⊆ A ? True
A ⊇ V ? True
Subconjuntos de V:
set()
{'u'}
{'o'}
{'e'}
{'i'}
{'a'}
{'o', 'u'}
{'e', 'u'}
{'i', 'u'}
{'a', 'u'}
{'o', 'e'}
{'o', 'i'}
{'o', 'a'}
{'e', 'i'}
{'e', 'a'}
{'i', 'a'}
{'o', 'e', 'u'}
{'o', 'i', 'u'}
{'o', 'a', 'u'}
{'e', 'i', 'u'}
{'e', 'a', 'u'}
{'i', 'u', 'a'}
{'o', 'e', 'i'}
{'o', 'e', 'a'}
{'o', 'i', 'a'}
{'e', 'i', 'a'}
{'o', 'e', 'i', 'u'}
{'o', 'e', 'a', 'u'}
{'o', 'i', 'u', 'a'}
{'e', 'i', 'u', 'a'}
{'o', 'e', 'i', 'a'}
{'u', 'o', 'e', 'i', 'a'}
Fonte:
- Editora Didática Paulista. Ensino Didático 2000: Ensino Fundamental e Ensino Médio. Sorocaba: Editora Didática Paulista, [s.d.].
- Códigos e comentários gerados por Microsoft Copilot com revisão nossa.
- https://docs.python.org/pt-br/3/ [Documentação Oficial do Python]