首页 > 其他分享 >BSGS

BSGS

时间:2023-01-15 10:45:02浏览次数:31  
标签:sq sqrt times BSGS 复杂度 equiv

BSGS(大步小步法)

  • BSGS 可以在 \(O(\sqrt{p})\) 的时间内求解满足 \(a^x\equiv b\pmod p\) 的 \(x\),其中 \(a\perp p,x>0\)。

  • 实现原理:

    • 尝试进行和整除分块异曲同工的变换。\(a^x\equiv b\Leftrightarrow a^{k\times sq-r}\equiv b\Leftrightarrow a^{k\times sq}\equiv b\times a^r\)。

    • 其中 \(sq=\lceil\sqrt p\rceil\)。

    • 其实直接写成 \(k\times sq+r\) 的形式也可以,但是要求逆元比较烦,所以换成减的。当然,也可以先写成那样然后微调一下。

    • 容易证明,有 \(0\leqslant k<sq,0\leqslant r<sq\)。注意前者的证明其实是靠扩展欧拉定理。更严谨的表述是,\(\exists x\to \exists k\in (0,sq)\)。

    • 从而我们可以枚举 \(r\) 算出所有可行取值,然后再枚举 \(k\) 来验证成立。注意对于同一个式右的值,如果求最小 \(x\),那么我们希望 \(r\) 尽量大。

  • 复杂度保证:求 \(a\) 的 \(sq\) 次方,枚举 \(A,B\) 都是 \(O(sq)\) 的,故总复杂度为 \(O(\sqrt{p})\)。

扩展 BSGS

  • 扩展 BSGS 可以在 \(O(\sqrt{p})\) 的时间内求解满足 \(a^x\equiv b\pmod p\) 的 \(x\),不保证 \(a\perp p\)。

  • 实现原理:

    • 将同余式展开为不定方程,得 \(a^x+k\times p=b\)。

    • 由裴蜀定理,当且仅当 \(\gcd(a,p)\mid b\),有解。

    • 从而上式可以化为 \(\dfrac{a^x}{g}+k\times\dfrac{p}{g}=\dfrac{b}{g}\)。

    • 反复,直到 \(a\perp p'\)。然后 BSGS,注意此时的 \(x'\) 已经不是原来的 \(x\),\(b\) 也应当把式左的系数除过去。

  • 复杂度保证:\(\gcd\geqslant 2\),从而扩展阶段的复杂度为 \(\log\) 级别,故总复杂度仍为 \(O(\sqrt{p})\)。

标签:sq,sqrt,times,BSGS,复杂度,equiv
From: https://www.cnblogs.com/weixin2024/p/17053184.html

相关文章

  • Shank's Baby-Step-Giant_Step Algorithm(BSGS)
    解模方程(\(n\)为素数)\[a^x\equivb(\bmodn)\]因为欧拉定理\(a^{\phi(n)}\equiv1(\bmodn)\)(\(n\)为素数)。有\[0\lex\len-1\]设\(m=\sqrt{n+......
  • BSGS学习笔记
    对于一个式子\(\quad\quadat\equivb(mod\p)\)我们可以用扩展欧几里得算法求解而对于这个式子\(\quad\quada^t\equivb(mod\p),(a,p)=1\)我们就要用\(BSGS\)求......
  • BSGS算法学习小记(大步小步算法)
    简介先看一个式子xy≡z(modp),z是质数现在只知道x和z,要求y。大步小步算法(BSGS,BabyStepsGiantSteps)就是解决这个问题。算法流程暴搜的枚举范围根据费马小定理:xp−1≡1。......
  • 离散对数&BSGS学习笔记
    离散对数定义求\(k\)使得\(a^k\equivn\pmodp\),称\(n\)在模\(p\)意义下以\(a\)为底的对数是\(k\)。如何求离散对数BSGS(BabyStep,GiantStep)大步小步算......
  • 3125. 扩展BSGS
    题目链接3125.扩展BSGS给定整数\(a,p,b\)。求满足\(a^x≡b\pmodp\)的最小非负整数\(x\)。输入格式每个测试文件中最多包含\(100\)组测试数据。每组数据中,每......
  • bsgs(扩展还没补)
    bsgs,北上广深,拔山盖世,蓝超巨星(bluesupergiantstar)。大概是\(O(\sqrtn)\)求解模意义下离散对数的一个算法。经典的平衡复杂度思想。离散对数,也就是长这样的一个东西:\[......
  • BSGS exBSGS 详解(大步小步算法)
    我放弃挣扎了至少除了这个点,我的BSGSexBSGS都是可以过的,我就姑且当它没有问题了!BSGS:BigStepGiantStep额其实我也不懂这个算法和名字有什么关系,倒是有点根号分......
  • [学习笔记]BSGS
    $\operatorname{BSGS}$,也即$Baby\;step\;Giant\;step$大步小步算法,可以在$\Theta(\sqrt{p})$的时间内求解$$a^x\equivb\pmod{p}$$的问题,其中$a,p$互质(也即$a......