Гомоморфизм китайской теоремы об остатках (гомоморфизм преобразования ЭЛТ)

1. Введение в китайскую теорему об остатках (CRT)

Китайская теорема об остатках описывает метод решения системы линейных конгруэнтных уравнений с одной переменной. Формальное описание: m 1 , m 2 , mn m_1,m_2,m_nм1,м2,мнявляются попарно простыми целыми числами и имеют следующие уравнения сравнения:
{ x ≡ a 1 mod m 1 x ≡ a 2 mod m 2 . . . x ≡ anmod mn ( m 1 , m 2 , ⋯ , mn ) попарно обратные \left \{ \begin{array}{lr} x\equiv a_1 \mod m_1& \\ x \equiv a_2 \mod m_2\\ ... \\ x\equiv a_n \mod m_n & \end {array} \right. ( m_1,m_2,\cdots,m_n) попарно простое число Икса1модм1Икса2модм2...Иксанмодмн( м1,м2,,мн) Попарное взаимное простое число.
Теперь определимM = ∏ i = 1 nmi M=\prod_{i=1}^{n}m_iМ"="я = 1нмяmi ′ = M mim^\prime_i=\frac{M}{m_i}мя'"="мяМ, очевидно, M i M_iМя是整数。
timi ′ ≡ 1 mod mi t_im^\prime_i\equiv 1 \mod m_iтямя'1модмя
Тогда решением системы уравнений сравнения будет
x ≡ ∑ i = 1 naitimi ′ mod M x\equiv \sum_{i=1}^{n} a_it_im^\prime_i \mod MИкся = 1наятямя'модМ

Вот несколько примеров:

a равно [0, 2, 4, 0]
m равно [5, 7, 9, 11]
m ′ m^\primeм равно [693, 495, 385, 315]
t равно [2, 3, 4, 8]

a равно [1, 5, 5]
m равно [5, 7, 9]
m ′ m^\primeм равно [63, 45, 35]
t равно [2,5, 8]

a равно [2, 5, 7, 18]
m равно [5, 7, 11, 19]
m ′ m^\primeм равно [1463, 1045, 665, 385]
t равно [2 4 9 4]

2. ЭЛТ-преобразование гомоморфно.

Преобразование CRT имеет аддитивные и мультипликативные гомоморфизмы.
Мы предполагаем, что m = [m 1 , m 2 , ⋯ , mn ] \mathbf{m}=[m_1,m_2,\cdots,m_n]м"="[ м1,м2,,мн] , элементы которого попарно просты.
ДоменZM = [ 0 , 1 , 2 , ⋯ , M ] Z_M=[0,1,2,\cdots, M]ЗМ"="[ 0 ,1 ,2 ,,M ] ,其中M = ∏ i = 1 nmi M=\prod_{i=1}^{n}m_iМ"="я = 1нмя
Тогда ЗМ З_МЗМЭлементы в могут иметь Z m 1 × Z m 2 × ⋯ × Z mn Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n}Зм1×Зм2××ЗмнЭлементы представлены однозначно.
От Z m 1 × Z m 2 × ⋯ × Z mn Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n}Зм1×Зм2××Змнв ЗМ З_МЗМТрансформация — это трансформация crt, а противоположное направление — трансформация icrt.
Мы используем вектор для представления Z m 1 × Z m 2 × ⋯ × Z mn Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n}Зм1×Зм2××Змнэлементы в . Значение i-го измерения равно модулю mi m_iмяиз.

x , y ∈ ZM x ,y \in Z_Mх ,йЗМа = icrt ( x ) \mathbf{a}=\mathbf{icrt}(x)а"="icrt ( x ) ,b = icrt(y) \mathbf{b}=\mathbf{icrt}(y)б"="icrt ( y )
дополнение

если c = a + b \mathbf{c}=\mathbf{a}+\mathbf{b}с"="а+b,其中ci = ( ai + bi ) mod mi c_i=(a_i+b_i) \mod m_iся"="( ая+бя)модмя

Мы говорим, что китайская теорема об остатках имеет аддитивный гомоморфизм, выражаемый как:
x + y ≡ crt (c) mod M x+y \equiv \mathbf{crt}(\mathbf{c}) \mod MИкс+йлиния ( с )модМ

Доказательство:
с тех пор, как n > 2 n \gt 2н>2 можно уменьшить доn = 2 n=2н"="2 , поэтому следующее доказывает только то, чтоm = [ m 1 , m 2 ] \mathbf{m}=[m_1,m_2]м"="[ м1,м2] ситуация. (k 1 , k 2 , ⋯ k_1,k_2,\cdotsк1,к2,... указывает целое число)

Из китайской теоремы об остатках мы знаем, что
x = a 1 t 1 m 1 ′ + a 2 t 2 m 2 ′ + k 1 m 1 m 2 x=a_1t_1m^\prime_1+a_2t_2m^\prime_2 + k_1m_1m_2Икс"="а1т1м1'+а2т2м2'+к1м1м2,
y = b 1 t 1 m 1 ′ + a 2 t 2 m 2 ′ + k 2 m 1 m 2 y=b_1t_1m^\prime_1+a_2t_2m^\prime_2 + k_2m_1m_2й"="б1т1м1'+а2т2м2'+к2м1м2.

Икс + у знак равно ( а 1 + б 1 ) т 1 м 1 ′ + ( а 2 + б 2 ) т 2 м 2 ′ + ( k 1 + k 2 ) м 1 м 2 x+y=(a_1+b_1) t_1m^\prime_1+(a_2+b_2)t_2m^\prime_2 + (k_1+k_2)m_1m_2Икс+й"="( а1+б1) т1м1'+( а2+б2) т2м2'+( к1+к2) м1м2

c 1 = a 1 + b 1 + k 3 m 1 , c 2 = a 2 + b 2 + k 4 m 2 c_1=a_1+b_1+k_3m_1,c_2=a_2+b_2+k_4m_2с1"="а1+б1+к3м1,с2"="а2+б2+к4м2
所以
crt ( c ) = k 3 м 1 т 1 м 1 ′ + k 4 м 2 т 2 м 2 ′ + x + y + k 5 м 1 м 2 \mathbf{crt}(c)=k_3m_1t_1m^\prime_1+ k_4m_2t_2m^\prime_2+x+y+k_5m_1m_2линия ( с )"="к3м1т1м1'+к4м2т2м2'+Икс+й+к5м1м2
И m 1 ′ = m 2 , m 2 ′ = m 1 m^\prime_1=m_2,m^\prime_2=m_1м1'"="м2,м2'"="м1
所以crt ( c ) = ( k 3 t 1 + k 4 t 2 + k 5 ) m 1 m 2 + x + y \mathbf{crt}(c)=(k_3t_1+k_4t_2+k_5)m_1m_2+x+yлиния ( с )"="( к3т1+к4т2+к5) м1м2+Икс+y

x + y ≡ crt ( c ) mod M x+y \equiv \mathbf{crt}(\mathbf{c}) \mod MИкс+йлиния ( с )модМ

Умножение
определяет d = x ∗ y \mathbf{d}=x*yд"="Икс*y,其中di = xiyimod mi d_i=x_iy_i \mod m_iдя"="Иксяйямодмя

Тогда китайская теорема об остатках обладает мультипликативным гомоморфизмом. Выражается как:
x ∗ y ≡ crt ( d ) mod M x*y \equiv \mathbf{crt}(\mathbf{d}) \mod MИкс*йЭЛТ ( д )модМ

证明:
x ∗ y = ( а 1 т 1 м 1 ′ + а 2 т 2 м 2 ′ + k 1 м 1 м 2 ) ( б 1 т 1 м 1 ′ + а 2 т 2 м 2 ′ + k 2 м 1 м 2 ) x*y=(a_1t_1m^\prime_1+a_2t_2m^\prime_2 + k_1m_1m_2)(b_1t_1m^\prime_1+a_2t_2m^\prime_2 + k_2m_1m_2)Икс*й"="( а1т1м1'+а2т2м2'+к1м1м2) ( б1т1м1'+а2т2м2'+к2м1м2)
м1 м 2 м_1м_2м1м2Множественная замена
x ∗ y = a 1 b 1 t 1 2 m 1 ′ 2 + a 2 b 2 t 2 2 m 2 ′ 2 + k 3 m 1 m 2 x*y=a_1b_1t_1^2m_1^{\prime2 } +a_2b_2t_2^2m_2^{\prime2}+k_3m_1m_2Икс*й"="а1б1т12м1' 2+а2б2т22м2' 2+к3м1м2
由于t 1 m 1 ′ ≡ 1 mod m 1 , t 2 m 2 ′ ≡ 1 mod m 2 t_1m_1^\prime\equiv 1 \mod m_1,t_2m_2^\prime \equiv 1 \mod m_2т1м1'1модм1,т2м2'1модм2

x * y = a 1 b 1 t 1 m 1 ′ + a 2 b 2 t 2 m 2 ′ + k 5 m 1 m 2 x*y=a_1b_1t_1m_1^\prime+a_2b_2t_2m_2^\prime+k_5m_1m_2Икс*й"="а1б1т1м1'+а2б2т2м2'+к5м1м2
Согласно предыдущему доказательству мы знаем, что
x ∗ y ≡ crt ( d ) mod M x*y \equiv \mathbf{crt}(\mathbf{d}) \mod MИкс*йЭЛТ ( д )модМ

Ниже приведен код crt на Python и его обратное преобразование icrt, который читателям удобно проверить:

import gmpy2
import numpy as np

#the elements in bases should be co-prime
def crt(a,bases):
    bases=np.array(bases,dtype=gmpy2.mpz)
    M=np.prod(bases)
    m_prime=[np.prod(bases[bases!=bases[i]]) for i in range(len(bases))]
    b=[gmpy2.invert(m_prime[i],bases[i]) for i in range(len(bases))]
    res=gmpy2.mpz(0)
    for i in range(len(bases)):
        res=(res+a[i]*b[i]*m_prime[i])%M
    res=np.array(res,dtype=int)
    return res,M

def icrt(r,bases):
    res=[r%bases[i] for i in range(len(bases))]
    return res

рекомендация

отblog.csdn.net/watqw/article/details/132181520
рекомендация