hamming_project

Модуль, реализующий канал связи на основе кода Хэмминга, функционал:

  • Кодирование, внесение ошибки, декодирование
  • Работа с любым типом файлов, директориями, архивами
  • CLI с модулем docopt
  • Выбор между самописным интерфейсом матрицы и интерфейсом numpy
  • Поддержка мультипроцессинга
  • Легко расширяемая структура

Запуск проекта:

  • git clone https://github.com/o-l-e-z-a/hamming_project.git && cd hamming_project && pip install -r requirements.txt
  • python main.py run -h -> для получения документации по запуска консольного приложения

Краткое описание алгоритма:

  • построение проверочной матрица размерами (n, n-k), где n - общее число символов, k - количество информационных бит
  • построение порождающей матрицы размерами (n, k)
  • кодирование осуществляется путем уноможения вектора i, состоящего из информационных бит на порождающую матрицу
  • в результат кодирования вносится 1 ошибка в случайный бит (его инвертирование)
  • синдром вычисляется путём умножения проверочной матрицы на вектор с внесённой ошибкой
  • значение синдрома переводится из 2 системы в 10 -> индекс ошибки в векторе
  • исправляем ошибку путём инвертирования бита в найденной позиции и отбрасываем проверочные биты -> результат декодирования