stringtranslate.com

Код расширителя

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

Коды расширителя

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

Определение

Пусть это бирегулярный граф между набором узлов , называемых переменными , и набором узлов , называемых ограничениями .

Пусть – функция, спроектированная так, что для каждого ограничения соседними переменными являются .

Пусть – код, исправляющий ошибки, длиной блока . Код расширения — это код длины блока , кодовые слова которого являются такими словами , что для является кодовым словом . [1]

Было показано, что существуют нетривиальные графы-расширители без потерь. Более того, мы можем их явно сконструировать. [2]

Ставка

Скорость — это его размерность, деленная на длину блока. В этом случае матрица проверки четности имеет размер и, следовательно, имеет скорость не менее .

Расстояние

Предполагать . Тогда расстояние кода расширителя не менее .

Доказательство

Обратите внимание, что мы можем рассматривать каждое кодовое слово в как подмножество вершин , говоря, что вершина тогда и только тогда, когда индекс кодового слова равен 1. Тогда это кодовое слово тогда и только тогда, когда каждая вершина смежна с четным числом вершин в . (Чтобы быть кодовым словом, где - матрица проверки на четность. Тогда каждая вершина в соответствует каждому столбцу . Умножение матрицы дает желаемый результат.) Итак, если вершина смежна с одной вершиной в , мы сразу знаем, что это не кодовое слово. Пусть обозначают соседей в , и обозначают тех соседей, которые уникальны, т. е. смежны с одной вершиной из .

Лемма 1

Для каждого размера .

Доказательство

Тривиально, поскольку подразумевает . следует, поскольку степень каждой вершины в есть . По свойству расширения графа должно существовать множество ребер, ведущих в различные вершины. Остальные ребра делают максимум соседей неуникальными, поэтому .

Следствие

Каждый достаточно малый элемент имеет единственного соседа. Это следует из того, что .

Лемма 2

Каждое подмножество имеет уникального соседа.

Доказательство

Лемма 1 доказывает этот случай , поэтому предположим . Пусть такое то . По лемме 1 мы знаем, что . Тогда вершина находится в iff и мы знаем, что , поэтому по первой части леммы 1 мы знаем . Поскольку , , и, следовательно, не пусто.

Следствие

Обратите внимание, что если a имеет хотя бы 1 уникального соседа, т. е. , то соответствующее слово, соответствующее не может быть кодовым словом, поскольку оно не будет умножаться на вектор всех нулей на матрицу проверки четности. Согласно предыдущему аргументу, . Поскольку линейно, мы заключаем, что расстояние не менее .

Кодирование

Время кодирования расширительного кода ограничивается сверху временем кодирования общего линейного кода - путем умножения матриц. Результат Спилмана показывает, что кодирование возможно во времени. [3]

Декодирование

Декодирование кодов расширителя возможно по времени при использовании следующего алгоритма.

Позвольте быть вершиной , которая соответствует индексу th в кодовых словах . Пусть – принятое слово, и . Пусть будет , и будет . Затем рассмотрим жадный алгоритм:


Вход: полученное слово .

инициализировать y' как yв то время как в R есть av, смежный с нечетным числом вершин в V(y') если существует i такое, что o(i) > e(i) перевернуть запись я в y' еще неудача

Выход: ошибка или измененное кодовое слово .


Доказательство

Сначала мы покажем корректность алгоритма, а затем проверим время его работы.

Корректность

Мы должны показать, что алгоритм завершается с правильным кодовым словом, когда полученное кодовое слово находится на расстоянии половины кода от исходного кодового слова. Пусть набор поврежденных переменных равен , , а набор неудовлетворенных (соседних с нечетным числом вершин) вершин в be . Следующая лемма окажется полезной.

Лемма 3

Если , то имеется с .

Доказательство

По лемме 1 мы знаем, что . Таким образом, средняя вершина имеет по крайней мере уникальных соседей (напомним, что уникальные соседи неудовлетворены и, следовательно, вносят свой вклад в ), поскольку , и, таким образом, существует вершина с .

Итак, если мы еще не достигли кодового слова, то всегда будет какая-то вершина, которую можно перевернуть. Далее мы покажем, что количество ошибок никогда не может превысить .

Лемма 4

Если мы начнем с , то мы никогда не достигнем ни одной точки алгоритма.

Доказательство

Когда мы переворачиваем вершину и меняемся местами, а поскольку у нас было , это означает, что количество неудовлетворенных вершин справа уменьшается как минимум на одну после каждого переворота. Так как , в силу -регулярности графа начальное число неудовлетворенных вершин не превосходит . Если бы мы дошли до строки с ошибками, то по лемме 1 соседей было бы как минимум уникально, а значит, было бы как минимум неудовлетворенных вершин, противоречие.

Леммы 3 и 4 показывают нам, что если мы начнем с (половина расстояния ), то мы всегда найдем вершину для переворота. Каждый переворот уменьшает количество неудовлетворенных вершин как минимум на 1, и, следовательно, алгоритм завершается не более чем на каждом шаге и завершается на некотором кодовом слове по лемме 3. (Если бы это не кодовое слово, была бы какая-то вершина, которую нужно перевернуть. ). Лемма 4 показывает нам, что мы никогда не сможем отойти дальше от правильного кодового слова. Поскольку код имеет расстояние (поскольку ), кодовое слово, на котором он заканчивается, должно быть правильным кодовым словом, поскольку количество битовых переворотов меньше половины расстояния (поэтому мы не могли пройти достаточно далеко, чтобы добраться до любого другого кодового слова).

Сложность

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

  1. Предварительная обработка: требуется время, чтобы вычислить, имеет ли каждая вершина нечетное или четное количество соседей.
  2. Предварительная обработка 2: нам нужно время, чтобы вычислить список вершин, в которых есть .
  3. Каждая итерация: мы просто удаляем первый элемент списка. Чтобы обновить список нечетных/четных вершин в , нам нужно лишь обновлять записи, вставляя/удаляя по мере необходимости. Затем мы обновляем записи в списке вершин, добавляя или удаляя соседей по мере необходимости. Таким образом, каждая итерация требует времени.
  4. Как утверждалось выше, общее число итераций не превышает .

Это дает общее время выполнения, где и являются константами.

Смотрите также

Примечания

Эта статья основана на конспектах курса доктора Венкатесана Гурусвами. [4]

Рекомендации

  1. ^ Сипсер, М.; Спилман, Д.А. (1996). «Расширительные коды». Транзакции IEEE по теории информации . 42 (6): 1710–1722. дои : 10.1109/18.556667.
  2. ^ Капальбо, М.; Рейнгольд, О.; Вадхан, С.; Вигдерсон, А. (2002). «Проводники случайности и расширители без потерь постоянной степени». STOC '02 Материалы тридцать четвертого ежегодного симпозиума ACM по теории вычислений . АКМ. стр. 659–668. дои : 10.1145/509907.510003. ISBN 978-1-58113-495-7. S2CID  1918841.
  3. ^ Спилман, Д. (1996). «Кодируемые с линейным временем и декодируемые коды с исправлением ошибок». Транзакции IEEE по теории информации . 42 (6): 1723–31. CiteSeerX 10.1.1.47.2736 . дои : 10.1109/18.556668. 
  4. Гурусвами, В. (15 ноября 2006 г.). «Лекция 13: Коды расширителя» (PDF) . CSE 533: Исправление ошибок . Университет Вашингтона.
    Гурусвами, В. (март 2010 г.). «Примечания 8: Коды расширителя и их декодирование» (PDF) . Введение в теорию кодирования . Университет Карнеги Меллон.
    Гурусвами, В. (сентябрь 2004 г.). «Гостевая колонка: коды, исправляющие ошибки, и графы-расширители» . Новости ACM SIGACT . 35 (3): 25–41. дои : 10.1145/1027914.1027924. S2CID  17550280.