В теория кодирования, Алгоритм Земора, разработан и разработан Жилем Земором,[1] рекурсивный подход к построению кода с низкой сложностью. Это улучшение алгоритма Sipser и Шпильман.
Земор рассматривал типичный класс конструкции Зипсера – Шпильмана коды расширителей, где базовый граф двудольный граф. Сипсер и Спилман представили конструктивное семейство асимптотически хороших кодов линейных ошибок вместе с простым параллельным алгоритмом, который всегда удаляет постоянную долю ошибок. Статья основана на материалах курса доктора Венкатесана Гурусвами. [2]
Построение кода
Алгоритм Земора основан на типе графики расширителей называется Граф Таннера. Построение кода впервые было предложено Таннером.[3] Коды основаны на двойная крышка , обычный эспандер , который является двудольным графом. =, куда - множество вершин и - множество ребер и = и = , куда и обозначает набор из 2-х вершин. Позволять - количество вершин в каждой группе, т.е., . Набор кромок иметь размер = и каждый край в имеет одну конечную точку в обоих и . обозначает множество ребер, содержащих .
Предположим, заказ на , поэтому порядок будет производиться по всем краям для каждого . Позволять конечное поле , и к слову в , пусть подслово слова будет проиндексировано . Обозначим это слово через . Подмножество вершин и вызывает каждое слово раздел на неперекрывающиеся подслова , куда колеблется над элементами . Для построения кода , рассмотрим линейный подкод , который является код, где , размер алфавита . Для любой вершины , позволять быть некоторым порядком вершины рядом с . В этом коде каждый бит связан с ребром из .
Мы можем определить код быть набором двоичных векторов из такое, что для каждой вершины из , это кодовое слово . В этом случае можно рассмотреть частный случай, когда каждое ребро примыкает точно к вершины . Это означает, что и составляют, соответственно, множество вершин и множество ребер регулярный график .
Назовем код построенный таким образом как код. Для данного графа и заданный код , есть несколько коды, поскольку существуют разные способы упорядочения ребер, инцидентных данной вершине , т.е. . Фактически наш код состоят из всех кодовых слов, таких что для всех . Код линейный в поскольку он генерируется из субкода , что является линейным. Код определяется как для каждого .
График G и код C
На этом рисунке . Он показывает график и код .
В матрице , позволять равен второму по величине собственное значение из матрица смежности из . Здесь наибольшее собственное значение . Сделаны два важных утверждения:
Утверждение 1
. Позволять - скорость линейного кода, построенного из двудольного графа, чьи разрядные узлы имеют степень и чьи узлы подкода имеют степень . Если единый линейный код с параметрами и оценить связан с каждым из узлов подкода, то .
Доказательство
Позволять - скорость линейного кода, равная Пусть есть узлы подкода в графе. Если степень подкода равна , то код должен иметь цифр, поскольку каждый цифровой узел подключен к из ребра в графе. Каждый узел подкода вносит свой вклад уравнения к матрице проверки на четность для всего . Эти уравнения не могут быть линейно независимыми. Следовательно,
, Поскольку значение , т. е. разрядным узлом этого двудольного графа является и тут , мы можем записать как:
Утверждение 2
-
Если линейный код скорости , длина кода блока , и минимальное относительное расстояние , и если является графом инцидентности вершин ребер - регулярный граф со вторым по величине собственным значением , то код имеет рейтинг не менее и минимальное относительное расстояние не менее .
Доказательство
Позволять быть выведенным из регулярный график . Итак, количество переменных является а количество ограничений равно . По словам Алон-Чанга,[4] если является подмножеством вершин размера , то количество ребер, содержащихся в подграфе, индуцируется в самое большее .
В результате любой набор переменные будут иметь не менее ограничения как соседи. Таким образом, среднее количество переменных на ограничение составляет:
Так что если , то слово относительного веса , не может быть кодовым словом . Неравенство удовлетворен для . Следовательно, не может иметь ненулевое кодовое слово относительного веса или менее.
В матрице , можно считать, что ограничен от . Для этих значений в котором нечетное простое число, существуют явные конструкции последовательностей - правильные двудольные графы со сколь угодно большим числом вершин такие, что каждый граф в последовательности есть График Рамануджана. Он называется графом Рамануджана, поскольку удовлетворяет неравенству . Некоторые свойства расширения видны на графике как расстояние между собственными значениями и . Если график является графом Рамануджана, то это выражение станет в конце концов, как становится большим.
Алгоритм Земора
Алгоритм итеративного декодирования, описанный ниже, чередует вершины и в и исправляет кодовое слово в а затем переключается на исправление кодового слова в . Здесь ребра, связанные с вершиной на одной стороне графа, не инцидентны другой вершине на этой стороне. На самом деле, не имеет значения, в каком порядке набор узлов и обрабатываются. Обработка вершин также может выполняться параллельно.
Декодер расшифровывается как декодер для который правильно восстанавливается с любыми кодовыми словами с менее чем ошибки.
Алгоритм декодера
Получено слово:
За к делать // это количество итераций
{ если ( нечетно) // Здесь алгоритм будет чередовать свои два набора вершин.
еще
Итерация : Для каждого , позволять // Декодирование до ближайшего кодового слова.
}
Выход:
Пояснение к алгоритму
С двудольный, множество вершин индуцирует разбиение множества ребер = . Набор вызывает другое разделение, = .
Позволять - полученный вектор, и напомним, что . Первая итерация алгоритма состоит в применении полного декодирования кода, индуцированного для каждого . Это означает, что для замены на каждые , вектор одним из ближайших кодовых слов . Поскольку подмножества ребер не пересекаются для , расшифровка этих подвекторы можно делать параллельно.
Итерация даст новый вектор . Следующая итерация состоит в применении предыдущей процедуры к но с заменен на . Другими словами, он состоит из декодирования всех подвекторов, индуцированных вершинами . В следующих итерациях эти два шага повторяются, поочередно применяя параллельное декодирование к подвекторам, индуцированным вершинами и подвекторам, индуцированным вершинами .
Примечание: [Если и полный двудольный граф, то код продукта с самим собой, и приведенный выше алгоритм сводится к естественному жесткому итеративному декодированию кодов продуктов].
Здесь количество итераций, является . В общем, описанный выше алгоритм может исправить кодовое слово, вес Хэмминга которого не превышает для ценностей . Здесь алгоритм декодирования реализован в виде схемы размером и глубина который возвращает кодовое слово, если вес вектора ошибки меньше .
Теорема
Если является графом Рамануджана достаточно высокой степени для любого , алгоритм декодирования может исправить ошибки, в раундов (где большой- обозначение скрывает зависимость от ). Это может быть реализовано за линейное время на одном процессоре; на процессоров каждый раунд может быть реализован в постоянное время.
Доказательство
Так как алгоритм декодирования нечувствителен к значению ребер и линейности, мы можем предположить, что переданное кодовое слово является вектором всех нулей. Пусть полученное кодовое слово будет . Учитывается набор ребер, имеющий неверное значение при декодировании. Здесь под неверным значением мы подразумеваем в любой из бит. Позволять быть начальным значением кодового слова, быть значениями после первого, второго. . . этапы декодирования. Здесь, , и . Здесь соответствует тому набору вершин, который не смог успешно декодировать свое кодовое слово в круглый. Из приведенного выше алгоритма количество неуспешных вершин будет корректироваться на каждой итерации. Мы можем доказать, что убывающая последовательность. . Как мы предполагаем, , приведенное выше уравнение находится в геометрическая убывающая последовательность. Так когда , больше, чем раунды необходимы. Более того, , и если мы реализуем круглый в time, то общее время последовательной работы будет линейным.
Недостатки алгоритма Земора
- Это длительный процесс, так как количество итераций в алгоритме декодера принимает
- Алгоритм декодирования Земора затрудняет декодирование стирания. Подробный способ улучшения алгоритма:
приведены в.[5]
Смотрите также
Рекомендации