Код расширителя
![]() | Эту статью может потребовать очистки Википедии , чтобы она соответствовала стандартам качества . Конкретная проблема заключается в следующем: отсутствуют определения, а грамматика требует тщательного редактирования. Слепое указание на ссылки не должно быть целью статьи. Отсутствует научная экспозиция. ( Июль 2012 г. ) |
Коды расширителя | |
---|---|
двудольный расширительный граф | |
Классификация | |
Тип | Линейный блочный код |
Длина блока | |
Длина сообщения | |
Ставка | |
Расстояние | |
Размер алфавита | |
Обозначения | -код |
В теории кодирования расширительные коды образуют класс кодов с исправлением ошибок , которые создаются из двудольных расширительных графов . Наряду с кодами Юстесена особый интерес представляют расширительные коды, поскольку они имеют постоянную положительную скорость , постоянное положительное относительное расстояние и постоянный размер алфавита . Фактически алфавит содержит всего два элемента, поэтому коды-расширители относятся к классу двоичных кодов . Более того, коды расширения могут как кодироваться, так и декодироваться за время, пропорциональное длине блока кода.
Коды расширителя
[ редактировать ]В теории кодирования расширительный код — это линейный блочный код , матрица проверки четности которого является матрицей смежности двудольного графа-расширителя . Эти коды имеют хорошее относительное расстояние , где и являются свойствами графа расширения, как определено позже, скорость и декодируемость (алгоритмы времени выполнения существовать).
Определение
[ редактировать ]Позволять быть - бирегулярный граф между множеством узлы , называемые переменными , и набор узлы , называемые ограничениями .
Позволять быть функцией, спроектированной так, что для каждого ограничения , переменные, соседние являются .
Позволять быть кодом, исправляющим ошибки, длиной блока . Код расширителя это код длины блока чьи кодовые слова являются словами такой, что для , является кодовым словом . [1]
Было показано, что существуют нетривиальные графы-расширители без потерь. Более того, мы можем их явно сконструировать. [2]
Ставка
[ редактировать ]Скорость — это его размерность, деленная на длину блока. В этом случае матрица проверки четности имеет размер , и, следовательно, имеет ставку как минимум .
Расстояние
[ редактировать ]Предполагать . Тогда расстояние а код расширения по крайней мере .
Доказательство
[ редактировать ]Обратите внимание, что мы можем рассмотреть каждое кодовое слово в как подмножество вершин , говоря, что вершина тогда и только тогда, когда индекс кодового слова равен 1. Тогда является кодовым словом тогда и только тогда, когда каждая вершина смежно с четным числом вершин в . (Чтобы быть кодовым словом, , где — матрица проверки четности. Тогда каждая вершина в соответствует каждому столбцу . Умножение матрицы то дает желаемый результат.) Итак, если вершина смежна с одной вершиной в , мы сразу знаем, что не является кодовым словом. Позволять обозначаем соседей по из , и обозначим тех соседей которые уникальны, т. е. смежны с одной вершиной .
Лемма 1
[ редактировать ]Для каждого размера , .
Доказательство
[ редактировать ]Тривиально, , с подразумевает . следует, поскольку степень каждой вершины в является . По свойству расширения графа должно существовать множество ребра, ведущие в различные вершины. Остальные края составляют максимум соседи не уникальные, поэтому .
Следствие
[ редактировать ]Каждый достаточно малый имеет единственного соседа. Это следует из того, что .
Лемма 2
[ редактировать ]Каждое подмножество с имеет единственного соседа.
Доказательство
[ редактировать ]Лемма 1 доказывает справедливость , так что предположим . Позволять такой, что . По лемме 1 мы знаем, что . Тогда вершина находится в если только , и мы это знаем , поэтому по первой части леммы 1 мы знаем . С , , и, следовательно, не пуст.
Следствие
[ редактировать ]Обратите внимание, что если имеет хотя бы 1 уникального соседа, т.е. , то соответствующее слово соответствующий не может быть кодовым словом, поскольку оно не будет умножать вектор всех нулей на матрицу проверки четности. Согласно предыдущему аргументу, . С линейно, заключаем, что имеет расстояние как минимум .
Кодирование
[ редактировать ]Время кодирования расширительного кода ограничено сверху временем кодирования общего линейного кода - путем матричного умножения. Результат Спилмана показывает, что кодирование возможно в время. [3]
Декодирование
[ редактировать ]Расшифровка кодов расширителей возможна в время, когда используя следующий алгоритм.
Позволять быть вершиной что соответствует индекс в кодовых словах . Позволять быть принятым словом, и . Позволять быть , и быть . Затем рассмотрим жадный алгоритм:
Ввод: полученное слово .
initialize y' to y while there is a v in R adjacent to an odd number of vertices in V(y') if there is an i such that o(i) > e(i) flip entry i in y' else fail
Вывод: ошибка или измененное кодовое слово. .
Доказательство
[ редактировать ]Сначала мы покажем корректность алгоритма, а затем проверим время его работы.
Корректность
[ редактировать ]Мы должны показать, что алгоритм завершается с использованием правильного кодового слова, когда полученное кодовое слово находится на расстоянии половины кода от исходного кодового слова. Пусть набор поврежденных переменных будет , , и множество неудовлетворенных (соседних с нечётным числом вершин) вершин в быть . Следующая лемма окажется полезной.
Лемма 3
[ редактировать ]Если , то есть с .
Доказательство
[ редактировать ]По лемме 1 мы знаем, что . Таким образом, средняя вершина имеет по крайней мере уникальные соседи (напомним, что уникальные соседи неудовлетворены и, следовательно, способствуют ), с , и, следовательно, существует вершина с .
Итак, если мы еще не достигли кодового слова, то всегда будет какая-то вершина, которую можно перевернуть. Далее мы покажем, что количество ошибок никогда не может превысить .
Лемма 4
[ редактировать ]Если мы начнем с , то мы никогда не достигнем в любой точке алгоритма.
Доказательство
[ редактировать ]Когда мы переворачиваем вершину , и меняются местами, и поскольку у нас было , это означает, что количество неудовлетворенных вершин справа уменьшается как минимум на одну после каждого переворота. С , начальное число неудовлетворенных вершин не более , по графику -регулярность. Если бы мы достигли строки с ошибок, то по лемме 1 будет как минимум уникальные соседи, а это значит, что будет как минимум неудовлетворенные вершины — противоречие.
Леммы 3 и 4 показывают нам, что если мы начнем с (половина расстояния ), то мы всегда найдем вершину перевернуть. Каждый переворот уменьшает количество неудовлетворенных вершин в не менее чем на 1, и, следовательно, алгоритм завершается не более чем через шагов и завершается на некотором кодовом слове по лемме 3. (Если бы не кодовое слово, была бы какая-то вершина, которую можно было бы перевернуть). Лемма 4 показывает нам, что мы никогда не сможем оказаться дальше, чем от правильного кодового слова. Поскольку код имеет расстояние (с ), кодовое слово, на котором оно заканчивается, должно быть правильным кодовым словом, поскольку количество переворотов битов меньше половины расстояния (поэтому мы не могли пройти достаточно далеко, чтобы добраться до любого другого кодового слова).
Сложность
[ редактировать ]Теперь мы покажем, что алгоритм может обеспечить декодирование с линейным временем. Позволять быть постоянным, и быть максимальной степенью любой вершины в . Обратите внимание, что также постоянна для известных конструкций.
- Предварительная обработка: требуется время вычислить, каждая ли вершина в имеет нечетное или четное число соседей.
- Предварительная обработка 2: Берем время вычислить список вершин в которые имеют .
- Каждая итерация: мы просто удаляем первый элемент списка. Чтобы обновить список нечетных/четных вершин в , нам нужно только обновить записи, вставка/удаление по мере необходимости. Затем мы обновляем записи в списке вершин в с более нечетными, чем четными соседями, вставка/удаление по мере необходимости. Таким образом, каждая итерация занимает время.
- Как утверждалось выше, общее число итераций не превышает .
Это дает общее время работы время, где и являются константами.
См. также
[ редактировать ]- Расширяемый график
- Код проверки четности низкой плотности
- Линейное время кодирования и декодирования кодов, исправляющих ошибки.
- Коды ABNNR и AEL
Примечания
[ редактировать ]Эта статья основана на конспектах курса доктора Венкатесана Гурусвами. [4]
Ссылки
[ редактировать ]- ^ Сипсер, М.; Спилман, Д.А. (1996). «Расширительные коды». Транзакции IEEE по теории информации . 42 (6): 1710–1722. дои : 10.1109/18.556667 .
- ^ Капальбо, М.; Рейнгольд, О.; Вадхан, С.; Вигдерсон, А. (2002). «Проводники случайности и расширители без потерь постоянной степени» . STOC '02 Материалы тридцать четвертого ежегодного симпозиума ACM по теории вычислений . АКМ. стр. 659–668. дои : 10.1145/509907.510003 . ISBN 978-1-58113-495-7 . S2CID 1918841 .
- ^ Спилман, Д. (1996). «Кодируемые с линейным временем и декодируемые коды с исправлением ошибок». Транзакции IEEE по теории информации . 42 (6): 1723–31. CiteSeerX 10.1.1.47.2736 . дои : 10.1109/18.556668 .
- ^ Гурусвами, В. (15 ноября 2006 г.). «Лекция 13: Коды расширителя» (PDF) . CSE 533: Исправление ошибок . Университет Вашингтона.
Гурусвами, В. (март 2010 г.). «Примечания 8: Коды расширителя и их декодирование» (PDF) . Введение в теорию кодирования . Университет Карнеги-Меллон.
Гурусвами, В. (сентябрь 2004 г.). «Гостевая колонка: коды, исправляющие ошибки, и графы-расширители» . Новости ACM SIGACT . 35 (3): 25–41. дои : 10.1145/1027914.1027924 . S2CID 17550280 .