AMM算法简要理解(Adleman-Mander-Miller Method)
概念引入:
全称为Adleman-Mander-Miller Method。在1977年他们发表的论文里只涉及了开平方根的方法,开n次方根并没有很详细的介绍。《Adleman-Manders-Miller Root Extraction Method Revisited》里三位中国人补充了他们开n次方根的方法。
可参考论文:AMM算法论文原稿
算法思路:
一、平方根(≡ a mod p)
即是我们常说的二次剩余定理的求解,在AMM算法中求解思路如下:
求解步骤如下:
1、由二次剩余定理成立条件可知, ——(1)成立;
2、我们可以找到一个q值满足 ——(2);
3、将(1)中表达式开方即可求得 ——(3)
=>由a^2 = 1 mod p ==> a = 1or-1 mod p推导可得
4、判断等于1还是-1:(且奇数时)
当等于1时:不做任何多余操作;
但等于-1时:将(3)式和(2)式相乘成为新的(3)式;
5、将(3)进行重复上式中的3和4操作,直到我们推导得(奇数时)
两边同乘(2)式,并开方即是我们所需的x值。
二、n次方根()
1、我们可知费马小定理: ——(1)
=> => 代入,将a用替换即可代换为(1)式;
2、我们可知AMM算法求解的情况为 r | (p-1) 的情况,所以我们可以写出以下条件:
p-1 = r^t * s
3、找到一个q值使其满足 ——(2)
4、找到一个值,使其满足 s | (r*-1),可推导得:——(3)
分类讨论:
(1)t=1时:
直接两边同乘a值,再对两边同时开r次方导,带入(1)式,即可求得x的值;
(2)t>=2时:
=>取(2)式可推导得:
其中K是对(3)式开r次方所有可能解的集合
当我们算Ki^r时,通过欧拉定理,我们可知Ki^r == 1 mod p
=>Ki * Kr-i =,通过欧拉定理可得Ki*Kr-i == 1 mod p
接下来,开始像第一个中解平方根的思路开始求解第二种情况:
1、对(3)式开r次方,得到
2、可得到
两边同时乘以Kj可得
即是
判断r^(t-j)是否为r,重复进行上述的1和2操作
3、当结束后,我们可得以下等式:
4、两边同时乘以a值,可得
带入(1)式,对两边同时开r次方,我们可以求得我们所需的x值:
得证
AMM算法简要理解(Adleman-Mander-Miller Method)相关推荐
- 深度学习中端到端(end-to-end)简要理解
端到端(end-to-end)简要理解 端到端 好处 不同领域的端到端 目标检测 非end-to-end方法 end-to-end方法 CV计算机视觉 语音识别 非端到端 端到端 参考 端到端 端到端 ...
- Levenberg-Marquardt(LM算法)的理解
Levenberg-Marquardt LM算法 的理解 1. convex optimization 1.1 convex set 1.2 convex function 1.3 optimizat ...
- Berlekamp–Massey算法简要介绍
这是一篇翻译向的文章,笔者整理了一些有关Berlekamp–Massey算法的笔记,还增加了一些自己的理解. 下面列出了笔者写此文时所参考的一些资料: wikipedia fjzzq2002 别人的博 ...
- viterbi算法通俗理解
文章目录 viterbi算法是什么 手动理解 缺点分析 算法详解 算法推论 viterbi与隐马尔可夫 隐马尔科夫链的三个基本问题 隐马尔科夫链的五元组 更详细的解释 代码实现 实现 测试 参考 vi ...
- 脱离公式谈谈对反向传播算法的理解
机器学习的训练过程可看作是最优化问题的求解过程. 根据原理 对于函数f(x),如果f(x)在点xt附近是连续可微的,那么f(x)下降最快的方向是f(x)在xt点的梯度的反方向 得到最简单最常用的优化算 ...
- matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇
卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...
- Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例
ML岗位面试:11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知.计算机视觉算法的理解.目标检测相关项目案例 Interview:算法岗位面试-11.15下午上海某航天***公司(国企 ...
- 深度学习算法简要综述(下)
点击上方"算法猿的成长",关注公众号,选择加"星标"或"置顶" 总第 124 篇文章,本文大约 3731 字,阅读大约需要 10 分钟 原文 ...
- React中diff算法的理解
React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...
最新文章
- 谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
- springboot怎么设置多个路径全部跳转首页_SpringBoot(四)—Web开发(二)
- 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...
- mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...
- 10以内逆向运算题_加减法启蒙系列 | 实战篇二(10以内减法)
- 减少.NET应用程序内存占用的一则实践
- 金蝶K3 WISE 12.3版本系统部署指南
- 如何鉴定光缆质量好坏?
- 手把手教你使用XUI的正确姿势
- xshell 连接vbox 虚拟机
- JS 实现点击按钮实现超链接功能
- win10不能正常安装.NET Framework 3.5,报0x800F081F错误。
- 5.larval 验证规则
- 20200120 数据结构和算法之 数组循环队列的实现
- html调用头尾html,合并html头尾 - 基础支持 - 用gulp搭建前后分离的开发环�? - KK的小故事...
- FCPX插件:专业分级调色插件ColorFinale Pro
- 3种方法设置PDF“打开密码”,总有一种适合你
- codeforces 19E Fairy 树链剖分
- 0、空字符和‘\0‘关系
- java对外接口 入参实体命名_支付中心接口设计之参数命名