An open API service indexing awesome lists of open source software.

https://github.com/bulatruslanovich/arithmetic-coding

Arithmetic coding - common algorithm used in both lossless and lossy data compression algorithms
https://github.com/bulatruslanovich/arithmetic-coding

arithmetic-coding php

Last synced: 4 months ago
JSON representation

Arithmetic coding - common algorithm used in both lossless and lossy data compression algorithms

Awesome Lists containing this project

README

        

# Arithmetic-coding
### Арифметическое кодирование / Arithmetic coding

*Арифметическое кодирование — один из алгоритмов энтропийного сжатия.*

*В отличие от алгоритма Хаффмана, не имеет жесткого постоянного соответствия входных символов группам бит выходного потока. Это даёт алгоритму большую гибкость в представлении дробных частот встречаемости символов.*

*Как правило, превосходит алгоритм Хаффмана по эффективности сжатия, позволяет сжимать данные с энтропией, меньшей 1 бита на кодируемый символ, но некоторые версии имеют патентные ограничения от компании IBM.* (wikipedia)
![image](https://github.com/BulatRuslanovich/Arithmetic-coding/assets/113189826/888b7029-fa18-4ae6-af8b-ac7fb8c76a2e)
![image](https://github.com/BulatRuslanovich/Arithmetic-coding/assets/113189826/f099e624-be51-4ebb-a9b3-24edf44aa449)
![image](https://github.com/BulatRuslanovich/Arithmetic-coding/assets/113189826/e1dc8e6d-04fb-417a-9723-1b564a73f1f7)

### Общий принцип (алгоритм) работы:
#### Кодирование:
1. На вход программы поступает текст - вводится с клавиатуры.
2. Из полученного текста создается алфавит - массив символов, исключающий повторы.
3. Создается массив накапливаемых частот (размер которого равен размеру алфавита) для символов из алфавита.
4. Вызывается классовый метод кодирования, преобразующий исходный текст в последовательность 0 и 1

#### Раскодирование:
1. На вход поступает строка, состоящая из закодированных символов (т.е. кодовая строка из 0 и 1).
2. Вызывается классовый метод декодирования, преобразующий последовательность 0 и 1 в исходный текст