Um algoritmo simples de compressão, embora talvez não atinja as maiores taxas de compressão, concentra -se na facilidade de implementação e na baixa sobrecarga computacional. Os principais recursos desses algoritmos incluem:
*
Simplicidade: O algoritmo principal é fácil de entender e implementar no código. Isso geralmente significa usar operações básicas e estruturas de dados.
*
Velocidade: Compressão e descompressão são relativamente rápidas, minimizando o tempo necessário para processar dados. Isso é crucial para aplicações em tempo real ou quase em tempo real.
*
pegada de baixa memória: O algoritmo não requer grandes quantidades de memória para operar. Isso é importante para sistemas incorporados ou ambientes com restrição de recursos.
*
Sobrecarga mínima: A quantidade de metadados ou informações do cabeçalho adicionada aos dados compactados é pequena. Os cabeçalhos grandes podem compensar os benefícios da compactação, especialmente para pequenos arquivos de entrada.
*
complexidade fixa ou limitada: A complexidade do algoritmo (tempo e espaço) deve ser previsível e preferencialmente linear ou próximo a linear com o tamanho da entrada. Isso evita gargalos inesperados de desempenho.
*
sem perda (frequentemente): Algoritmos mais simples geralmente se concentram na compactação sem perdas, garantindo que os dados originais possam ser perfeitamente reconstruídos. Técnicas de compressão com perdas tendem a ser mais complexas.
Exemplos comuns de algoritmos e técnicas simples de compressão que demonstram esses recursos incluem:
*
codificação de comprimento de execução (rle): Substitui seqüências de caracteres idênticos por uma contagem e o personagem. Muito simples de implementar e rápido, mas apenas eficaz quando há longas corridas de caracteres idênticos.
*
codificação de dicionário (simples): Cria um pequeno dicionário estático de palavras ou frases que ocorrem frequentemente e as substitui por códigos curtos. Um dicionário estático mantém a sobrecarga mínima.
*
Huffman Coding (estático): Atribui códigos mais curtos a caracteres mais frequentes com base em uma tabela de frequência pré-calculada. O uso de uma tabela estática reduz a complexidade em comparação com a codificação adaptativa de Huffman.
*
codificação delta: Registra os dados como diferenças (deltas) entre dados seqüenciais, em vez de registros completos. Eficaz quando os dados mudam gradualmente.
*
embalagem básica de bit: Pacote vários valores em um byte único quando os valores requerem menos bits do que um byte completo.
Por outro lado, algoritmos de compressão mais complexos como LZ77, LZ78, esvaziam (usados em arquivos ZIP) e JPEG (perdas) priorizam taxas de compressão mais altas, mas à custa do aumento da complexidade computacional, uso de memória e dificuldade de implementação. Algoritmos simples fazem trade-offs no desempenho da compressão em prol da praticidade em certos cenários.