中国剩余定理的同态性质(CRT变换的同态性)

1、中国剩余定理简介(Chinese Remainder Theory,CRT)

中国剩余定理是关于求解一元线性同余方程组的方法,用形式化的描述就是: m 1 , m 2 , m n m_1,m_2,m_n m1,m2,mn是两两互素的n个整数,有下面的同余方程组:
{ x ≡ a 1 m o d m 1 x ≡ a 2 m o d m 2 . . . x ≡ a n m o d m n ( m 1 , m 2 , ⋯ , m n ) 两两互素 \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)两两互素 xa1modm1xa2modm2...xanmodmn(m1,m2,,mn)两两互素
现在定义 M = ∏ i = 1 n m i M=\prod_{i=1}^{n}m_i M=i=1nmi m i ′ = M m i m^\prime_i=\frac{M}{m_i} mi=miM,显然 M i M_i Mi是整数。
t i m i ′ ≡ 1 m o d m i t_im^\prime_i\equiv 1 \mod m_i timi1modmi
那么同余方程组的解为
x ≡ ∑ i = 1 n a i t i m i ′ m o d M x\equiv \sum_{i=1}^{n} a_it_im^\prime_i \mod M xi=1naitimimodM

下面给出几个例子:

a is [0, 2, 4, 0]
m is [5, 7, 9, 11]
m ′ m^\prime m is [693, 495, 385, 315]
t is [2, 3, 4, 8]

a is [1, 5, 5]
m is [5, 7, 9]
m ′ m^\prime m is [63, 45, 35]
t is [2,5, 8]

a is [2, 5, 7, 18]
m is [5, 7, 11, 19]
m ′ m^\prime m is [1463, 1045, 665, 385]
t is [2 4 9 4]

2、CRT变换是同态的

CRT变换具有加法同态和乘法同态。
我们假设存在 m = [ m 1 , m 2 , ⋯ , m n ] \mathbf{m}=[m_1,m_2,\cdots,m_n] m=[m1,m2,,mn],其元素是两两互素的。
Z M = [ 0 , 1 , 2 , ⋯ , M ] Z_M=[0,1,2,\cdots, M] ZM=[0,1,2,,M],其中 M = ∏ i = 1 n m i M=\prod_{i=1}^{n}m_i M=i=1nmi
那么 Z M Z_M ZM中的元素可以有 Z m 1 × Z m 2 × ⋯ × Z m n Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n} Zm1×Zm2××Zmn中的元素来唯一表示。
Z m 1 × Z m 2 × ⋯ × Z m n Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n} Zm1×Zm2××Zmn Z M Z_M ZM的变换为crt变换,反方向为icrt变换。
我们使用一个向量来表示 Z m 1 × Z m 2 × ⋯ × Z m n Z_{m_1} \times Z_{m_2} \times \cdots \times Z_{m_n} Zm1×Zm2××Zmn中的元素。第i维的值是模 m i m_i mi的。

x , y ∈ Z M x ,y \in Z_M x,yZM a = i c r t ( x ) \mathbf{a}=\mathbf{icrt}(x) a=icrt(x) b = i c r t ( y ) \mathbf{b}=\mathbf{icrt}(y) b=icrt(y)
加法

定义 c = a + b \mathbf{c}=\mathbf{a}+\mathbf{b} c=a+b,其中 c i = ( a i + b i ) m o d m i c_i=(a_i+b_i) \mod m_i ci=(ai+bi)modmi

我们说中国剩余定理有加法同态,表示为:
x + y ≡ c r t ( c ) m o d M x+y \equiv \mathbf{crt}(\mathbf{c}) \mod M x+ycrt(c)modM

证明:
由于当 n > 2 n \gt 2 n>2时可以归约到 n = 2 n=2 n=2的情况,所以,下面只证明 m = [ m 1 , m 2 ] \mathbf{m}=[m_1,m_2] m=[m1,m2]的情况。( k 1 , k 2 , ⋯ k_1,k_2,\cdots k1,k2,表示整数)

由中国剩余定理,我们知道
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 x=a1t1m1+a2t2m2+k1m1m2,
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 y=b1t1m1+a2t2m2+k2m1m2.

x + y = ( a 1 + b 1 ) t 1 m 1 ′ + ( a 2 + b 2 ) t 2 m 2 ′ + ( k 1 + k 2 ) m 1 m 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 x+y=(a1+b1)t1m1+(a2+b2)t2m2+(k1+k2)m1m2

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 c1=a1+b1+k3m1,c2=a2+b2+k4m2
所以
c r t ( c ) = k 3 m 1 t 1 m 1 ′ + k 4 m 2 t 2 m 2 ′ + x + y + k 5 m 1 m 2 \mathbf{crt}(c)=k_3m_1t_1m^\prime_1+k_4m_2t_2m^\prime_2+x+y+k_5m_1m_2 crt(c)=k3m1t1m1+k4m2t2m2+x+y+k5m1m2
又有 m 1 ′ = m 2 , m 2 ′ = m 1 m^\prime_1=m_2,m^\prime_2=m_1 m1=m2,m2=m1
所以 c r t ( 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 crt(c)=(k3t1+k4t2+k5)m1m2+x+y

x + y ≡ c r t ( c ) m o d M x+y \equiv \mathbf{crt}(\mathbf{c}) \mod M x+ycrt(c)modM

乘法
定义 d = x ∗ y \mathbf{d}=x*y d=xy,其中 d i = x i y i m o d m i d_i=x_iy_i \mod m_i di=xiyimodmi

那么中国剩余定理有乘法同态。表示为:
x ∗ y ≡ c r t ( d ) m o d M x*y \equiv \mathbf{crt}(\mathbf{d}) \mod M xycrt(d)modM

证明:
x ∗ y = ( a 1 t 1 m 1 ′ + a 2 t 2 m 2 ′ + k 1 m 1 m 2 ) ( b 1 t 1 m 1 ′ + a 2 t 2 m 2 ′ + k 2 m 1 m 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) xy=(a1t1m1+a2t2m2+k1m1m2)(b1t1m1+a2t2m2+k2m1m2)
m 1 m 2 m_1m_2 m1m2的倍数代换有
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 xy=a1b1t12m1′2+a2b2t22m2′2+k3m1m2
由于 t 1 m 1 ′ ≡ 1 m o d m 1 , t 2 m 2 ′ ≡ 1 m o d m 2 t_1m_1^\prime\equiv 1 \mod m_1,t_2m_2^\prime \equiv 1 \mod m_2 t1m11modm1,t2m21modm2

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 xy=a1b1t1m1+a2b2t2m2+k5m1m2
根据前面的证明,我们知道
x ∗ y ≡ c r t ( d ) m o d M x*y \equiv \mathbf{crt}(\mathbf{d}) \mod M xycrt(d)modM

下面给出crt和其逆变换icrt的python代码,便于读者验证:

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])%Mres=np.array(res,dtype=int)return res,Mdef icrt(r,bases):res=[r%bases[i] for i in range(len(bases))]return res

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/28777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MQTT 订阅接收消息 mosquitto 方式

1 说明 采用 mosquitto 库,实现订阅主题,并接收消息。其中服务器有做限制,需要对应的 cilent id ,cafile 、certfile 、keyfile 等配置2 环境 采用ubuntu 直接编译调试 安装mosquitto 库 sudo apt install libmosquitto-dev su…

chatGLM 本地部署(windows+linux)

chatGLM算是个相对友好的模型,支持中英文双语的对话交流,清华出的 我的教程无需特别的网络设置,不过部分情况因为国内网络速度慢,需要反复重复 chatGLM github地址 一、硬件需求 N卡8G显存以上,最好16G以上&#xff…

【PHP的设计模式】

PHP的设计模式 一、策略模式二、工厂模式三、单例模式四、注册模式五、适配器模式六、观察者模式 一、策略模式 策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用。 策略模式指的是程序中涉及决策控制的一种模式。策略模式功能非常强…

vue 使用vue-video-player加载视频

vue 使用vue-video-player加载视频 安装 npm install vue-video-player --savemain.js 引入 import VideoPlayer from "vue-video-player" import "video.js/dist/video-js.css" import "vue-video-player/src/custom-theme.css" import &quo…

SuperMap GIS基础产品桌面GIS FAQ集锦(5)

SuperMap GIS基础产品桌面GIS FAQ集锦(5) 【iDesktop】【iDesktopX】态势推演怎么使用? 【解决办法】 1、要先新建一个CAD数据集,然后将标绘加到CAD数据集中。 2、再使用态势推演管理器,右键新建分组。 3、选中场景中的…

利用ffmpeg分析视频流

ffprobe -show_packets -i "rtsp://192.168.61.46:8554/live?channel0&type0":该命令用于显示 RTSP 流中的数据包信息,例如时间戳、大小、持续时间等。 ffprobe -i "rtsp://192.168.61.46:8554/live?channel0&type0"&…

【算法|数组】手撕经典二分法

算法|数组——二分查找 文章目录 算法|数组——二分查找引言二分查找左闭右闭写法左闭右开写法 总结 引言 首先学习这个算法之前需要了解数组知识:数组。 大概介绍以下: 数组是存储在连续内存空间上的相同类型数据的集合。数组下标都是从0开始。数组在…

数学建模—多元线性回归分析(+lasso回归的操作)

第一部分:回归分析的介绍 定义:回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的人数就是,通过研究自变量X和因变量Y的相关关系,尝试去解释…

UML 用例图,类图,时序图,活动图

UML之用例图,类图,时序图,活动图_用例图 时序图_siyan985的博客-CSDN博客 https://www.cnblogs.com/GumpYan/p/14734357.html 用例图与类图 - 简书

webshell链接工具-Godzilla(哥斯拉)

项目地址 https://github.com/BeichenDream/Godzilla

势不可挡!新能源车型L2搭载率破50%,TOP20品牌数据出炉

中国乘用车市场正在走出去年的阴霾。 机构公开数据显示,2023年上半年中国乘用车市场产量1100.77万辆,同比增长7.5%;终端销量959.08万辆,同比增长4.7%;乘用车出口152.36万辆,同比增长87.6%。 在实际交付量…

JMeter启动时常见的错误

很多小伙伴在学工具这一块时,安装也是很吃力的一个问题,之前记得有说过怎么安装jmeter这个工具。那么你要启动jmeter的时候,一些粉丝就会碰到如下几个问题。 1.解压下载好的jmeter安装,Windows 平台,双击 jmeter/bin …

中间件RabbitMQ消息队列介绍

1. MQ的相关概念 1.1 什么是MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已,还是一种跨进程的通信机制,用于上下游传递消息…

protobuf 2定义string常量

背景 protobuf 2中定义的enum枚举值必须为数字类型,故不支持string类型,但有些业务场景又确实需要定义string常量。 目标 在protobuf 2中定义string常量。 方案 思路:通optional default实现string常量。 细节: 1、protobu…

MFC 文件读写包括字符串的结构体

试过CString char* 写入的都是地址 struct Param{int ID;int index;char val[128]; };vector<Param>ans; UINT count 17; ans.resize(count); FILE* fp; fopen_s(&fp,_T("my.txt"),_T("rb")); if(count ! fread(&ans[0],sizeof(Param),cou…

Flink CEP(三)pattern动态更新

线上运行的CEP中肯定经常遇到规则变更的情况&#xff0c;如果每次变更时都将任务重启、重新发布是非常不优雅的。尤其在营销或者风控这种对实时性要求比较高的场景&#xff0c;如果规则窗口过长&#xff08;一两个星期&#xff09;&#xff0c;状态过大&#xff0c;就会导致重启…

【云原生】Docker-Compose全方面学习

目录 1.compose简介 Compose V2 2.compose安装与下载 二进制包 PIP 安装 bash 补全命令 卸载 3.docker compose管理命令 命令对象与格式 命令选项 命令使用说明 1.compose简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;您可…

stm32和python串口数据收发

0 串口基础配置&#xff08;stm32F103&#xff09; void uart_init(u32 bound){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); //…

Acwing.883 高斯消元解线性方程组

题目 输入一个包含n个方程n个未知数的线性方程组。 方程组中的系数为实数。 求解这个方程组。 下图为一个包含m个方程n个未知数的线性方程组示例: 输入格式 第一行包含整数n。 接下来n行&#xff0c;每行包含n1个实数&#xff0c;表示一个方程的n个系数以及等号右侧的常数。 …

《向量数据库指南》——Rockset 为实时数据库添加向量嵌入支持(一)

同样,Venkataramani——除了是 Rockset 的联合创始人外,还担任首席执行官——表示,增加对向量嵌入的支持的关键方面是供应商现在使用户能够在一个位置管理和探索所有类型的数据。 “一个单一的数据库现在可以存储你的结构化数据、半结构化数据和你的向量嵌入来构建丰富的…