Subst Simples E Composto - Atividade Substantivo Simples E Composto - ZULEDU
Atividade Substantivo Simples E Composto - ZULEDU

O que realmente é compressão simples e composta

A maioria das pessoas confunde os termos quando vai estudar algoritmos de compactação. Substância simples e composta não são nomes oficiais de algoritmos que você encontra em qualquer livro didático. São categorias descritivas que surgem quando alguém tenta explicar de forma didática como a compressão com perda e sem perda funciona na prática. Se você está procurando implementar isso em código, vai precisar ir além dessas definições superficiais.

O conceito de substância simples se refere basicamente a algoritmos que preservam todos os dados originais. Cada byte que sai do compressor chega intacto ao descompressor. ZIP, GZIP, DEFLATE, BZIP2 — todos entram nessa categoria. A substância composta, por outro lado, envolve troca intencional de fidelidade por eficiência. JPEG, MP3, WebP com modo lossy trabalham assim. Você perde informação propositalmente e não tem como recuperar o arquivo original.

Como distinguir subst simples e composto na prática

O teste mais direto é comprimir um arquivo binário aleatório. Se o algoritmo conseguir reduzir o tamanho em mais de 5%, ele funciona com base em padrões repetitivos dentro dos dados. Algoritmos de substância simples bem implementados fazem exatamente isso. O DEFLATE, por exemplo, alterna entre dicionário LZ77 e codificação Huffman. Primeiro identifica sequências repetidas e as substitui por referências. Depois compacta os símbolos restantes usando códigos de comprimento variável.

Eu já tive problema com compressão de bancos de dados SQLite usando ferramentas genéricas. O resultado era quase nenhum ganho porque o banco já vinha compactado internamente. A solução foi desligar a compressão automática da aplicação e deixar o gzip lidar com os arquivos brutos. O ganho saltou de 2% para cerca de 40% em tabelas com muito texto repetido.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Implementação prática

Não existe um download único para isso. É um conceito, não um executável. Mas você pode construir algo funcional em qualquer linguagem com bibliotecas padrão. Em Python, o módulo zlib já embutido no interpretador oferece compressão DEFLATE completa. O código leva menos de dez linhas.
import zlib

with open('arquivo_original.bin', 'rb') as entrada:
    dados = entrada.read()

compactado = zlib.compress(dados, 9)

with open('arquivo_compactado.bin', 'wb') as saida:
    saida.write(compactado)

O parâmetro nível 9 maximiza compressão mas é mais lento. Nível 1 é rápido mas rende menos redução. O default é 6 e funciona bem para a maioria dos casos. O tempo médio que observei em processadores modernos varia de 50 milissegundos para arquivos de 10MB no nível 1 até cerca de 3 segundos no nível 9. Compensação entre velocidade e razão de compressão sempre existe.

Para compressão com perda, o caminho é diferente. Você precisaria de bibliotecas específicas para cada tipo de arquivo. Pillow para imagens, Pydub para áudio. Não adianta tentar aplicar DEFLATE em uma imagem JPEG já compactada. O resultado pode até aumentar o tamanho por causa da sobrecarga do cabeçalho.

Pegadinhas que ninguém conta

Dados altamente aleatórios ou já compactados não vão ganhar nada com compressão simples. O famoso exemplo é um arquivo de vídeo H.264 tentado passar por gzip novamente. O tamanho pode até crescer. A entropia intrínseca desses formatos já está maximizada. Inserir dados aleatórios em um arquivo compactado e medir o resultado é uma forma rápida de testar se seu algoritmo está funcionando. Se a compressão reduz random bytes, tem bug.

A outra armadilha é confusão entre taxa de compressão e taxa de transferência. Um arquivo que compacta 70% em disco pode levar o quádruplo do tempo para ser descomprimido em hardware antigo. Isso importa muito em dispositivos embarcados ou em streams de rede onde latência é crítica. JPEG XL resolve parte disso ao oferecer compressão com perda muito mais eficiente que JPEG tradicional, mas ainda está engatinhando em compatibilidade de navegadores.

Quando escolher cada abordagem

Se seus dados precisam permanecer idênticos bit a bit — documentos, código-fonte, bancos de dados, VMs inteiras — use compressão sem perda. ZIP com DEFLATE resolve 90% dos casos. Para imagens e áudio onde pequena deterioração é aceitável, compressão com perda entrega ganhos dramáticos. Uma foto RAW de 25MB vira JPEG de 2MB com qualidade visual praticamente indistinguível na maioria das telas. O ponto que vejo mais gente errando é tentar usar compressão com perda em textos ou dados estruturados. Resultado: arquivos corrompidos, tabelas quebradas, perda de bits significativos em fórmulas. Não funciona. A regra prática é simples. Se um bit errado destrói a utilidade do arquivo, vá de substância simples. Se o arquivo ainda é utilizável com pequenos artefatos, substância composta pode ser viável.