Здесь представлена реализация некоторых простых алгоритмов кодирования и сжатия в рамках курса Компьютерные сети (8 семестр).
- CRC (Cyclic Redundancy Code)
- Код Хэмминга
- Код Шеннона-Фано
- Код Хаффмана
Клиент/сервер. Запуск сервера, потом - клиента. На клиенте производится ввод текстового сообщения. После этого с вероятностью, близкой к 0.5, вносится случайная ошибка. Далее сообщение отправляется на сервер.
На сервере происходит получение сообщения от клиента, его раскодирование CRC. В случае ошибки, сервер запрашивает повторную отправку сообщения от клиента. Так происходит, пока сообщение не будет доставлено успешно.
Client | Server |
|
|
Клиент/сервер. Запуск сервера, потом - клиента. На клиенте производится ввод текстового сообщения. После этого с вероятностью, близкой к 0.5, вносится случайная ошибка. Далее сообщение отправляется на сервер.
На сервере происходит получение сообщения от клиента, его раскодирование кодом Хэмминга с исправлением ошибки (если она есть). Сервер выводит позицию исправленной им ошибки.
Client | Server |
|
|
Программа берёт текстовый файл, кодирует его алгоритмом Шеннона-Фано и оценивает эффективность сжатия.
Программа берёт текстовый файл, кодирует его алгоритмом Хаффмана и оценивает эффективность степень сжатия. Сравнить эффективность сжатия с кодом Шеннона-Фано.
Наиболее существенное различие между двумя алгоритмами кодирования заключается в том, что кодирование Хаффмана является более эффективным и оптимальным по сравнению с кодированием Шеннона-Фано. Обе системы кодирования используют алгоритмы сжатия данных без потерь, и обе используются в различных приложениях, включая сжатие изображений и видео, сжатие звука и передачу данных.
Доказано, что алгоритм Хаффмана всегда выдает оптимальное префиксное кодирование, тогда как алгоритм Шеннона-Фано (может быть) менее эффективным.