Локально тестируемый код

Тип кода исправления ошибок

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

Напротив, локально декодируемые коды используют небольшое количество бит кодового слова для вероятностного восстановления исходной информации. Доля ошибок определяет, насколько вероятно, что декодер правильно восстановит исходный бит; однако, не все локально декодируемые коды локально проверяемы. [1]

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

Определение

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

Δ ( х , у ) = | { я : х я у я } | {\displaystyle \Дельта (x,y)=|\{i:x_{i}\neq y_{i}\}|}

Расстояние строки от кода вычисляется по формуле ж {\displaystyle w} С : { 0 , 1 } к { 0 , 1 } н {\displaystyle C:\{0,1\}^{k}\to \{0,1\}^{n}}

Δ ( ж , С ) = мин х { Δ ( ж , С ( х ) ) } {\displaystyle \Delta (w,C)=\min _{x}\{\Delta (w,C(x))\}}

Относительные расстояния вычисляются как доля числа бит.

δ ( х , у ) = Δ ( х , у ) / н  и  δ ( ж , С ) = Δ ( ж , С ) / н {\displaystyle \delta (x,y)=\Delta (x,y)/n{\text{ и }}\delta (w,C)=\Delta (w,C)/n}

Код называется локально -тестируемым, если существует машина Тьюринга M, имеющая случайный доступ к входным данным , которая делает не более чем неадаптивные запросы и удовлетворяет следующим условиям: [2] С : { 0 , 1 } к { 0 , 1 } н {\displaystyle C:\{0,1\}^{k}\to \{0,1\}^{n}} д {\displaystyle д} δ {\displaystyle \дельта} ж {\displaystyle w} д {\displaystyle д} ж {\displaystyle w}

  • Для любого и , . Другими словами, M принимает данный доступ к любому кодовому слову C. х { 0 , 1 } к {\displaystyle x\in \{0,1\}^{k}} ж = С ( х ) {\displaystyle w=C(x)} П г [ М ж ( 1 к ) = 1 ] = 1 {\displaystyle Pr[M^{w}(1^{k})=1]=1}
  • Для такого, что , . M должен отвергать строки , далекие от C, по крайней мере, в половине случаев. ж { 0 , 1 } н {\displaystyle w\in \{0,1\}^{n}} δ ( ж , С ) > δ {\displaystyle \delta (w,C)>\delta } П г [ М ж ( 1 к ) = 1 ] 1 / 2 {\displaystyle Pr[M^{w}(1^{k})=1]\leq 1/2} δ {\displaystyle \дельта}

Также скорость кода — это отношение длины сообщения к длине кодового слова.

г = | х | | С ( х ) | {\displaystyle r={\frac {|x|}{|C(x)|}}}

Пределы

Остается открытым вопрос, существуют ли локально проверяемые коды линейного размера, но есть несколько конструкций, которые считаются «почти линейными»: [3]

  1. Полином сколь угодно близкий к линейному; для любого , . ϵ > 0 {\displaystyle \epsilon >0} н = к 1 + ϵ {\displaystyle n=k^{1+\epsilon }}
  2. Функции вида , где — функция, стремящаяся к 0. Это приближает n к линейной по мере увеличения k. Например: н = к 1 + ϵ ( к ) {\displaystyle n=k^{1+\epsilon (k)}} ϵ ( к ) {\displaystyle \epsilon (k)}
    • 1 / бревно бревно к {\displaystyle 1/\log \log k}
    • 1 / ( бревно к ) с {\displaystyle 1/(\log k)^{c}} для некоторых с ( 0 , 1 ) {\displaystyle c\in (0,1)}
    • опыт ( ( бревно бревно бревно к ) с ) / бревно к {\displaystyle \exp((\log \log \log k)^{c})/\log k} для с ( 0 , 1 ) {\displaystyle c\in (0,1)}

Оба они были достигнуты, даже при постоянной сложности запроса и двоичном алфавите , например, с помощью для любого . Следующая почти линейная цель линейна с точностью до полилогарифмического множителя; . Никто еще не придумал линейно тестируемый код, удовлетворяющий этому ограничению. [3] н = к 1 + 1 / ( бревно к ) с {\displaystyle n=k^{1+1/(\log k)^{c}}} с ( 0 , 1 ) {\displaystyle c\in (0,1)} н = поли ( бревно к ) к {\displaystyle n={\text{поли}}(\log k)*k}

В ноябре 2021 года в двух препринтах сообщалось [4] [5] [6] [7] о первой конструкции «-LTC» за полиномиальное время, а именно локально тестируемых кодов с постоянной скоростью , постоянным расстоянием и постоянной локальностью . с 3 {\displaystyle c^{3}} г {\displaystyle r} δ {\displaystyle \дельта} д {\displaystyle д}

Связь с вероятностно проверяемыми доказательствами

Локально проверяемые коды имеют много общего с вероятностно проверяемыми доказательствами (PCP). Это должно быть очевидно из сходства их конструкции. В обоих случаях нам даются случайные неадаптивные запросы в большую строку, и если мы хотим принять, мы должны с вероятностью 1, а если нет, мы должны принять не более чем в половине случаев. Главное отличие в том, что PCP заинтересованы в принятии, если существует , так что . Локально проверяемые коды, с другой стороны, принимают, если это часть кода. Многое может пойти не так, если предположить, что доказательство PCP кодирует локально проверяемый код. Например, определение PCP ничего не говорит о недействительных доказательствах, только о недействительных входных данных. д {\displaystyle д} х {\displaystyle x} ж {\displaystyle w} М ж ( х ) = 1 {\displaystyle М^{w}(x)=1} ж {\displaystyle w}

Несмотря на это различие, локально проверяемые коды и PCP достаточно похожи, поэтому зачастую для построения одного из них доказывающий по ходу дела строит и другой. [8]

Примеры

Код Адамара

Один из самых известных кодов исправления ошибок, код Адамара , является локально проверяемым кодом. Кодовое слово x кодируется в коде Адамара как линейная функция (mod 2). Это требует перечисления результата этой функции для каждого возможного y, что требует экспоненциально больше бит, чем ее входные данные. Чтобы проверить, является ли строка w кодовым словом кода Адамара, все, что нам нужно сделать, это проверить, является ли кодируемая ею функция линейной. Это означает простую проверку, являются ли x и y равномерно случайными векторами (где обозначает побитовое XOR ). ф ( у ) = я х я у я {\displaystyle f(y)={\sum _{i}{x_{i}y_{i}}}} ж ( х ) ж ( у ) = ж ( х у ) {\displaystyle w(x)\oplus w(y)=w(x\oplus y)} {\displaystyle \oplus}

Легко видеть, что для любого допустимого кодирования это уравнение верно, поскольку это определение линейной функции. Однако несколько сложнее показать, что строка, которая находится далеко от C, будет иметь верхнюю границу своей ошибки в терминах . Одна граница находится прямым подходом аппроксимации шансов того, что ровно один из трех зондов даст неверный результат. Пусть A, B и C будут событиями , , и будут неверными. Пусть E будет событием того, что ровно один из них произойдет. Это приводит к ж {\displaystyle w} δ {\displaystyle \дельта} δ {\displaystyle \дельта} ж ( х ) {\displaystyle w(x)} ж ( у ) {\displaystyle w(y)} ж ( х у ) {\displaystyle w(x\oplus y)}

П ( Э ) П ( А Б С ) 3 П ( А Б ) 3 П ( А ) 3 П ( А Б ) 3 П ( А Б ) 3 δ 6 δ 2 {\displaystyle {\begin{aligned}P(E)&\geq P(A\cup B\cup C)-3*P(A\cup B)\\&\geq 3*P(A)-3*P(A\cup B)-3*P(A\cup B)\\&\geq 3\delta -6\delta ^{2}\end{aligned}}}

Это работает для , но вскоре после этого, . С дополнительной работой можно показать, что ошибка ограничена 0 < δ 5 / 16 {\displaystyle 0<\delta \leq 5/16} 3 δ 6 δ 2 < δ {\displaystyle 3\delta -6\delta ^{2}<\delta }

f ( x ) = { 3 δ 6 δ 2 : 0 δ 5 / 16 45 / 128 : 5 / 16 δ 45 / 128 δ : 45 / 128 δ 1 / 2 {\displaystyle f(x)={\begin{cases}3\delta -6\delta ^{2}&:0\leq \delta \leq 5/16\\45/128&:5/16\leq \delta \leq 45/128\\\delta &:45/128\leq \delta \leq 1/2\end{cases}}}

Для любого заданного значения существует только постоянная вероятность ложных срабатываний, поэтому мы можем просто проверить постоянное количество раз, чтобы получить вероятность ниже 1/2. [3] δ {\displaystyle \delta }

Длинный код

Длинный код — это еще один код с очень большим раздутием, который близок к локально проверяемому. При наличии входных данных (обратите внимание, что для их представления требуются биты) функция, возвращающая бит входных данных, , оценивается на всех возможных -битных входных данных , а кодовое слово является их конкатенацией (длиной ). Способ локального тестирования с некоторыми ошибками — выбрать равномерно случайные входные данные и установить , но с небольшой вероятностью переворота каждого бита, . Принять функцию в качестве кодового слова, если . Если — кодовое слово, оно будет приниматься до тех пор, пока не изменилось, что происходит с вероятностью . Это нарушает требование, чтобы кодовые слова всегда принимались, но может быть достаточно хорошим для некоторых нужд. [9] 0 i 2 k {\displaystyle 0\leq i\leq 2^{k}} k {\displaystyle k} i t h {\displaystyle i^{th}} f i ( x ) = x i {\displaystyle f_{i}(x)=x_{i}} 2 k {\displaystyle 2^{k}} 0 x 2 2 k {\displaystyle 0\leq x\leq 2^{2^{k}}} n = 2 2 k {\displaystyle n=2^{2^{k}}} x {\displaystyle x} y = x {\displaystyle y=x} μ > 0 {\displaystyle \mu >0} f {\displaystyle f} f ( x ) = f ( y ) {\displaystyle f(x)=f(y)} f {\displaystyle f} f {\displaystyle f} x i {\displaystyle x_{i}} 1 μ {\displaystyle 1-\mu }

Другие локально проверяемые коды включают коды Рида-Маллера (см. локально декодируемые коды для алгоритма декодирования), коды Рида-Соломона и короткий код.

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

Ссылки

  1. ^ Кауфман, Тали ; Видерман, Майкл. «Локально проверяемые и локально декодируемые коды».
  2. ^ Бен-Сассон, Эли; Судан, Мадху. «Надежные локально тестируемые коды и продукты кодов» (PDF) .
  3. ^ abc Goldreich, Oded (2005). "Короткие локально проверяемые коды и доказательства (обзор)". CiteSeerX 10.1.1.110.2530 . 
  4. ^ Пантелеев, Павел; Калачев, Глеб (2021-11-05). "Асимптотически хорошие квантовые и локально тестируемые классические коды LDPC". arXiv : 2111.03654 [cs.IT].
  5. ^ Динур, Ирит ; Эвра, Шай ; Ливне, Рон; Любоцкий, Александр ; Мозес, Шахар (08.11.2021). «Локально проверяемые коды с постоянной скоростью, расстоянием и локальностью». arXiv : 2111.04808 [cs.IT].
  6. ^ Рорвиг, Мордехай (24.11.2021). «Исследователи победили случайность, чтобы создать идеальный код». Журнал Quanta . Получено 24.11.2021 .
  7. ^ Рорвиг, Мордехай (2022-01-06). «Исследователи показывают, что кубиты могут быть такими же безопасными, как биты». Журнал Quanta . Получено 2022-02-02 .
  8. ^ Черагчи, Махди. «Локально проверяемые коды».
  9. ^ Кол, Джиллат; Раз, Ран. «Границы локально тестируемых кодов с уникальными тестами» (PDF) .
  • «Прорывы — локально тестируемые коды с постоянной скоростью, расстоянием и локальностью | Институт теории вычислений Саймонса». simons.berkeley.edu . 6 октября 2021 г.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Locally_testable_code&oldid=1194627993"