diff --git a/07-teorie-cisel/teorie-cisel.tex b/07-teorie-cisel/teorie-cisel.tex index 5662fc851c9490b9462c5cead1edb700599a3f61..27824955a1c771c42ca73c339fc0f6dcf05f31e6 100644 --- a/07-teorie-cisel/teorie-cisel.tex +++ b/07-teorie-cisel/teorie-cisel.tex @@ -589,8 +589,62 @@ nicméně pan Rabin později nahlédl, že svědků vždy existuje alespoň $3/4 a randomizovaný algoritmus byl na~světě. } +\subsection{Hledání prvočísel} + +Často potřebujeme opatřit si nějaké velké ($b$-bitové) prvočíslo. Nabízí se +generovat náhodná $b$-bitová čísla (začínající na~1), testovat, zda to jsou +prvočísla, a~opakovat, dokud nedostaneme prvočíslo. + +TODO + \section{Diskrétní logaritmy} +Důležitou vlastností těles modulo prvočíslo je, že se v~nich dá logaritmovat. +Nejprve uvedeme bez důkazu následující větu: + +\claim{ +Pro každé prvočíslo~$p$ je multiplikativní grupa~$\Zsp$ cyklická. Existuje +tedy alespoň jedno~$g$ (generátor) takové, že $\Zsp = \{g^0,\ldots,g^{p-2}\}$. +} + +Grupa $\Zsp$ je tedy izomorfní s~grupou $\Z_{p-1}$. +Izomorfismus v~jednom směru je funkce $e: x \mapsto g^x \bmod p$, v~druhém směru +její inverze, které se říká \em{diskrétní logaritmus.} +Zatímco mocniny modulo~$p$ dokážeme počítat efektivně (v~čase $\O(b^3)$), +diskrétní logaritmus nikoliv. Podobně jako u~faktorizace neznáme žádný polynomiální +algorimus, ale známe zajímavé subexponenciální algoritmy a polynomiální kvantový algoritmus. + +Často potřebujeme nějaký generátor najít. K~tomu se hodí otestovat, zda dané číslo~$g$ je generátorem. + +\theorem{ +$g\in\Zsp$ je generátorem~$\Zsp$ právě tehdy, když pro všechny prvočíselné dělitele~$d$ čísla~$p-1$ +platí $g^{(p-1)/d} \not\equiv 1$. +} + +\proof +Pokud pro některého z~dělitelů vyjde $g^{(p-1)/d} \equiv 1$, znamená to, že $g$~není generátorem celé grupy, +nýbrž jen nějaké menší podgrupy. + +Pro opačnou implikaci uvažme $g$, které generuje jen nějakou podgrupu $H = \{g^0,\ldots,g^{t-1}\} \allowbreak\subset \Z_p$, +přičemž $g^t \equiv 1$. +Podle Lagrangeovy věty platí $t = |H| \divs |\Z_p| = \varphi(p) = p-1$. + +Pro $d=(p-1)/t$ by tedy bylo $g^{(p-1)/d} \equiv 1$. Jenže $d$ nemusí být prvočíslo +(a~testovat všechny neprvočíselné dělitele by trvalo příliš dlouho). +V~takovém případě uvážíme rozklad $d=d'e$, kde $d'$ je prvočíslo a $e>1$. +Potom $g^{(p-1)/d'} \equiv g^{((p-1)/d)e} \equiv \left( g^{(p-1)/d} \right)^e \equiv 1^e \equiv 1$. +Takže $g$ z~negenerování usvědčíme volbou prvočíselného dělitele~$d'$. +\qed + +\corr{ +Známe-li faktorizaci čísla $p-1$, umíme otestovat, zda $g$ je generátor, v~čase $\O(b^4)$. +Prvočíselných dělitelů totiž musí být $\O(b)$. +} + +\subsection{Hledání generátoru} + +TODO + \section{Diskrétní odmocniny} \sectionstar{Rozbor Rabinova-Millerova testu}