Локально тестируемый код
Локально проверяемый код — это тип кода с исправлением ошибок , для которого можно определить, ли строка является словом в этом коде, просматривая небольшое (часто постоянное) количество битов строки. В некоторых ситуациях полезно знать, повреждены ли данные, не декодируя их целиком, чтобы можно было принять соответствующие меры в ответ. Например, при общении, если получатель сталкивается с поврежденным кодом, он может запросить повторную отправку данных, что может повысить точность этих данных. Аналогичным образом, при хранении данных эти коды позволяют восстановить и правильно перезаписать поврежденные данные.
Напротив, локально декодируемые коды используют небольшое количество битов кодового слова для вероятностного восстановления исходной информации. Доля ошибок определяет, насколько вероятно, что декодер правильно восстановит исходный бит; однако не все локально декодируемые коды пригодны для локального тестирования. [1]
Очевидно, что любое допустимое кодовое слово должно приниматься как кодовое слово, но строки, которые не являются кодовыми словами, могут отличаться только на один бит, что потребует большого количества (конечно, большего, чем постоянное число) тестов. Чтобы учесть это, неудача тестирования определяется только в том случае, если строка отклонена хотя бы на заданную долю ее бит. Это означает, что слова кода должны быть длиннее, чем входные строки, за счет добавления некоторой избыточности.
Определение
[ редактировать ]Для измерения расстояния между двумя струнами расстояние Хэмминга используется .
Расстояние строки из кода вычисляется по
Относительные расстояния вычисляются как доля количества битов.
Код называется -местный -проверяется, существует ли машина Тьюринга M со случайным доступом к входным данным это составляет максимум неадаптивные запросы и удовлетворяет следующему: [2]
- Для любого и , . Другими словами, M принимает доступ к любому кодовому слову C.
- Для такой, что , . M должен отклонять строки -далеко от C, по крайней мере, в половине случаев.
Также скорость кода — это соотношение длины его сообщения и длины кодового слова.
Пределы
[ редактировать ]Остается открытым вопрос, существуют ли локально проверяемые коды линейного размера, но есть несколько конструкций, которые считаются «почти линейными»: [3]
- Полиномиальный, сколь угодно близкий к линейному; для любого , .
- Функции формы , где — функция, стремящаяся к 0. Это делает n ближе к линейному по мере увеличения k. Например:
- для некоторых
- для
И то, и другое было достигнуто, даже при постоянной сложности запроса и двоичном алфавите , например, при для любого .Следующая почти линейная цель линейна с точностью до полилогарифмического коэффициента; . Никто еще не придумал линейно тестируемый код, удовлетворяющий этому ограничению. [3]
В ноябре 2021 года сообщалось о двух препринтах. [4] [5] [6] [7] первая полиномиальная конструкция " -LTC», а именно локально проверяемые коды с постоянной скоростью. , постоянное расстояние и постоянная локальность .
Связь с вероятностно проверяемыми доказательствами
[ редактировать ]Локально проверяемые коды имеют много общего с вероятностно проверяемыми доказательствами (PCP). Это должно быть очевидно из сходства их конструкции. В обоих случаях нам даны случайные неадаптивные запросы в большую строку, и если мы хотим принять, то должны с вероятностью 1, а если нет, то должны принять не более чем в половине случаев. Основное отличие состоит в том, что PCP заинтересованы в принятии если существует так что . С другой стороны, локально проверяемые коды допускают если это часть кода. Если предположить, что доказательство PCP кодирует локально тестируемый код, многое может пойти не так. Например, определение PCP ничего не говорит о недействительных доказательствах, а только о неверных входных данных.
Несмотря на это различие, локально проверяемые коды и PCP достаточно похожи, поэтому часто для построения одного доказывающее устройство попутно строит другое. [8]
Примеры
[ редактировать ]Код Адамара
[ редактировать ]Один из самых известных кодов исправления ошибок — код Адамара — является локально тестируемым кодом. Кодовое слово x кодируется в коде Адамара как линейная функция. (мод 2). Для этого необходимо вывести результат этой функции для каждого возможного значения y, что требует экспоненциально больше битов, чем входные данные. Чтобы проверить, является ли строка w кодовым словом кода Адамара, все, что нам нужно сделать, — это проверить, является ли функция, которую она кодирует, линейной. Это означает просто проверить, если для x и y равномерно случайные векторы (где обозначает побитовое исключающее ИЛИ ).
Легко видеть, что для любой допустимой кодировки , это уравнение верно, поскольку оно является определением линейной функции. Однако несколько сложнее показать, что строка, которая -далеко от C будет иметь верхнюю границу своей ошибки с точки зрения . Одна граница находится с помощью прямого подхода аппроксимации вероятности того, что ровно один из трех зондов даст неправильный результат. Пусть A, B и C — события , , и быть неверным. Пусть E будет событием, когда произошло ровно одно из этих событий. Это выходит на
Это работает для , но вскоре после этого . При дополнительной работе можно показать, что ошибка ограничена
Для любого данного , это имеет только постоянную вероятность ложных срабатываний, поэтому мы можем просто проверять постоянное количество раз, чтобы получить вероятность ниже 1/2. [3]
Длинный код
[ редактировать ]Длинный код — это еще один код с очень большим раздутием, который близок к локальному тестированию. Учитывая ввод (обратите внимание, это занимает биты для представления), функция, которая возвращает бит ввода, , оценивается по всем возможным -битовые входы , а кодовое слово представляет собой их объединение (длиной ). Способ локальной проверки этого с некоторыми ошибками — выбрать равномерно случайный входной сигнал. и установить , но с небольшой вероятностью перевернуть каждый бит, . Принять функцию в качестве кодового слова, если . Если это кодовое слово, оно будет принято пока не изменился, что происходит с вероятностью . Это нарушает требование о том, чтобы кодовые слова всегда принимались, но может быть достаточно для некоторых нужд. [9]
Другие локально проверяемые коды включают коды Рида-Мюллера ( Локально декодируемые коды алгоритм декодирования см. в разделе « »), коды Рида-Соломона и короткий код.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Кауфман, Тали ; Видерман, Майкл. «Локально проверяемые и локально декодируемые коды» .
- ^ Бен-Сассон, Эли; Судан, Мадху. «Надежные локально проверяемые коды и продукты кодов» (PDF) .
- ^ Jump up to: а б с Гольдрейх, Одед (2005). «Краткие локально проверяемые коды и доказательства (обзор)» . CiteSeerX 10.1.1.110.2530 .
- ^ Пантелеев Павел; Калачев, Глеб (05.11.2021). «Асимптотически хорошие квантовые и локально проверяемые классические коды LDPC». arXiv : 2111.03654 [ cs.IT ].
- ^ Динур, Ирит ; Эвра, Шай ; Ливн, Рон; Любоцкий, Александр ; Мозес, Шахар (08 ноября 2021 г.). «Локально проверяемые коды с постоянной скоростью, расстоянием и местоположением». arXiv : 2111.04808 [ cs.IT ].
- ^ Рорвиг, Мордехай (24 ноября 2021 г.). «Исследователи побеждают случайность, чтобы создать идеальный код» . Журнал Кванта . Проверено 24 ноября 2021 г.
- ^ Рорвиг, Мордехай (6 января 2022 г.). «Кубиты могут быть такими же безопасными, как и биты, показывают исследователи» . Журнал Кванта . Проверено 2 февраля 2022 г.
- ^ Черагчи, Махди. «Локально проверяемые коды» .
- ^ Кол, Гиллат; Раз, Ран. «Границы локально проверяемых кодов с уникальными тестами» (PDF) .
Внешние ссылки
[ редактировать ]- «Прорывы — локально проверяемые коды с постоянной скоростью, расстоянием и локальностью | Институт теории вычислений Саймонса» . simons.berkeley.edu . 6 октября 2021 г.