學習筆記 BSGS 演算法

2022-10-06 21:06:20 字數 1985 閱讀 4470

bsgs(baby-step giant-step),即大步小步演算法,常用於求解離散對數問題。該演算法可以在 \(o(\sqrt p)\) 的時間複雜度內求解

\[a^x \equiv b \pmod p

\]我們將求解的答案 \(x\) 設為 \(km-c \ (c < m)\) 的形式,即

\[a^ \equiv b \pmod p

\]在 \(a \perp p\) 條件下,上式等價於

\[a^ \equiv ba^ \pmod p

\]先列舉 \(c\),使用雜湊表(或map)將所有 \(ba^c\) 的值存起來。

再列舉 \(k\),計算 \(a^\) 的值並尋找是否有 \(ba^c\) 的值與之對應,從而找到方程所有解。

至此,我們找到了模 \(p\) 意義下的所有解。

不難發現,該演算法時間複雜度為 \(o(\max (m,\dfrac))\),當 \(m=\left\lceil \sqrt p \right\rceil\) 時,複雜度最優。

故該演算法的時間複雜度為 \(o(\sqrt p)\)。

此時,\(a^ \equiv ba^ \pmod p\) 是 \(a^ \equiv b \pmod p\) 的必要不充分條件,我們需要進行變形使得 \(a\) 和模數以使用上述演算法求解。

同餘的基本性質:若 \(a,b,d,m \in \mathbf,d \mid a,d \mid b,d \mid m\),則 \(a \equiv b \pmod p\) 等價於 \(\frac \equiv \frac \pmod }\)

設 \(d_1=\gcd(a,p)\)。

若 \(d_1 \nmid b\),則方程無解。

否則,將方程變形為

\[\dfraca^ \equiv \dfrac \pmod }

\]若 \(a\) 與 \(\dfrac\) 仍不互素,則不斷重複上述過程,直到 \(a \perp \dfrac\)。

此時,原方程變形為

\[\dfraca^ \equiv \dfrac \pmod }

\]通過第一部分的 bsgs 演算法,不難求出 \(x-m\) 的所有解,只需另外需考慮 \(x < m\)的情況即可。

時間複雜度仍為 \(o(\sqrt n)\)

設 \(g\) 是模 \(n\) 的原根,那麼對於任意 \(a\) 滿足 \(a \perp n\),均存在 \(k\) 使得

\[g^k \equiv a \pmod n

\]這樣的關係有助於把 \(\bmod \ n\) 的乘法轉化為 \(\bmod \ \varphi(n)\) 的加法。

考慮求解 \(x^a \equiv b \pmod p\),滿足 \(b \in \mathbf\) 且 \(p\) 是素數。

設 \(g\) 為模 \(p\) 的原根,由於 \(g^0,g^1,g^2,\cdots,g^\) 構成模 \(p\) 的一組簡化剩餘系且 \(p \nmid x\),故令 \(x=g^c,b=g^t\),得到

\[g^ \equiv g^t \pmod p

\]兩邊同時取離散對數,得到

\[ac \equiv t \pmod

\]我們可以先通過 bsgs 演算法求解出 \(t\),再通過擴充套件歐幾里得演算法求解出 \(c\),即可得到方程的一組特解:\(x_0=g^c\)。

找到一組特解 \(x_0=g^c\) 之後,令 \(x=g^k\),得到

\[g^ \equiv g^ \pmod p

\]故 \(k\) 的所有解為

\[\forall t \in \mathbf z,a \mid t \cdot \varphi (p),k=c+ \dfrac

\]由於 \(a \mid t \cdot \varphi (p)\),則 \(\frac \mid t\),故令 \(t=\frac \cdot i\)

則原方程所有解為

\[\forall i \in \mathbf z,x=g^ \cdot i}

\]

BSGS學習筆記

用於求 a x equiv b pmod 高次方程的最小正整數解 x 其中 c 為素數 引理1 a equiv a i pmod p p 為素數,即 a i 在模 p 的意義下會出現迴圈節 注 varphi p 可能不是最小迴圈節 因為 a equiv 1 pmod p 則 a equiv 1 pm...

學習筆記 省選演算法 數論 BSGS演算法

浙江省神犇協會 神犇1號 zjoi 2018的題大家都ak了嗎?全體神犇 ak了!神犇1號 7號神犇,你認識那個弱弱的xyz32768嗎?神犇7號 是的,我認識!我現在就去d他!x省y市 神犇7號 告訴你,zj的神犇協會從此有乙個規矩 第1天,協會派我,也就是7號神犇來d人,第2天,協會就派49號神...

演算法 BSGS演算法

bsgs演算法用於求解關於x的模方程 a x equiv b mod p p為質數 相當於求模意義下的對數。思想 由費馬小定理,a equiv 1 mod p 在p 1次方後開始迴圈,所以若原方程有解,x in 0,p 1 設 x i m j 有 a equiv b mod p 移項得 i equi...