概念引入:

全称为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)相关推荐

  1. 深度学习中端到端(end-to-end)简要理解

    端到端(end-to-end)简要理解 端到端 好处 不同领域的端到端 目标检测 非end-to-end方法 end-to-end方法 CV计算机视觉 语音识别 非端到端 端到端 参考 端到端 端到端 ...

  2. Levenberg-Marquardt(LM算法)的理解

    Levenberg-Marquardt LM算法 的理解 1. convex optimization 1.1 convex set 1.2 convex function 1.3 optimizat ...

  3. Berlekamp–Massey算法简要介绍

    这是一篇翻译向的文章,笔者整理了一些有关Berlekamp–Massey算法的笔记,还增加了一些自己的理解. 下面列出了笔者写此文时所参考的一些资料: wikipedia fjzzq2002 别人的博 ...

  4. viterbi算法通俗理解

    文章目录 viterbi算法是什么 手动理解 缺点分析 算法详解 算法推论 viterbi与隐马尔可夫 隐马尔科夫链的三个基本问题 隐马尔科夫链的五元组 更详细的解释 代码实现 实现 测试 参考 vi ...

  5. 脱离公式谈谈对反向传播算法的理解

    机器学习的训练过程可看作是最优化问题的求解过程. 根据原理 对于函数f(x),如果f(x)在点xt附近是连续可微的,那么f(x)下降最快的方向是f(x)在xt点的梯度的反方向 得到最简单最常用的优化算 ...

  6. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇

    卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...

  7. Interview:算法岗位面试—11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知、计算机视觉算法的理解、目标检测相关项目案例

    ML岗位面试:11.15下午上海某航天***公司(国企)技术面之工业机器视觉认知.计算机视觉算法的理解.目标检测相关项目案例 Interview:算法岗位面试-11.15下午上海某航天***公司(国企 ...

  8. 深度学习算法简要综述(下)

    点击上方"算法猿的成长",关注公众号,选择加"星标"或"置顶" 总第 124 篇文章,本文大约 3731 字,阅读大约需要 10 分钟 原文 ...

  9. React中diff算法的理解

    React中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DO ...

最新文章

  1. 谈谈Runtime类中的freeMemory,totalMemory,maxMemory几个方法
  2. springboot怎么设置多个路径全部跳转首页_SpringBoot(四)—Web开发(二)
  3. 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...
  4. mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...
  5. 10以内逆向运算题_加减法启蒙系列 | 实战篇二(10以内减法)
  6. 减少.NET应用程序内存占用的一则实践
  7. 金蝶K3 WISE 12.3版本系统部署指南
  8. 如何鉴定光缆质量好坏?
  9. 手把手教你使用XUI的正确姿势
  10. xshell 连接vbox 虚拟机
  11. JS 实现点击按钮实现超链接功能
  12. win10不能正常安装.NET Framework 3.5,报0x800F081F错误。
  13. 5.larval 验证规则
  14. 20200120 数据结构和算法之 数组循环队列的实现
  15. html调用头尾html,合并html头尾 - 基础支持 - 用gulp搭建前后分离的开发环�? - KK的小故事...
  16. FCPX插件:专业分级调色插件ColorFinale Pro
  17. 3种方法设置PDF“打开密码”,总有一种适合你
  18. codeforces 19E Fairy 树链剖分
  19. 0、空字符和‘\0‘关系
  20. java对外接口 入参实体命名_支付中心接口设计之参数命名

热门文章

  1. Dropout技术之随机神经元与随机深度
  2. 如何在Photoshop中合并图层
  3. While 循环语句 和do while循环语句
  4. BO学习第二天 问题流水
  5. 人均负债12万,90后为何会这么穷?
  6. 职高学生计算机学情分析,高职学生学情分析
  7. Python基本语法小结(一)
  8. MES系统生产制造流程分析
  9. LeetCode 188. Best Time to Buy and Sell Stock IV(股票买卖)
  10. 《IDEO,设计改变一切》(Change By Design)- 读书笔记