近似公因数问题(Approximate Common Divisor Problem,ACDP)

前言

给定两个整数 a a a b b b,存在整数 d d d,使得 d ∣ a d|a da并且 d ∣ b d|b db。即 d d d同时整除 a a a b b b,我们把 d d d叫做 a a a b b b的公因数,满足条件的 d d d的最大值,叫做 a a a b b b的最大公因数(GCD)。
通过辗转相除法或者错位相减法,可以在多项式时间内求出 a a a b b b的最大公因数。
现在,我们考虑, a a a b b b在传输的过程中出现了一些小错误。得到 a ′ = a + e 1 a^\prime=a+e_1 a=a+e1 b ′ = b + e 2 b^\prime=b+e_2 b=b+e2,那么是否可以在多项式时间内求出 d d d。这就是站在解码的角度的近似公因数问题。

定义

论文:《Approximate Integer Common Divisors》中仔细讨论了这个问题。
更加正式的描述如下:
给定两个整数 a 0 a_0 a0 b 0 b_0 b0,参数 X , Y , M X,Y,M X,Y,M。近似公因数问题是寻找这样一个或者所有的 d > M d>M d>M,使得 d ∣ ( a 0 + x 0 ) d|(a_0+x_0) d(a0+x0) d ∣ b 0 + y 0 d|b_0+y_0 db0+y0 ,其中 ∣ x 0 ∣ ≠ X |x_0| \neq X x0=X ∣ y 0 ∣ ≠ Y |y_0| \neq Y y0=Y
不妨设 X ≥ Y X \geq Y XY,如果 Y = 0 Y=0 Y=0,那么问题叫做部分近似公因数问题(Partially Approximate Common Divisor Problem,PACDP);如果 Y > 0 Y>0 Y>0那么叫做一般的近似公因数问题(General Approximate Common Divisor Problem,GACDP)。

应用

解决该问题的算法,可以用来设计纠错码。由于问题本身是一个困难的问题,所以也有基于该问题设计的密码算法。

你可能感兴趣的:(安全,其他)