@NikSIk31

Алгоритм кодов Рида Соломона?

Доброго времени суток.
Хочу реализовать коды Рида Соломона. Посмотрев, что нигде нету туториалов как программно это сделать, то приходится самому. На гитхабе какие-то длинные реализации и что-то сложно в них разобраться (особенно когда сложный алгоритм, требующий определенную базу описан человеком с более сильными знаниями в языке). Поэтому приходится самому.
Я разобрал алгоритм и хочу узнать насколько я близок к истине и заодно хотелось бы заполнить пробелы по ходу дела. Значит, начнем:
1) Есть входное сообщение (например объявим строку из двух слов "Привет мир!")
2) Дальше мне сложно сказать как именно эта строка преобразуется (она должна преобразоваться в двоичный код или что?) Просто я смотрел пример на числах (там был вектор из чисел) этот вектор из чисел умножали на порождающую матрицу
Насчёт матрицы : она состоит из двух штук
#первая - единичная матрица (длиной в размер вектора из слов)
#вторая - некие числа (как я понял они должны быть определенные чтобы можно было умножать, делить и все это делалось хорошо в концепции ЭВМ) - например мы строим две таблицы "умножение" и "сложение" все по модулю поля. ,А что дальше делать с ними? И какой размер поля брать?
3) После нужно эту матрицу умножить на вектор из элементов входного сообщения и получить вектор с сообщением + избыточными числами, собственно это и есть кодирование.
----
4) Этот вектор немного модифицировать чтобы создать "якобы помехи"
----
5) Чтобы декодировать берём модифицированный вектор и умножаем на обратную матрицу ( к порождающей матрице, тогда без строк в которых мы смоделировали "помехи" ) и результатом будет исходное сообщение.

Блин, это все, что я понял. Честно старался, но получилось так себе. Из основных моментов которые мне не ясны в реализации:
1) Как всё-таки сделать вектор строк, точнее, что делать если есть строка? Т.е. опять же, на числах векторе из чисел вроде бы понятно и умножать на матрицу такой вектор понятно как.
2) Порождающая матрица, как в ней сгенерировать эти числа, которые идут после единичной матрицы? Вроде бы там что-то с полем Галуа связано
2.1) Если всё-таки поле Галуа надо, то каков его размер?

Ух, ну дальше я уж и не знаю наверное не стоит спрашивать про умножение матриц и нахождение обратной.. ( я то умею с обычными числами, надеюсь тут так же и будет, без сюрпризов )

Как вы понимаете я не силен в подобной теме, я честно старался понять. Посмотрел на Хабре, посмотрел Ютуб, но что-то сложновато в некоторых местах. Была бы готовая реализация, то было бы здорово, а то на гитхабе я смотрю одни либы с навороченным кодом и реализацией, которые мне сложно понять.
Надеюсь на ваше понимание
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы