AN-коды
Эта статья нуждается в дополнительных цитатах для проверки . ( май 2011 г. ) |
AN-коды [1] — это код, исправляющий ошибки , который используется в арифметических приложениях. Арифметические коды обычно использовались в компьютерных процессорах для обеспечения точности арифметических операций, когда электроника была более ненадежной. Арифметические коды помогают процессору обнаружить ошибку и исправить ее. Без этих кодов процессоры были бы ненадежны, поскольку любые ошибки остались бы незамеченными. Коды AN — это арифметические коды, названные в честь целых чисел. и которые используются для кодирования и декодирования кодовых слов.
Эти коды отличаются от большинства других кодов тем, что они используют арифметический вес для максимизации арифметического расстояния между кодовыми словами в отличие от веса Хэмминга и расстояния Хэмминга . Арифметическое расстояние между двумя словами является мерой количества ошибок, допущенных при выполнении арифметической операции. Использование арифметического расстояния необходимо, поскольку одна ошибка в арифметической операции может вызвать большое расстояние Хэмминга между полученным ответом и правильным ответом.
Арифметический вес и расстояние
[ редактировать ]Арифметический вес целого числа в базе определяется
- [ нужна ссылка ]
где < , , и . Арифметическое расстояние слова ограничено сверху его весом Хэмминга, поскольку любое целое число может быть представлено его стандартной полиномиальной формой где это цифры целого числа. Удаление всех терминов, в которых будет моделировать равен его весу Хэмминга. Арифметический вес обычно будет меньше веса Хэмминга, поскольку допускается быть отрицательным. Например, целое число который в двоичном формате имеет вес Хэмминга . Это быстрая верхняя граница арифметического веса, поскольку . Однако, поскольку может быть отрицательным, мы можем написать что делает арифметический вес равным .
Арифметическое расстояние между двумя целыми числами определяется выражением
- [ нужна ссылка ]
Это одна из основных метрик, используемых при анализе арифметических кодов. [ нужна ссылка ]
AN-коды
[ редактировать ]Коды AN определяются целыми числами и и используются для кодирования целых чисел из к такой, что
- <
Каждый выбор приведет к другому коду, в то время как служит ограничивающим фактором для обеспечения полезных свойств на расстоянии кода. Если слишком велико, оно может пропустить в код кодовое слово с очень малым арифметическим весом, что ухудшит расстояние всего кода. Чтобы использовать эти коды, перед выполнением арифметической операции над двумя целыми числами каждое целое число умножается на . Пусть результатом операции над кодовыми словами будет . Обратите внимание, что также должно быть между к для правильного декодирования. Чтобы расшифровать, просто разделите . Если не является фактором , то произошла хотя бы одна ошибка и наиболее вероятным решением будет кодовое слово с наименьшим арифметическим расстоянием от . Как и коды, использующие расстояние Хэмминга, коды AN могут корректировать до ошибки, где расстояние кода.
Например, код AN с , операция сложения и начнется с кодирования обоих операндов. Это приводит к операции . Затем, чтобы найти решение, разделим . Пока > , это будет возможная операция по коду. Предположим, что в каждом двоичном представлении операндов возникает ошибка, такая что и , затем . Обратите внимание, что поскольку , вес Хэмминга между полученным словом и правильным решением равен после того, как ошибки. Для вычисления арифметического веса возьмем который можно представить как или . В любом случае арифметическое расстояние равно как и ожидалось, поскольку это количество допущенных ошибок. Чтобы исправить эту ошибку, будет использоваться алгоритм вычисления ближайшего к полученному слову кодового слова с точки зрения арифметического расстояния. Подробно алгоритмы описывать не будем.
Чтобы гарантировать, что расстояние кода не будет слишком маленьким, мы определим модульные AN-коды. Модульный AN-код является подгруппой , где . Коды измеряются с точки зрения модульного расстояния, которое определяется в виде графа, вершины которого являются элементами . Две вершины и связаны, если и только если
где и < < , . Тогда модульное расстояние между двумя словами — это длина кратчайшего пути между их узлами в графе. Модульный вес слова – это его расстояние от что равно
На практике значение обычно выбирают таким образом, чтобы поскольку большая часть компьютерной арифметики вычисляется поэтому не происходит дополнительной потери данных из-за выхода кода за пределы границ, поскольку компьютер также будет за пределами границ. Выбор также имеет тенденцию приводить к созданию кодов с большими расстояниями, чем другие коды.
Используя модульный вес с , коды AN будут циклическими кодами .
определение : Циклический AN-код — это код это подгруппа , где .
Циклический AN-код является главным идеалом кольца . Есть целые числа и где и удовлетворяют определению кода AN. Циклические AN-коды представляют собой подмножество циклических кодов и обладают теми же свойствами.
Коды Мандельбаума-Бэрроуза
[ редактировать ]Коды Мандельбаума-Бэрроуза представляют собой тип циклических AN-кодов, введенных Д. Мандельбаумом и Дж. Т. Барроузом. [2] [3] Эти коды создаются путем выбора быть простым числом, которое не делится такой, что генерируется и , и . Позволять быть положительным целым числом, где и . Например, выбирая , и результатом будет код Мандельбаума-Бэрроуза такой, что < в базе .
Для анализа расстояния кодов Мандельбаума-Бэрроуза нам понадобится следующая теорема.
Теорема : Пусть быть циклическим AN-кодом с генератором , и
Затем,
Доказательство : Предположим, что каждый имеет уникальный циклический NAF [4] представительство, которое
Мы определяем матрица с элементами где и . Эта матрица по существу представляет собой список всех кодовых слов в где каждый столбец представляет собой кодовое слово. С является циклическим, каждый столбец матрицы имеет одинаковое количество нулей. Теперь мы должны вычислить , что раз количество кодовых слов, которые не заканчиваются на . Как свойство находиться в циклическом NAF, если есть с < . С с < , затем < . Тогда количество целых чисел, последним битом которых является ноль, равно . Умножив это на символов в кодовых словах дает нам сумму весов кодовых слов по желанию.
Теперь мы будем использовать предыдущую теорему, чтобы показать, что коды Мандельбаума-Бэрроуза эквидистантны (что означает, что каждая пара кодовых слов имеет одинаковое расстояние) с расстоянием
доказательство : Пусть , затем и не делится на . Это подразумевает, что там . Затем . Это доказывает, что равноудален, поскольку все кодовые слова имеют одинаковый вес, как . Поскольку все кодовые слова имеют одинаковый вес и по предыдущей теореме мы знаем общий вес всех кодовых слов, расстояние кода находится путем деления общего веса на количество кодовых слов (исключая 0).
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Петерсон, В.В. и Уэлдон, Э.Дж.: Коды, исправляющие ошибки. Кембридж, Массачусетс: MIT Press, 1972.
- ^ Мэсси, Дж.Л. и Гарсия, Онтарио: Коды с исправлением ошибок в компьютерной арифметике. В: Достижения в области науки об информационных системах, Vol. 4, гл. 5. (Под редакцией Дж. Т. Тона). Нью-Йорк: Пленум Пресс, 1972.
- ^ Дж. Х. Ван Линт (1982). Введение в теорию кодирования. ГТМ. 86. Нью-Йорк: Спрингер-Верлаг.
- ^ Кларк, В.Е. и Лян, Дж.Дж.: О модульном весе и циклических несмежных формах для арифметических кодов. IEEE Транс. Информация. Теория, 20 стр. 767-770 (1974).