扩展欧几里得算法

扩展欧几里得算法推导及应用
本文详细介绍了扩展欧几里得算法的推导过程,包括如何求解一组满足特定线性方程的x和y值,以及如何利用此算法解决实际问题。此外,还探讨了算法的通用性质,如如何通过已知解推导出所有可能的解,以及其在求乘法逆元和解决同余方程方面的应用。

  扩展欧几里得挺早就会了,但是当时不会证明,现在可以自己推导出来了,下面说一下推导过程。

  首先给你a,b,让你求出一组x,y,满足ax+by=gcd(a,b).这个gcd是很轻松可以得到的,但是x和y呢?其实我们也可以在求gcd的时候顺便得到一组解。

  先看看我们是怎么求gcd的:

  设ans=gcd(b,a%b)。那么最后一步终止条件是什么呢?是b=0。

  从这里我们可以发现此时,ans*x+0*y=ans,这个时候我们可以看出x和y分别是1和0时肯定满足条件。

  此时我们就得到了终止条件时候的x和y的值了。但是,每一次相邻的x和y有没有什么关系呢?答案是有的。

  我们令c=gcd(a,b)

  第一步有 ax1+by1=c

  下一步就有 bx2+(a%b)y2=c, 我们对这一步的公式进行变形。

  首先可以发现a%b=a-(a/b)*b, 我们带入就得到bx2+(a-(a/b)*b)y2=c

  移项合并后就有ay2+b[x2-(a/b)*y2]=c

  因此,我们发现其实x1=y2,y1=x2-(a/b)*y2, 依靠这种上下步之间的关系,我们就可以得到最外层的一组解了。

 

int e_gcd(int a,int b,int &x,int &y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    int ans=e_gcd(b,a%b,x,y);
    int temp=x;
    x=y;
    y=temp-(a/b)*y;
    return ans;
}

   我们还可以发现当ax+by=n而gcd(a,b)=d时,我们也可以得到一组解,方法是得到x后, x*(n/d)就可以了,还是很方便的。

 

  当然,我们还要知道怎么得到所有解。这个很容易就可以推导,我直接给出公式: 令A=a/gcd(a,b), B=b/gcd(a,b), 一组解为x0,y0, 则所有解为x=x0+B*t, y=y0-A*t, t为任意整数。

 

  除此之外,还有一个名叫乘法逆元的东西,其实就是用到扩展欧几里得。ax≡1(mod b) 称x为a关于b的乘法逆元,其实就是求ax+by=1的解。

  为什么叫乘法逆元呢?因为a*x同余1,类比数学上的其他许多逆的定义,a与x显然互为逆。

  最后补充个定理:

    1. 如果gcd(a,b)=1,则ax≡c(mod b)有唯一解。

  求解很显然,有了上面的知识后,我们发现,逆元只有一个或者没有,扩展欧几里得做一次就可以了。

转载于:https://www.cnblogs.com/cons/p/5400541.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值