1. 纠错码

1)理想的传输模型示例:


2)实际的传输模型为:


3)带纠错功能的传输模型为:


纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。纠错码常用于保证信息在noisy channel的可靠传输以及保证信息在媒介上的可靠存储(可能会随着时间partially corrupted或者说相应的reading device is subject to errors)。
仅用来发现错误的码一般常称为检错码。检错码与其他手段结合使用,可以纠错。
为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别 ,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码。

纠错码的典型应用是:将message切分为小的blocks,每个block单独编码,当只对某部分信息感兴趣时,可仅解码相应的部分即可。这种策略的优点是:可保证random-access retrieval of information的效率。缺点是:抗噪能力比较弱,哪怕仅有一个block completely corrupted了,相应的信息也就完全丢失了。

提高抗噪能力的一种办法是:对整个message使用纠错码进行编码(encode the whole message into a single codeword of an error-correcting code)。这种策略抗噪能力是增强了,但是当某人仅对某一部分信息感兴趣时,也需要恢复整个message。当面对的是现代的大数据集时,对应的解码复杂度也是令人难以接受的。

1.1 线性纠错码Linear code


其中的kkk为the dimension of the code,nnn为the block length of the code。Linear code需要用nnn个符号来传递kkk长的message,相应的效率R=k/nR=k/nR=k/n。


A linear code of length nnn, dimension kkk,and minimum distance ddd will be called an [n,k,d][n,k,d][n,k,d] code. 其中 d=mindist(u⃗,v⃗)=minwt(u⃗,v⃗),whereu⃗!=v⃗d=min\ dist(\vec{u},\vec{v})=min\ wt(\vec{u},\vec{v}), where\ \vec{u}!=\vec{v}d=min dist(u,v)=min wt(u,v),where u!=v。

最小距离ddd与可correct errors的关系为:

maximum likelihood decoding: 最大释然解码。
nearest neighbor decoding:最近邻解码。
由于error vector e⃗\vec{e}e未知,在实际解码时,若kkk值小,可采用暴力解码的方式将received vector y⃗\vec{y}y​与2k2^k2k个可能的x⃗\vec{x}x对比,找到最接近的值。但是当kkk值很大时,暴力解码就不实用了。

1.2 nonlinear code


其中的MMM可表示为M=A(n,d)M=A(n,d)M=A(n,d)。

线性与非线性code的表示方法是有差异的。用圆括号()表示的code可为linear或nonlinear,而用中括号[]表示的就是linear code。
linear code [n,k,d][n,k,d][n,k,d]也可表示为(n,2k,d)(n, 2^k,d)(n,2k,d)。
在相同的ddd的情况下,若希望最终编码的数量MMM尽可能多,可以用nonlinear code。

常见的nonlinear code有Hadamard code

1.2.1 Hadamard code

Hadamard matrix定义如下:


Normalized Hadamard matric如:

若a Hadamard matrix HHH of order nnn exists, then nnn is 1, 2 or a multiple of 4.

经典的Hadmard code是将nnn-bit messages编码为2n2^n2n-bit codewords。
由此可知,Hadmard code的query complexity为2,codeword length exponential in the message length.


CHADC_{HAD}CHAD​的译码流程为:

CHADC_{HAD}CHAD​为2-query (2,δ,2δ)(2,\delta,2\delta)(2,δ,2δ)-LDC,证明如下:


上图中的译码过程,会恢复出所有的原码。当仅需要恢复一个原码而不是完整的所有原码时,---->于是有了LDC(Locally Decodable Code)。

2. LDC

Locally DECODABLE CODE是纠错码的一种,LDC既满足了抗噪性的要求,同时也能提供高效的random-access retrieval。(
allowing reliablereconstruction of an arbitrary bit of the message from looking at only a small number of randomly chosen codeword bits)
LDC牺牲了码字效率,需要更长的码字长度。

LDC不仅可用于可靠传输和可靠存储,还可用于其它领域,如:cryptography, complexity theory, data structures, derandomization, and the theory of fault tolerant computation.

Locally decodable codes can be seen as the combinatorial analogs of self-correctors [70, 21] that have been studied in complexity theory in the late 1980s. LDCs were also explicitly discussed in the PCP literature in early 1990s, most notably in [6, 88, 80]. However the fifirst formal defifinition of LDCs was given only in 2000 by Katz and Trevisan [64]. See also Sudan et al. [90]. Since then the study of LDCs has grown into a fairly broad fifield.

2.1 LDC定义

LDC的具体定义如下:

根据以上定义可知,对于kkk-bit长的message,编码后为q−q-q−进制字母表的情况,我们希望r(代表query次数,r<<k),N(代表编码后的长度),ϵ(代表解码准确率)r(代表query次数,r<<k),N(代表编码后的长度),\epsilon(代表解码准确率)r(代表query次数,r<<k),N(代表编码后的长度),ϵ(代表解码准确率)的值越小越好,而δ(代表容错能力)\delta(代表容错能力)δ(代表容错能力)值越大越好。当然,根据不同的应用场景,这些参数的取舍会不同,如在可靠传输和可靠存储应用中,会希望δ\deltaδ值越大越好(对于二进制,通常希望该值接近1/41/41/4),NNN值越小越好,相对来说ϵ<1/2\epsilon<1/2ϵ<1/2即可(可通过多运行几次mmm解码流程并根据大多数结果来选举正确的结果,准确率可提升至1−(1/2)m1-(1/2)^m1−(1/2)m);而在密码学应用中,择更关注rrr和NNN的平衡。

A rrr-query locally decodable code CCC encodes kkk-bit messages x⃗\vec{x}x in such a way that one can probabilistically recover any bit x(i)x(i)x(i) of the message by querying only rrr bits of the (possibly corrupted) codeword C(x⃗)C(\vec{x})C(x), where rrr can be as small as 2.

在LDC中,需要关注的参数主要有:codeword length以及query complexity。如何在codeword length和query complexity之间做取舍平衡,是当前LDC研究领域的热点。

  • The length of the code measures the amount of redundancy that is introduced into the message by the encoder.
  • The query complexity counts the number of bits that need to be read from the (corrupted) codeword in order to recover a single bit of the message.

2.2 Smooth LDC定义


根据queries的次数(query complexity)和codeword length(upper bounds和lower bounds),当前的研究成果主要有:

2.3 LDC的技术分类

根据LDC的底层技术实现发展,可以分为三个阶段:

  • 第一代LDC:多项式插值。capture codes that are based on the idea of polynomial interpolation。其编码实现为:将messages通过有限域内的多变量低阶多项式evaluation。典型代表为Reed-Muller(RM) LDC。当message length为kkk,query complexity r≥2r\geq2r≥2时,RM LDC的codeword length为exp(k1(r−1))exp(k^{\frac{1}{(r-1)}})exp(k(r−1)1​)。
  • 第二代LDC:多项式插值+递归。第二代LDC的构建是非直接的,分为两步:1)one obtains certain cryptographic protocols called Private Information Retrieval schemes, or PIRs, that on their own, are objects of interest. 2)one turns PIRs into LDCs. 第二代的LDC可以承受一定比例的错误。当message length为kkk,query complexity rrr时,第二代LDC的codeword length为exp(kO(loglogrrlogr))exp(k^{O(\frac{log\ log\ r}{r\ log\ r})})exp(kO(r log rlog log r​))。
  • 第三代LDC:代数组合思想。典型代表为Matching Vector(MV) LDC。MV codes可设计为最优的容错率(如,字母表1/2−ϵ1/2-\epsilon1/2−ϵ的错误率,以及二进制表1/4−ϵ1/4-\epsilon1/4−ϵ的错误率)。

2.3.1 第一代LDC——Reed-Muller LDC

Reed-Muller(RM) LDC主要由三个参数决定:

  • a prime power (alphabet size) qqq;
  • number of variables nnn;
  • a degree d<q−1d<q-1d<q−1。

【A DDD-evaluation of a function hhh defined over a domain DDD, is a vector of values of hhh at all points of DDD;】

RM LDC的qqq进制编码结果由以下内容组成:
在ring Fq[z1,...,zn]F_q[z_1,...,z_n]Fq​[z1​,...,zn​]内,对FqnF_q^nFqn​内的所有点在所有多项式(多项式的阶之和不超过ddd)的evaluation值组成。

RM LDC可将k=(n+dd)k=\begin{pmatrix} n+d\\ d \end{pmatrix}k=(n+dd​)长的消息编码为qnq^nqn长的码字。

3. LDC vs PIR(私有信息检索)

参考资料:
[1] https://baike.baidu.com/item/纠错码/2277072?fromtitle=error%20correcting%20code&fromid=11311379&fr=aladdin
[2] 上海交大ppt Introduction to Coding Theory
[3] 微软的研究报告Locally Decodable Codes
[4] 1977年书本《The Theory of Error-Correcting Codes》 by F. J. MacWilliams, N. J. A. Sloane (z-lib.org)

LDC——Locally Decodable Code相关推荐

  1. Linear-time zero-knowledge proofs for arithmetic circuit satisfiability 学习笔记

    1. 引言 Bootle等人2017年论文<Linear-time zero-knowledge proofs for arithmetic circuit satisfiability> ...

  2. 计算机顶级会议的历年最佳文章 (1996-2013)

    本人博客地址:http://blog.csdn.net/wanrenwangxuejing Best Paper Awards in Computer Science (since 1996) ByC ...

  3. 【Paper】【Compute Vision】Best Paper Awards in Computer Science (since 1996)

    Best Paper Awards in Computer Science (since 1996) 转载之:http://jeffhuang.com/best_paper_awards.html 比 ...

  4. UA MATH571B 试验设计 2k析因设计理论下

    UA MATH571B 试验设计 2k析因设计理论下 Confounding Blocking 222^222析因设计 Blocking 232^323析因设计 principal block Fra ...

  5. UA MATH636 信息论2 数据压缩

    UA MATH636 信息论2 数据压缩 AEP Most Likely Sequence Properties of Typical Set Limit of Data Compression So ...

  6. How HBO’s Silicon Valley built “Not Hotdog” with mobile TensorFlow, Keras React Native

    The HBO show Silicon Valley released a real AI app that identifies hotdogs - and not hotdogs - like ...

  7. 从字节码层面分析==比较integer和int

    public class aaa {public static void main(String[] args) {Integer a = 1;int b = 1;System.out.println ...

  8. podcast播客资源_为什么播客是我的新维基百科-完美的非正式学习资源

    podcast播客资源 In this article, I'll explain why podcasts replaced a lot of my Wikipedia usage for info ...

  9. Dapr+Net6 服务调用02:本地负载均衡(self-hosted)

    1. 架构 本案例利用了Dapr的self-hosted技术,为了模仿服务间的相互调用,定义了2个service,Service02调用Service01的API. Dapr 可以配置为在本地开发者机 ...

  10. 二维码的纠错码原理及如何纠错(2)

    下面进一步介绍二维码纠错相关的编码矩阵 1 范德蒙德(Vandermonde)矩阵 1.1 定义及特性 法国数学家 Alexandre-Théophile Vandermonde 在十八世纪提出了行列 ...

最新文章

  1. 永久设置SecureCRT的背景色和文字颜色方案
  2. 程序员的生活就是这么朴实无华,且没钱
  3. java反射详解 (一)
  4. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
  5. 如何找到Angular应用的某个directive是属于哪一个Angular module
  6. 修改手机屏幕刷新率_手机屏幕没有高刷新率算不上旗舰机?看看网友都是如何回答的...
  7. rabbitmq使用_Spring Boot中使用RabbitMQ
  8. DateFormat是线程不安全
  9. 微信小程序之----问题
  10. 2019杭电多校第一场 Operation HDU - 6579
  11. Jquery第二篇【选择器、DOM相关API、事件API】
  12. 设计模式综和实战项目x-gen系列一
  13. nginx 负载均衡的五中不同配置方式
  14. 根据TTL值判断目标主机的类型
  15. 牛腩新闻发布系统-发布
  16. html写16进制编辑器,浏览器中的16进制编辑器 Hexed.it
  17. java代码混淆,程序加密推荐 java授权 支持JDK16
  18. npm install报错ERR! code ETIMEDOUT的解决办法
  19. LGTM,XGBOOST,LIGHTGBM
  20. 实验2:tga格式图像转换为yuv格式

热门文章

  1. Vue进阶(六十八):JS 判断当前浏览器是否为 IE
  2. 桌面软件图标变白怎么解决
  3. 旁注攻击和CDN,绕过cdn找真实IP
  4. Local Linear Model, Semi Local Linear Model and Local Level Model of TFP.STS
  5. 台式机关闭计算机时没有待机,台式机设置休眠的方法
  6. 2.5css ps切图、
  7. Excel求和公式的几种用法
  8. exynos 4412 电源管理芯片PMIC 的配置及使用方法
  9. 首发集团|中安未来赋能首发集团场景体验迭代升级
  10. java实现图片文件上传下载_java实现文件的上传和下载