Коды AN- это код исправления ошибок, который используется в арифметических приложениях. Арифметические коды обычно использовались в компьютерных процессорах, чтобы гарантировать точность его арифметических операций, когда электроника была более ненадежной. Арифметические коды помогают процессору обнаружить ошибку и исправить ее. Без этих кодов процессоры были бы ненадежными, так как любые ошибки остались бы незамеченными. Коды AN - это арифметические коды, названные в честь целых чисел и , которые используются для кодирования и декодирования кодовые слова.
Эти коды отличаются от большинства других кодов тем, что они используют арифметический вес для максимизации арифметического расстояния между кодовыми словами, в отличие от веса Хэмминга и расстояния Хэмминга. Арифметическое расстояние между двумя словами - это мера количества ошибок, допущенных при вычислении арифметической операции. Использование арифметического расстояния необходимо, поскольку одна ошибка в арифметической операции может вызвать большое расстояние Хэмминга между полученным ответом и правильным ответом.
Арифметический вес целого числа в базе определяется как
где < , и . Арифметическое расстояние слова ограничено сверху его весом Хэмминга, поскольку любое целое число может быть представлено стандартной полиномиальной формой где - это цифры целого числа. Удаление всех терминов, где , будет имитировать , равный его весу.. Арифметический вес обычно будет меньше веса Хэмминга, поскольку может быть отрицательным. Например, целое число , которое равно в двоичном формате, имеет вес Хэмминга . Это быстрый верхний предел арифметического веса, поскольку . Однако, поскольку может быть отрицательным, мы можем написать , что делает арифметический вес равным .
Арифметическое расстояние между двумя целыми числами определяется как
Это одна из основных метрик, используемых при анализе арифметических кодов.
Коды AN определяются целыми числами и и используются для кодирования целых чисел от до таких, что
Каждый выбор приведет к другому коду, а служит ограничивающим фактором для обеспечения полезных свойств на расстоянии код. Если слишком велик, он может пропустить кодовое слово с очень маленьким арифметическим весом в код, что приведет к уменьшению расстояния всего кода. Чтобы использовать эти коды, перед выполнением арифметической операции с двумя целыми числами каждое целое число умножается на . Пусть результатом операции над кодовыми словами будет . Обратите внимание, что также должно находиться в диапазоне от до для правильного декодирования. Для декодирования просто разделите . Если не является фактором , то произошла по крайней мере одна ошибка, и наиболее вероятное решение будет - кодовое слово с наименьшим арифметическим расстоянием от . Как и в случае с кодами, использующими расстояние Хэмминга, коды AN могут исправить до ошибок, где - расстояние кода.
Например, код AN с , операция добавления и начнутся с кодирования обоих операндов. Это приводит к операции . Затем, чтобы найти решение, мы делим . Пока >, это будет возможная операция в рамках кода. Предположим, что ошибка возникает в каждом двоичном представлении операндов, так что и , затем . Обратите внимание, что, поскольку , вес Хэмминга между полученным словом и правильным решением равен после ошибок. Чтобы вычислить арифметический вес, возьмем , который можно представить как или . В любом случае арифметическое расстояние равно , как и ожидалось, поскольку это количество допущенных ошибок. Чтобы исправить эту ошибку, будет использоваться алгоритм для вычисления ближайшего кодового слова к принятому слову с точки зрения арифметического расстояния. Подробно описывать алгоритмы не будем.
Чтобы гарантировать, что расстояние кода не будет слишком маленьким, мы определим модульные коды AN. Модульный код AN является подгруппой , где . Коды измеряются в единицах модульного расстояния, которое определяется в терминах графа с вершинами, являющимися элементами . Две вершины и связаны, если и только если
где и <<, . Тогда модульное расстояние между двумя словами - это длина кратчайшего пути между их узлами в графе. Модульный вес слова - это его расстояние от , которое равно
На практике значение обычно выбирается так, чтобы , так как большая часть компьютерной арифметики вычисляется , поэтому нет дополнительной потери данные из-за того, что код выходит за пределы, так как компьютер также будет за пределами. Выбор также приводит к кодам с большим расстоянием, чем другие коды.
При использовании модульного веса с , коды AN будут циклическим кодом.
определение: Циклический код AN - это код , который является подгруппой , где .
Циклический код AN является главным идеалом кольца . Есть целые числа и , где и удовлетворяют определению кода AN. Циклические коды AN представляют собой подмножество циклических кодов и обладают теми же свойствами.
Коды Мандельбаума-Барроуза представляют собой тип циклических кодов AN, введенных Д. Мандельбаумом и Дж. Т. Барроузом. Эти коды создаются путем выбора в качестве простого числа, которое не делит таким образом, чтобы генерируется как и и . Пусть будет положительным целым числом, где и . Например, при выборе и результатом будет код Мандельбаума-Барроуза, такой что <в базе .
Чтобы проанализировать расстояние кодов Мандельбаума-Барроуза, нам понадобится следующая теорема.
теорема: Пусть будет циклическим кодом AN с генератором и
Тогда
доказательство: Предположим, что каждый имеет уникальное циклическое представление NAF, которое является
Мы определяем матрица с элементами где и . Эта матрица по существу представляет собой список всех кодовых слов в , где каждый столбец является кодовым словом. Поскольку является циклическим, каждый столбец матрицы имеет одинаковое количество нулей. Теперь мы должны вычислить , то есть умноженное на количество кодовых слов, которые не заканчиваются на . Как свойство нахождения в циклической NAF, , если существует с <. Поскольку с <, затем <. Тогда количество целых чисел, последний бит которых равен нулю, равно . Умножение этого на символы в кодовых словах дает нам сумму весов кодовых слов по желанию.
Теперь мы воспользуемся предыдущей теоремой, чтобы показать, что коды Мандельбаума-Барроуза эквидистантны (что означает, что каждая пара кодовых слов имеет одинаковое расстояние) с расстоянием
доказательство: Пусть , затем и не делится на . Это означает, что существует . Тогда . Это доказывает, что равноудалено, поскольку все кодовые слова имеют тот же вес, что и . Поскольку все кодовые слова имеют одинаковый вес, а по предыдущей теореме мы знаем общий вес всех кодовых слов, расстояние кода находится путем деления общего веса на количество кодовых слов (исключая 0).