Программный макет следует реализовать в виде Qt-приложения с графическим интерфейсом.
Входными параметрами макета являются
простое число p = 2, 3, 5, 7, 11, … , определяющее код Рида-Соломона над полем GF(p). Ограничить p сверху величиной 1023;
число α из поля GF(p);
кодовое расстояние d.
Программный макет должен:
После ввода p, α и d генерировать порождающий полином g(x) в виде
g(x)=(x-α)(x-α^2 )…(x-α^(d-1) )
а также в виде
g(x)=g_0+g_1 x^1+⋯+g_r x^r
где r – число проверочных символов, r=d+1=n-k, n=p-1.
На основании порождающего полинома генерировать порождающую матрицу G напрямую (циклическим сдвигом) и в приведенно-ступенчатой форме (систематический код).
На основании приведенно-ступенчатой матрицы G генерировать кодовую таблицу систематического кода. В кодовой таблице напротив каждого кодового слова указать его вес.
На основании кодовой таблицы определять кодовое расстояние кода.
Строить спектр кода, в виде гистограммы «вес, число кодовых слов с этим весом».
Также программный макет должен позволять
вводить вектор входного слова;
выдавать результат кодирования для систематического кода;
вводить вектор ошибки;
выдавать результат декодирования в виде да/нет в плане обнаружения ошибки;
выдавать вектор-корректор для исправления ошибки;
выдавать результат да/нет в плане исправления ошибки.
Дополнительно макет должен делать статистические испытания в канале с независимыми символьными ошибками и подсчитывать число ошибочных кодовых слов, число слов с обнаруженными ошибками и число слов с исправленными ошибками.