Nossa, adorei aprender isso! Muito curioso!
Computação, processadores e memória
O que é um System on a Chip?
Como funciona um computador?
O que são Bits e Bytes?
Como funcionam os circuitos eletrônicos?
Processadores e arquiteturas de CPU
O que é Disco Rígido e Memória RAM?
GPUs, placas de vídeo e som
O que são periféricos e dispositivos de entrada?
Evolução da arquitetura de computadores
Como funciona a internet
Introdução às redes, protocolos e Internet
Portas e protocolos de rede
O que é um endereço IP e o protocolo de Internet?
Fibra óptica, cabos submarinos de internet, IXP e ISP
O que é um domínio DNS, ou Domain Name System
O que é CDN e como os ISP fazem QoS?
Velocidade da internet: o que é ping e largura de banda?
O que é o modelo Cliente/Servidor?
Como funciona um site?
A Internet é maior do que você pensa
Sistemas operacionais
Diferenças entre Windows, Linux, Mac, iOS e Android
Permissões, níveis de processos e privilégios de execução
Fundamentos de sistemas operacionais móveis
O que são sistemas embarcados
Arquivos e estruturas de dados
O que é extensão de arquivo, cabeçalho e metadado
O que é JPG e como funciona?
O que é codec: entenda os formatos de vídeos e protocolos
O que é árvore binária e como funcionam arquivos .zip
Conteúdo Bônus
O que é uma rede neural?
O que é SQL e NoSQL?
O que é um algoritmo?
O que é Raspberry Pi?
Você não tem acesso a esta aula
Continue aprendendo! Junte-se e comece a impulsionar sua carreira
Poder comprimir o tamanho dos arquivos que estamos compartilhando é, sem dúvida, uma grande ajuda. Entender como esses arquivos funcionam pode ser necessário para poder usá-los, mas para além disso é um conhecimento fascinante. Você sabia que o .zip funciona por um sistema de árvore binária, por exemplo?
As árvores binárias são modelos de compressão e compactação de arquivos sem perda de dados. Trata-se de uma estrutura de dados com uma raíz comum que passa a se dividir em um espaço vazio (sub-árvore esquerda) e em um espaço com elemento (sub-árvore direito).
A árvore binária garante que nenhum dado seja perdido na compressão, de forma que quando o arquivo seja descomprimido todas as informações sejam encontradas exatamente como eram originalmente. Isso porque a árvore binária funciona diferente de outros algoritmos de compressão, como os codecs dos vídeos ou os algoritmos de compressão de imagens responsáveis por gerar jpgs.
Para aprender como funciona e como criar uma árvore binária, vamos comprimir a frase “amo leer panama papers”. Originalmente, essa frase teria 22 bytes (ou 176 bits), já que uma letra tende a ocupar 8 bits.
No nosso caso, vamos contar quantas vezes cada letra se repete, seguindo um padrão lógico: começando pela primeira letra em diante.
a = 5
m = 2
r = 2
s = 1
o = 1
| | = 3
p = 3
l = 1
e = e
n = 1
Como dissemos anteriormente, nas árvores binárias, de uma mesma raíz sempre saem dois ramos. Assim, criamos a nossa primeira raíz com a sub-árvore esquerda sendo representada por um 0 (vazio) e a sub-árvore direita sendo representada por um 1.
Como mote para a compressão, começamos a adicionar os dados por aquele que aparece mais vezes. No nosso caso, pela letra A. Dessa forma, ao invés de ocupar 8 bits, a letra A terá um peso de apenas 1 bit.
Lembre-se também que todas as letras/dados devem ser representados nos galhos à direita, mantendo o da esquerda vazio.
Nosso exercício até aqui fica assim:
Vamos supor que queremos representar a letra M de acordo com essa árvore binária. A representação se dá por meio de bits e ficaria assim:
00001
Isso porque para chegar até o 1 que representa essa letra você teria que passar por 4 ramos vazios. Assim, todas as letras são uma sequência de zeros que terminam em um.
Fez sentido? Vamos continuar!
Para finalizar o nosso exercício, vamos representar a frase “amo leer panama papers” a partir dessa árvore binária.
O resultado deve ficar assim:
1 00001 0000001 01 00000001 001 001 000001 01 0001 1 0000000001 1 00001 1 01 0001 1 0001 001 000001 000000001
No exercício que fizemos juntos, comprimimos uma frase simples diminuindo seu tamanho quase pela metade. Se você contar no código acima, perceberá que ele passou a ter 11 bytes (ou 88 bits) para passar a mesma informação.
Esse exemplo é educativo e é claro que num código real você também precisa contar o peso das informações da árvore binária criada, por exemplo. Mas você pode imaginar o impacto desse tipo de estrutura de dados na compressão de arquivos como softwares?
Contribuições 2
Perguntas 0
Nossa, adorei aprender isso! Muito curioso!
Perdi tudo com a musiquinha acelerando a contagem 😂😂😂
Quer ver mais contribuições, perguntas e respostas da comunidade?