\(\newcommand{\footnotename}{footnote}\)
\(\def \LWRfootnote {1}\)
\(\newcommand {\footnote }[2][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\newcommand {\footnotemark }[1][\LWRfootnote ]{{}^{\mathrm {#1}}}\)
\(\newcommand \ensuremath [1]{#1}\)
\(\newcommand {\LWRframebox }[2][]{\fbox {#2}} \newcommand {\framebox }[1][]{\LWRframebox } \)
\(\newcommand {\setlength }[2]{}\)
\(\newcommand {\addtolength }[2]{}\)
\(\newcommand {\setcounter }[2]{}\)
\(\newcommand {\addtocounter }[2]{}\)
\(\newcommand {\cline }[1]{}\)
\(\newcommand {\directlua }[1]{\text {(directlua)}}\)
\(\newcommand {\luatexdirectlua }[1]{\text {(directlua)}}\)
\(\newcommand {\protect }{}\)
\(\def \LWRabsorbnumber #1 {}\)
\(\def \LWRabsorbquotenumber "#1 {}\)
\(\def \mathchar {\ifnextchar "\LWRabsorbquotenumber \LWRabsorbnumber }\)
\(\def \mathcode #1={\mathchar }\)
\(\let \delcode \mathcode \)
\(\let \delimiter \mathchar \)
\(\let \LWRref \ref \)
\(\renewcommand {\ref }{\ifstar \LWRref \LWRref }\)
\(\newcommand {\intertext }[1]{\text {#1}\notag \\}\)
\(\newcommand {\mathllap }[2][]{{#1#2}}\)
\(\newcommand {\mathrlap }[2][]{{#1#2}}\)
\(\newcommand {\mathclap }[2][]{{#1#2}}\)
\(\newcommand {\mathmbox }[1]{#1}\)
\(\newcommand {\clap }[1]{#1}\)
\(\newcommand {\LWRmathmakebox }[2][]{#2}\)
\(\newcommand {\mathmakebox }[1][]{\LWRmathmakebox }\)
\(\newcommand {\cramped }[2][]{{#1#2}}\)
\(\newcommand {\crampedllap }[2][]{{#1#2}}\)
\(\newcommand {\crampedrlap }[2][]{{#1#2}}\)
\(\newcommand {\crampedclap }[2][]{{#1#2}}\)
\(\newenvironment {crampedsubarray}[1]{}{}\)
\(\newcommand {\crampedsubstack }{}\)
\(\newcommand {\smashoperator }[2][]{#2\limits }\)
\(\newcommand {\adjustlimits }{}\)
\(\newcommand {\SwapAboveDisplaySkip }{}\)
\(\require {extpfeil}\)
\(\Newextarrow \xleftrightarrow {10,10}{0x2194}\)
\(\Newextarrow \xLeftarrow {10,10}{0x21d0}\)
\(\Newextarrow \xhookleftarrow {10,10}{0x21a9}\)
\(\Newextarrow \xmapsto {10,10}{0x21a6}\)
\(\Newextarrow \xRightarrow {10,10}{0x21d2}\)
\(\Newextarrow \xLeftrightarrow {10,10}{0x21d4}\)
\(\Newextarrow \xhookrightarrow {10,10}{0x21aa}\)
\(\Newextarrow \xrightharpoondown {10,10}{0x21c1}\)
\(\Newextarrow \xleftharpoondown {10,10}{0x21bd}\)
\(\Newextarrow \xrightleftharpoons {10,10}{0x21cc}\)
\(\Newextarrow \xrightharpoonup {10,10}{0x21c0}\)
\(\Newextarrow \xleftharpoonup {10,10}{0x21bc}\)
\(\Newextarrow \xleftrightharpoons {10,10}{0x21cb}\)
\(\newcommand {\LWRdounderbracket }[3]{\underset {#3}{\underline {#1}}}\)
\(\newcommand {\LWRunderbracket }[2][]{\LWRdounderbracket {#2}}\)
\(\newcommand {\underbracket }[1][]{\LWRunderbracket }\)
\(\newcommand {\LWRdooverbracket }[3]{\overset {#3}{\overline {#1}}}\)
\(\newcommand {\LWRoverbracket }[2][]{\LWRdooverbracket {#2}}\)
\(\newcommand {\overbracket }[1][]{\LWRoverbracket }\)
\(\newcommand {\LATEXunderbrace }[1]{\underbrace {#1}}\)
\(\newcommand {\LATEXoverbrace }[1]{\overbrace {#1}}\)
\(\newenvironment {matrix*}[1][]{\begin {matrix}}{\end {matrix}}\)
\(\newenvironment {pmatrix*}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bmatrix*}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bmatrix*}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vmatrix*}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vmatrix*}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newenvironment {smallmatrix*}[1][]{\begin {matrix}}{\end {matrix}}\)
\(\newenvironment {psmallmatrix*}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bsmallmatrix*}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bsmallmatrix*}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vsmallmatrix*}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vsmallmatrix*}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newenvironment {psmallmatrix}[1][]{\begin {pmatrix}}{\end {pmatrix}}\)
\(\newenvironment {bsmallmatrix}[1][]{\begin {bmatrix}}{\end {bmatrix}}\)
\(\newenvironment {Bsmallmatrix}[1][]{\begin {Bmatrix}}{\end {Bmatrix}}\)
\(\newenvironment {vsmallmatrix}[1][]{\begin {vmatrix}}{\end {vmatrix}}\)
\(\newenvironment {Vsmallmatrix}[1][]{\begin {Vmatrix}}{\end {Vmatrix}}\)
\(\newcommand {\LWRmultlined }[1][]{\begin {multline*}}\)
\(\newenvironment {multlined}[1][]{\LWRmultlined }{\end {multline*}}\)
\(\let \LWRorigshoveleft \shoveleft \)
\(\renewcommand {\shoveleft }[1][]{\LWRorigshoveleft }\)
\(\let \LWRorigshoveright \shoveright \)
\(\renewcommand {\shoveright }[1][]{\LWRorigshoveright }\)
\(\newenvironment {dcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {dcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {rcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {rcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {drcases}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {drcases*}{\begin {cases}}{\end {cases}}\)
\(\newenvironment {cases*}{\begin {cases}}{\end {cases}}\)
\(\newcommand {\MoveEqLeft }[1][]{}\)
\(\def \LWRAboxed #1!|!{\fbox {\(#1\)}&\fbox {\(#2\)}} \newcommand {\Aboxed }[1]{\LWRAboxed #1&&!|!} \)
\( \newcommand {\LWRABLines }[1][\Updownarrow ]{#1 \notag \\}\newcommand {\ArrowBetweenLines }{\ifstar \LWRABLines \LWRABLines } \)
\(\newcommand {\shortintertext }[1]{\text {#1}\notag \\}\)
\(\newcommand {\vdotswithin }[1]{\hspace {.5em}\vdots }\)
\(\newcommand {\LWRshortvdotswithinstar }[1]{\vdots \hspace {.5em} & \\}\)
\(\newcommand {\LWRshortvdotswithinnostar }[1]{& \hspace {.5em}\vdots \\}\)
\(\newcommand {\shortvdotswithin }{\ifstar \LWRshortvdotswithinstar \LWRshortvdotswithinnostar }\)
\(\newcommand {\MTFlushSpaceAbove }{}\)
\(\newcommand {\MTFlushSpaceBelow }{\\}\)
\(\newcommand \lparen {(}\)
\(\newcommand \rparen {)}\)
\(\newcommand {\ordinarycolon }{:}\)
\(\newcommand {\vcentcolon }{\mathrel {\mathop \ordinarycolon }}\)
\(\newcommand \dblcolon {\vcentcolon \vcentcolon }\)
\(\newcommand \coloneqq {\vcentcolon =}\)
\(\newcommand \Coloneqq {\dblcolon =}\)
\(\newcommand \coloneq {\vcentcolon {-}}\)
\(\newcommand \Coloneq {\dblcolon {-}}\)
\(\newcommand \eqqcolon {=\vcentcolon }\)
\(\newcommand \Eqqcolon {=\dblcolon }\)
\(\newcommand \eqcolon {\mathrel {-}\vcentcolon }\)
\(\newcommand \Eqcolon {\mathrel {-}\dblcolon }\)
\(\newcommand \colonapprox {\vcentcolon \approx }\)
\(\newcommand \Colonapprox {\dblcolon \approx }\)
\(\newcommand \colonsim {\vcentcolon \sim }\)
\(\newcommand \Colonsim {\dblcolon \sim }\)
\(\newcommand {\nuparrow }{\mathrel {\cancel {\uparrow }}}\)
\(\newcommand {\ndownarrow }{\mathrel {\cancel {\downarrow }}}\)
\(\newcommand {\bigtimes }{\mathop {\Large \times }\limits }\)
\(\newcommand {\prescript }[3]{{}^{#1}_{#2}#3}\)
\(\newenvironment {lgathered}{\begin {gathered}}{\end {gathered}}\)
\(\newenvironment {rgathered}{\begin {gathered}}{\end {gathered}}\)
\(\newcommand {\splitfrac }[2]{{}^{#1}_{#2}}\)
\(\let \splitdfrac \splitfrac \)
\(\newcommand {\LWRoverlaysymbols }[2]{\mathord {\smash {\mathop {#2\strut }\limits ^{\smash {\lower 3ex{#1}}}}\strut }}\)
\(\newcommand{\alphaup}{\unicode{x03B1}}\)
\(\newcommand{\betaup}{\unicode{x03B2}}\)
\(\newcommand{\gammaup}{\unicode{x03B3}}\)
\(\newcommand{\digammaup}{\unicode{x03DD}}\)
\(\newcommand{\deltaup}{\unicode{x03B4}}\)
\(\newcommand{\epsilonup}{\unicode{x03F5}}\)
\(\newcommand{\varepsilonup}{\unicode{x03B5}}\)
\(\newcommand{\zetaup}{\unicode{x03B6}}\)
\(\newcommand{\etaup}{\unicode{x03B7}}\)
\(\newcommand{\thetaup}{\unicode{x03B8}}\)
\(\newcommand{\varthetaup}{\unicode{x03D1}}\)
\(\newcommand{\iotaup}{\unicode{x03B9}}\)
\(\newcommand{\kappaup}{\unicode{x03BA}}\)
\(\newcommand{\varkappaup}{\unicode{x03F0}}\)
\(\newcommand{\lambdaup}{\unicode{x03BB}}\)
\(\newcommand{\muup}{\unicode{x03BC}}\)
\(\newcommand{\nuup}{\unicode{x03BD}}\)
\(\newcommand{\xiup}{\unicode{x03BE}}\)
\(\newcommand{\omicronup}{\unicode{x03BF}}\)
\(\newcommand{\piup}{\unicode{x03C0}}\)
\(\newcommand{\varpiup}{\unicode{x03D6}}\)
\(\newcommand{\rhoup}{\unicode{x03C1}}\)
\(\newcommand{\varrhoup}{\unicode{x03F1}}\)
\(\newcommand{\sigmaup}{\unicode{x03C3}}\)
\(\newcommand{\varsigmaup}{\unicode{x03C2}}\)
\(\newcommand{\tauup}{\unicode{x03C4}}\)
\(\newcommand{\upsilonup}{\unicode{x03C5}}\)
\(\newcommand{\phiup}{\unicode{x03D5}}\)
\(\newcommand{\varphiup}{\unicode{x03C6}}\)
\(\newcommand{\chiup}{\unicode{x03C7}}\)
\(\newcommand{\psiup}{\unicode{x03C8}}\)
\(\newcommand{\omegaup}{\unicode{x03C9}}\)
\(\newcommand{\Alphaup}{\unicode{x0391}}\)
\(\newcommand{\Betaup}{\unicode{x0392}}\)
\(\newcommand{\Gammaup}{\unicode{x0393}}\)
\(\newcommand{\Digammaup}{\unicode{x03DC}}\)
\(\newcommand{\Deltaup}{\unicode{x0394}}\)
\(\newcommand{\Epsilonup}{\unicode{x0395}}\)
\(\newcommand{\Zetaup}{\unicode{x0396}}\)
\(\newcommand{\Etaup}{\unicode{x0397}}\)
\(\newcommand{\Thetaup}{\unicode{x0398}}\)
\(\newcommand{\Varthetaup}{\unicode{x03F4}}\)
\(\newcommand{\Iotaup}{\unicode{x0399}}\)
\(\newcommand{\Kappaup}{\unicode{x039A}}\)
\(\newcommand{\Lambdaup}{\unicode{x039B}}\)
\(\newcommand{\Muup}{\unicode{x039C}}\)
\(\newcommand{\Nuup}{\unicode{x039D}}\)
\(\newcommand{\Xiup}{\unicode{x039E}}\)
\(\newcommand{\Omicronup}{\unicode{x039F}}\)
\(\newcommand{\Piup}{\unicode{x03A0}}\)
\(\newcommand{\Varpiup}{\unicode{x03D6}}\)
\(\newcommand{\Rhoup}{\unicode{x03A1}}\)
\(\newcommand{\Sigmaup}{\unicode{x03A3}}\)
\(\newcommand{\Tauup}{\unicode{x03A4}}\)
\(\newcommand{\Upsilonup}{\unicode{x03A5}}\)
\(\newcommand{\Phiup}{\unicode{x03A6}}\)
\(\newcommand{\Chiup}{\unicode{x03A7}}\)
\(\newcommand{\Psiup}{\unicode{x03A8}}\)
\(\newcommand{\Omegaup}{\unicode{x03A9}}\)
\(\newcommand{\alphait}{\unicode{x1D6FC}}\)
\(\newcommand{\betait}{\unicode{x1D6FD}}\)
\(\newcommand{\gammait}{\unicode{x1D6FE}}\)
\(\newcommand{\digammait}{\mathit{\unicode{x03DD}}}\)
\(\newcommand{\deltait}{\unicode{x1D6FF}}\)
\(\newcommand{\epsilonit}{\unicode{x1D716}}\)
\(\newcommand{\varepsilonit}{\unicode{x1D700}}\)
\(\newcommand{\zetait}{\unicode{x1D701}}\)
\(\newcommand{\etait}{\unicode{x1D702}}\)
\(\newcommand{\thetait}{\unicode{x1D703}}\)
\(\newcommand{\varthetait}{\unicode{x1D717}}\)
\(\newcommand{\iotait}{\unicode{x1D704}}\)
\(\newcommand{\kappait}{\unicode{x1D705}}\)
\(\newcommand{\varkappait}{\unicode{x1D718}}\)
\(\newcommand{\lambdait}{\unicode{x1D706}}\)
\(\newcommand{\muit}{\unicode{x1D707}}\)
\(\newcommand{\nuit}{\unicode{x1D708}}\)
\(\newcommand{\xiit}{\unicode{x1D709}}\)
\(\newcommand{\omicronit}{\unicode{x1D70A}}\)
\(\newcommand{\piit}{\unicode{x1D70B}}\)
\(\newcommand{\varpiit}{\unicode{x1D71B}}\)
\(\newcommand{\rhoit}{\unicode{x1D70C}}\)
\(\newcommand{\varrhoit}{\unicode{x1D71A}}\)
\(\newcommand{\sigmait}{\unicode{x1D70E}}\)
\(\newcommand{\varsigmait}{\unicode{x1D70D}}\)
\(\newcommand{\tauit}{\unicode{x1D70F}}\)
\(\newcommand{\upsilonit}{\unicode{x1D710}}\)
\(\newcommand{\phiit}{\unicode{x1D719}}\)
\(\newcommand{\varphiit}{\unicode{x1D711}}\)
\(\newcommand{\chiit}{\unicode{x1D712}}\)
\(\newcommand{\psiit}{\unicode{x1D713}}\)
\(\newcommand{\omegait}{\unicode{x1D714}}\)
\(\newcommand{\Alphait}{\unicode{x1D6E2}}\)
\(\newcommand{\Betait}{\unicode{x1D6E3}}\)
\(\newcommand{\Gammait}{\unicode{x1D6E4}}\)
\(\newcommand{\Digammait}{\mathit{\unicode{x03DC}}}\)
\(\newcommand{\Deltait}{\unicode{x1D6E5}}\)
\(\newcommand{\Epsilonit}{\unicode{x1D6E6}}\)
\(\newcommand{\Zetait}{\unicode{x1D6E7}}\)
\(\newcommand{\Etait}{\unicode{x1D6E8}}\)
\(\newcommand{\Thetait}{\unicode{x1D6E9}}\)
\(\newcommand{\Varthetait}{\unicode{x1D6F3}}\)
\(\newcommand{\Iotait}{\unicode{x1D6EA}}\)
\(\newcommand{\Kappait}{\unicode{x1D6EB}}\)
\(\newcommand{\Lambdait}{\unicode{x1D6EC}}\)
\(\newcommand{\Muit}{\unicode{x1D6ED}}\)
\(\newcommand{\Nuit}{\unicode{x1D6EE}}\)
\(\newcommand{\Xiit}{\unicode{x1D6EF}}\)
\(\newcommand{\Omicronit}{\unicode{x1D6F0}}\)
\(\newcommand{\Piit}{\unicode{x1D6F1}}\)
\(\newcommand{\Rhoit}{\unicode{x1D6F2}}\)
\(\newcommand{\Sigmait}{\unicode{x1D6F4}}\)
\(\newcommand{\Tauit}{\unicode{x1D6F5}}\)
\(\newcommand{\Upsilonit}{\unicode{x1D6F6}}\)
\(\newcommand{\Phiit}{\unicode{x1D6F7}}\)
\(\newcommand{\Chiit}{\unicode{x1D6F8}}\)
\(\newcommand{\Psiit}{\unicode{x1D6F9}}\)
\(\newcommand{\Omegait}{\unicode{x1D6FA}}\)
\(\let \digammaup \Digammaup \)
\(\renewcommand {\digammait }{\mathit {\digammaup }}\)
\(\newcommand {\smallin }{\unicode {x220A}}\)
\(\newcommand {\smallowns }{\unicode {x220D}}\)
\(\newcommand {\notsmallin }{\LWRoverlaysymbols {/}{\unicode {x220A}}}\)
\(\newcommand {\notsmallowns }{\LWRoverlaysymbols {/}{\unicode {x220D}}}\)
\(\newcommand {\rightangle }{\unicode {x221F}}\)
\(\newcommand {\intclockwise }{\unicode {x2231}}\)
\(\newcommand {\ointclockwise }{\unicode {x2232}}\)
\(\newcommand {\ointctrclockwise }{\unicode {x2233}}\)
\(\newcommand {\oiint }{\unicode {x222F}}\)
\(\newcommand {\oiiint }{\unicode {x2230}}\)
\(\newcommand {\ddag }{\unicode {x2021}}\)
\(\newcommand {\P }{\unicode {x00B6}}\)
\(\newcommand {\copyright }{\unicode {x00A9}}\)
\(\newcommand {\dag }{\unicode {x2020}}\)
\(\newcommand {\pounds }{\unicode {x00A3}}\)
\(\newcommand {\iddots }{\unicode {x22F0}}\)
\(\newcommand {\utimes }{\overline {\times }}\)
\(\newcommand {\dtimes }{\underline {\times }}\)
\(\newcommand {\udtimes }{\overline {\underline {\times }}}\)
\(\newcommand {\leftwave }{\left \{}\)
\(\newcommand {\rightwave }{\right \}}\)
\(\newcommand {\toprule }[1][]{\hline }\)
\(\let \midrule \toprule \)
\(\let \bottomrule \toprule \)
\(\newcommand {\cmidrule }[2][]{}\)
\(\newcommand {\morecmidrules }{}\)
\(\newcommand {\specialrule }[3]{\hline }\)
\(\newcommand {\addlinespace }[1][]{}\)
\(\newcommand {\LWRsubmultirow }[2][]{#2}\)
\(\newcommand {\LWRmultirow }[2][]{\LWRsubmultirow }\)
\(\newcommand {\multirow }[2][]{\LWRmultirow }\)
\(\newcommand {\mrowcell }{}\)
\(\newcommand {\mcolrowcell }{}\)
\(\newcommand {\STneed }[1]{}\)
\( \newcommand {\multicolumn }[3]{#3}\)
\(\newcommand {\tothe }[1]{^{#1}}\)
\(\newcommand {\raiseto }[2]{{#2}^{#1}}\)
\(\newcommand {\ang }[2][]{(\mathrm {#2})\degree }\)
\(\newcommand {\num }[2][]{\mathrm {#2}}\)
\(\newcommand {\si }[2][]{\mathrm {#2}}\)
\(\newcommand {\LWRSI }[2][]{\mathrm {#1\LWRSInumber \,#2}}\)
\(\newcommand {\SI }[2][]{\def \LWRSInumber {#2}\LWRSI }\)
\(\newcommand {\numlist }[2][]{\mathrm {#2}}\)
\(\newcommand {\numrange }[3][]{\mathrm {#2\,\unicode {x2013}\,#3}}\)
\(\newcommand {\SIlist }[3][]{\mathrm {#2\,#3}}\)
\(\newcommand {\SIrange }[4][]{\mathrm {#2\,#4\,\unicode {x2013}\,#3\,#4}}\)
\(\newcommand {\tablenum }[2][]{\mathrm {#2}}\)
\(\newcommand {\ampere }{\mathrm {A}}\)
\(\newcommand {\candela }{\mathrm {cd}}\)
\(\newcommand {\kelvin }{\mathrm {K}}\)
\(\newcommand {\kilogram }{\mathrm {kg}}\)
\(\newcommand {\metre }{\mathrm {m}}\)
\(\newcommand {\mole }{\mathrm {mol}}\)
\(\newcommand {\second }{\mathrm {s}}\)
\(\newcommand {\becquerel }{\mathrm {Bq}}\)
\(\newcommand {\degreeCelsius }{\unicode {x2103}}\)
\(\newcommand {\coulomb }{\mathrm {C}}\)
\(\newcommand {\farad }{\mathrm {F}}\)
\(\newcommand {\gray }{\mathrm {Gy}}\)
\(\newcommand {\hertz }{\mathrm {Hz}}\)
\(\newcommand {\henry }{\mathrm {H}}\)
\(\newcommand {\joule }{\mathrm {J}}\)
\(\newcommand {\katal }{\mathrm {kat}}\)
\(\newcommand {\lumen }{\mathrm {lm}}\)
\(\newcommand {\lux }{\mathrm {lx}}\)
\(\newcommand {\newton }{\mathrm {N}}\)
\(\newcommand {\ohm }{\mathrm {\Omega }}\)
\(\newcommand {\pascal }{\mathrm {Pa}}\)
\(\newcommand {\radian }{\mathrm {rad}}\)
\(\newcommand {\siemens }{\mathrm {S}}\)
\(\newcommand {\sievert }{\mathrm {Sv}}\)
\(\newcommand {\steradian }{\mathrm {sr}}\)
\(\newcommand {\tesla }{\mathrm {T}}\)
\(\newcommand {\volt }{\mathrm {V}}\)
\(\newcommand {\watt }{\mathrm {W}}\)
\(\newcommand {\weber }{\mathrm {Wb}}\)
\(\newcommand {\day }{\mathrm {d}}\)
\(\newcommand {\degree }{\mathrm {^\circ }}\)
\(\newcommand {\hectare }{\mathrm {ha}}\)
\(\newcommand {\hour }{\mathrm {h}}\)
\(\newcommand {\litre }{\mathrm {l}}\)
\(\newcommand {\liter }{\mathrm {L}}\)
\(\newcommand {\arcminute }{^\prime }\)
\(\newcommand {\minute }{\mathrm {min}}\)
\(\newcommand {\arcsecond }{^{\prime \prime }}\)
\(\newcommand {\tonne }{\mathrm {t}}\)
\(\newcommand {\astronomicalunit }{au}\)
\(\newcommand {\atomicmassunit }{u}\)
\(\newcommand {\bohr }{\mathit {a}_0}\)
\(\newcommand {\clight }{\mathit {c}_0}\)
\(\newcommand {\dalton }{\mathrm {D}_\mathrm {a}}\)
\(\newcommand {\electronmass }{\mathit {m}_{\mathrm {e}}}\)
\(\newcommand {\electronvolt }{\mathrm {eV}}\)
\(\newcommand {\elementarycharge }{\mathit {e}}\)
\(\newcommand {\hartree }{\mathit {E}_{\mathrm {h}}}\)
\(\newcommand {\planckbar }{\mathit {\unicode {x210F}}}\)
\(\newcommand {\angstrom }{\mathrm {\unicode {x212B}}}\)
\(\let \LWRorigbar \bar \)
\(\newcommand {\bar }{\mathrm {bar}}\)
\(\newcommand {\barn }{\mathrm {b}}\)
\(\newcommand {\bel }{\mathrm {B}}\)
\(\newcommand {\decibel }{\mathrm {dB}}\)
\(\newcommand {\knot }{\mathrm {kn}}\)
\(\newcommand {\mmHg }{\mathrm {mmHg}}\)
\(\newcommand {\nauticalmile }{\mathrm {M}}\)
\(\newcommand {\neper }{\mathrm {Np}}\)
\(\newcommand {\yocto }{\mathrm {y}}\)
\(\newcommand {\zepto }{\mathrm {z}}\)
\(\newcommand {\atto }{\mathrm {a}}\)
\(\newcommand {\femto }{\mathrm {f}}\)
\(\newcommand {\pico }{\mathrm {p}}\)
\(\newcommand {\nano }{\mathrm {n}}\)
\(\newcommand {\micro }{\mathrm {\unicode {x00B5}}}\)
\(\newcommand {\milli }{\mathrm {m}}\)
\(\newcommand {\centi }{\mathrm {c}}\)
\(\newcommand {\deci }{\mathrm {d}}\)
\(\newcommand {\deca }{\mathrm {da}}\)
\(\newcommand {\hecto }{\mathrm {h}}\)
\(\newcommand {\kilo }{\mathrm {k}}\)
\(\newcommand {\mega }{\mathrm {M}}\)
\(\newcommand {\giga }{\mathrm {G}}\)
\(\newcommand {\tera }{\mathrm {T}}\)
\(\newcommand {\peta }{\mathrm {P}}\)
\(\newcommand {\exa }{\mathrm {E}}\)
\(\newcommand {\zetta }{\mathrm {Z}}\)
\(\newcommand {\yotta }{\mathrm {Y}}\)
\(\newcommand {\percent }{\mathrm {\%}}\)
\(\newcommand {\meter }{\mathrm {m}}\)
\(\newcommand {\metre }{\mathrm {m}}\)
\(\newcommand {\gram }{\mathrm {g}}\)
\(\newcommand {\kg }{\kilo \gram }\)
\(\newcommand {\of }[1]{_{\mathrm {#1}}}\)
\(\newcommand {\squared }{^2}\)
\(\newcommand {\square }[1]{\mathrm {#1}^2}\)
\(\newcommand {\cubed }{^3}\)
\(\newcommand {\cubic }[1]{\mathrm {#1}^3}\)
\(\newcommand {\per }{/}\)
\(\newcommand {\celsius }{\unicode {x2103}}\)
\(\newcommand {\fg }{\femto \gram }\)
\(\newcommand {\pg }{\pico \gram }\)
\(\newcommand {\ng }{\nano \gram }\)
\(\newcommand {\ug }{\micro \gram }\)
\(\newcommand {\mg }{\milli \gram }\)
\(\newcommand {\g }{\gram }\)
\(\newcommand {\kg }{\kilo \gram }\)
\(\newcommand {\amu }{\mathrm {u}}\)
\(\newcommand {\nm }{\nano \metre }\)
\(\newcommand {\um }{\micro \metre }\)
\(\newcommand {\mm }{\milli \metre }\)
\(\newcommand {\cm }{\centi \metre }\)
\(\newcommand {\dm }{\deci \metre }\)
\(\newcommand {\m }{\metre }\)
\(\newcommand {\km }{\kilo \metre }\)
\(\newcommand {\as }{\atto \second }\)
\(\newcommand {\fs }{\femto \second }\)
\(\newcommand {\ps }{\pico \second }\)
\(\newcommand {\ns }{\nano \second }\)
\(\newcommand {\us }{\micro \second }\)
\(\newcommand {\ms }{\milli \second }\)
\(\newcommand {\s }{\second }\)
\(\newcommand {\fmol }{\femto \mol }\)
\(\newcommand {\pmol }{\pico \mol }\)
\(\newcommand {\nmol }{\nano \mol }\)
\(\newcommand {\umol }{\micro \mol }\)
\(\newcommand {\mmol }{\milli \mol }\)
\(\newcommand {\mol }{\mol }\)
\(\newcommand {\kmol }{\kilo \mol }\)
\(\newcommand {\pA }{\pico \ampere }\)
\(\newcommand {\nA }{\nano \ampere }\)
\(\newcommand {\uA }{\micro \ampere }\)
\(\newcommand {\mA }{\milli \ampere }\)
\(\newcommand {\A }{\ampere }\)
\(\newcommand {\kA }{\kilo \ampere }\)
\(\newcommand {\ul }{\micro \litre }\)
\(\newcommand {\ml }{\milli \litre }\)
\(\newcommand {\l }{\litre }\)
\(\newcommand {\hl }{\hecto \litre }\)
\(\newcommand {\uL }{\micro \liter }\)
\(\newcommand {\mL }{\milli \liter }\)
\(\newcommand {\L }{\liter }\)
\(\newcommand {\hL }{\hecto \liter }\)
\(\newcommand {\mHz }{\milli \hertz }\)
\(\newcommand {\Hz }{\hertz }\)
\(\newcommand {\kHz }{\kilo \hertz }\)
\(\newcommand {\MHz }{\mega \hertz }\)
\(\newcommand {\GHz }{\giga \hertz }\)
\(\newcommand {\THz }{\tera \hertz }\)
\(\newcommand {\mN }{\milli \newton }\)
\(\newcommand {\N }{\newton }\)
\(\newcommand {\kN }{\kilo \newton }\)
\(\newcommand {\MN }{\mega \newton }\)
\(\newcommand {\Pa }{\pascal }\)
\(\newcommand {\kPa }{\kilo \pascal }\)
\(\newcommand {\MPa }{\mega \pascal }\)
\(\newcommand {\GPa }{\giga \pascal }\)
\(\newcommand {\mohm }{\milli \ohm }\)
\(\newcommand {\kohm }{\kilo \ohm }\)
\(\newcommand {\Mohm }{\mega \ohm }\)
\(\newcommand {\pV }{\pico \volt }\)
\(\newcommand {\nV }{\nano \volt }\)
\(\newcommand {\uV }{\micro \volt }\)
\(\newcommand {\mV }{\milli \volt }\)
\(\newcommand {\V }{\volt }\)
\(\newcommand {\kV }{\kilo \volt }\)
\(\newcommand {\W }{\watt }\)
\(\newcommand {\uW }{\micro \watt }\)
\(\newcommand {\mW }{\milli \watt }\)
\(\newcommand {\kW }{\kilo \watt }\)
\(\newcommand {\MW }{\mega \watt }\)
\(\newcommand {\GW }{\giga \watt }\)
\(\newcommand {\J }{\joule }\)
\(\newcommand {\uJ }{\micro \joule }\)
\(\newcommand {\mJ }{\milli \joule }\)
\(\newcommand {\kJ }{\kilo \joule }\)
\(\newcommand {\eV }{\electronvolt }\)
\(\newcommand {\meV }{\milli \electronvolt }\)
\(\newcommand {\keV }{\kilo \electronvolt }\)
\(\newcommand {\MeV }{\mega \electronvolt }\)
\(\newcommand {\GeV }{\giga \electronvolt }\)
\(\newcommand {\TeV }{\tera \electronvolt }\)
\(\newcommand {\kWh }{\kilo \watt \hour }\)
\(\newcommand {\F }{\farad }\)
\(\newcommand {\fF }{\femto \farad }\)
\(\newcommand {\pF }{\pico \farad }\)
\(\newcommand {\K }{\mathrm {K}}\)
\(\newcommand {\dB }{\mathrm {dB}}\)
\(\newcommand {\kibi }{\mathrm {Ki}}\)
\(\newcommand {\mebi }{\mathrm {Mi}}\)
\(\newcommand {\gibi }{\mathrm {Gi}}\)
\(\newcommand {\tebi }{\mathrm {Ti}}\)
\(\newcommand {\pebi }{\mathrm {Pi}}\)
\(\newcommand {\exbi }{\mathrm {Ei}}\)
\(\newcommand {\zebi }{\mathrm {Zi}}\)
\(\newcommand {\yobi }{\mathrm {Yi}}\)
\(\require {mhchem}\)
\(\require {cancel}\)
\(\newcommand {\fint }{âĺŊ}\)
\(\newcommand {\hdots }{\cdots }\)
\(\newcommand {\mathnormal }[1]{#1}\)
\(\newcommand {\vecs }[2]{\vec {#1}_{#2}}\)
\(\newcommand {\BB }{\mathbb {B}}\)
\(\newcommand {\EE }{\mathbb {E}}\)
\(\newcommand {\FF }{\mathbb {F}}\)
\(\newcommand {\KK }{\mathbb {K}}\)
\(\newcommand {\PP }{\mathbb {P}}\)
\(\renewcommand {\O }{\mathcal {O}}\)
\(\newcommand {\weakO }{\widetilde {\mathcal {O}}}\)
\(\newcommand {\teilt }{\mid }\)
\(\newcommand {\notteilt }{\nmid }\)
\(\newcommand {\ggT }{\operatorname {ggT}}\)
\(\newcommand {\Char }{\operatorname {char}}\)
\(\newcommand {\Rang }{\operatorname {Rang}}\)
\(\newcommand {\ZkZ }{\integer /k\integer }\)
\(\newcommand {\ZmZ }{\integer /m\integer }\)
\(\newcommand {\ZnZ }{\integer /n\integer }\)
\(\newcommand {\ZpZ }{\integer /p\integer }\)
\(\newcommand {\ZqZ }{\integer /q\integer }\)
\(\newcommand {\iu }{\mathrm {i}}\)
\(\newcommand {\xor }{\oplus }\)
\(\newcommand {\bigxor }{\bigoplus }\)
\(\newcommand {\IP }{\operatorname {IP}}\)
\(\newcommand {\PC }{\operatorname {PC}}\)
\(\newcommand {\DES }{\operatorname {DES}}\)
\(\newcommand {\smallbullet }{{\scriptstyle \bullet }}\)
\(\newcommand {\ord }{\operatorname {ord}}\)
\(\newcommand {\erzeugnis }[1]{\langle #1\rangle }\)
\(\newcommand {\true }{\texttt {true}}\)
\(\newcommand {\false }{\texttt {false}}\)
\(\renewcommand {\div }{\operatorname {div}}\)
\(\newcommand {\Pic }{\operatorname {Pic}}\)
\(\newcommand {\code }[1]{\texttt {#1}}\)
\(\newcommand {\name }[1]{\textsc {#1}}\)
\(\newcommand {\smallpmatrix }[1]{\left (\begin {smallmatrix}#1\end {smallmatrix}\right )}\)
\(\newcommand {\matlab }{{\fontfamily {bch}\scshape \selectfont {}Matlab}}\)
\(\newcommand {\innerproduct }[1]{\left \langle {#1}\right \rangle }\)
\(\newcommand {\norm }[1]{\left \Vert {#1}\right \Vert }\)
\(\renewcommand {\natural }{\mathbb {N}}\)
\(\newcommand {\integer }{\mathbb {Z}}\)
\(\newcommand {\rational }{\mathbb {Q}}\)
\(\newcommand {\real }{\mathbb {R}}\)
\(\newcommand {\complex }{\mathbb {C}}\)
\(\renewcommand {\d }{\mathop {}\!\mathrm {d}}\)
\(\newcommand {\dr }{\d {}r}\)
\(\newcommand {\ds }{\d {}s}\)
\(\newcommand {\dt }{\d {}t}\)
\(\newcommand {\du }{\d {}u}\)
\(\newcommand {\dv }{\d {}v}\)
\(\newcommand {\dw }{\d {}w}\)
\(\newcommand {\dx }{\d {}x}\)
\(\newcommand {\dy }{\d {}y}\)
\(\newcommand {\dz }{\d {}z}\)
\(\newcommand {\dsigma }{\d {}\sigma }\)
\(\newcommand {\dphi }{\d {}\phi }\)
\(\newcommand {\dvarphi }{\d {}\varphi }\)
\(\newcommand {\dtau }{\d {}\tau }\)
\(\newcommand {\dxi }{\d {}\xi }\)
\(\newcommand {\dtheta }{\d {}\theta }\)
\(\newcommand {\tp }{\mathrm {T}}\)
Faktorisierungsproblem: Gegeben sei eine zusammengesetzte Zahl \(n \in \natural \).
Gesucht ist ein nicht-trivialer Teiler von \(n\).
Faktorisierung ist ein wichtiges Problem für die Kryptografie, weil z. B. das Knacken eines öffentlichen RSA-Schlüssels genauso schwierig ist wie Faktorisierung. Ist ein nicht-trivialer Teiler von
\(n\) gefunden, so kann dieser herausgeteilt werden und so die komplette Primfaktorzerlegung von \(n\) bestimmt werden.
naive Methode: Bei der Probedivision probiert man alle Teiler bis \(\sqrt {n}\) durch.
Laufzeiten: Die Laufzeiten werden in Abhängigkeit der Länge \(\log n\) der Zahl \(n\) angegeben.
Probedivison: \(\O (\sqrt {2^{\log n}}) = \O (\sqrt {n})\)
Pollards \((p-1)\)-Methode: \(\O (\sqrt [3]{2^{\log n}}) = \O (\sqrt [3]{n})\)
Pollards \(\varrho \)-Methode: \(\weakO (\sqrt [4]{2^{\log n}}) = \weakO (\sqrt [4]{n})\)
quadratisches Sieb: \(2^{\weakO (\sqrt {\log n})}\)
Zahlkörpersieb: \(2^{\weakO (\sqrt [3]{\log n})}\) (aber mit größerer Konstante als beim quadratischen Sieb)
Dabei sind die letzten beiden Methoden subexponentiell in der Länge \(\log n\).
Pollards (p-1)-Methode
Motivation: Angenommen, \(n\) besitzt einen Primteiler \(p \in \natural \), sodass \(p - 1\) nur „kleine“ Primteiler besitzt, d. h. alle Primteiler sind aus einer Basis \(B \subset \PP \). Nach dem kleinen Satz von Fermat gilt \(a^k \equiv _p 1\) für alle \(a \in (\ZpZ )^\ast \) und \(k \in \natural \) mit \((p - 1) \teilt k\). Somit teilt \(p\) nicht
nur \(n\), sondern auch \(a^k - 1\) und damit \(\ggT (a^k - 1, n)\). Ist \(\ggT (a^k - 1, n) < n\), so hat man einen nicht-trivialen Teiler von \(n\) gefunden.
Problem: \(p\) ist nicht bekannt, daher kann kein Vielfaches \(k\) von \(p - 1\) bestimmt werden.
Lösung: Wähle \(k\), sodass \((p - 1) \teilt k\) für jeden Primteiler \(p\) von \(n\), für den gilt, dass \(p - 1\) nur Primteiler aus der Basis \(B\) besitzt.
Pollards \((p-1)\)-Methode:
Pollards \((p-1)\)-Methode ist ein Faktorisierungsverfahren und verläuft wie folgt.
Wähle eine Basis \(B \subset \PP \).
Berechne \(k := \prod _{q \in B} q^{\lfloor \log _q n \rfloor }\).
Wähle \(a \in (\ZnZ )^\ast \) zufällig und berechne \(\ggT (a^k - 1, n)\).
Ist dies kein nicht-trivialer Teiler von \(n\), dann versuche es erneut mit einem anderen \(a\) oder einer größeren Basis \(B\).
Problem: Wenn kein Primteiler \(p\) von \(n\) die Eigenschaft hat, dass \(p - 1\) nur kleine Primteiler besitzt, dann funktioniert das Verfahren nicht – dafür ist das \(B\) zu klein. Wird aber \(B\) zu stark
vergrößert, dann wird \(k\) sehr groß und die Berechnung von \(\ggT (a^k - 1, n)\) dauert zu lange.
Lösung: Mit elliptischen Kurven gibt es für jedes \(n\) viele Kurven (die Struktur von \((\ZnZ )^\ast \) ist fest).
Pollards ϱ-Methode
Geburtstagsparadoxon: Sei \(M\) eine endliche Menge mit \(|M| =: n \in \natural \) und \(k \in \natural \). Wählt man nun zufällig (gleichverteilt) eine Folge aus \(M^k\), wie groß ist die
Wahrscheinlichkeit, dass zwei gleiche Einträge in der Folge vorkommen? Dazu sei \(E\) das Ereignis „in der Folge kommen nur verschiedene Elemente vor“. Dann gilt \(|E| = n \cdot (n - 1) \cdot \dotsb \cdot (n
- k + 1) = \prod _{i=0}^{k-1} (n-i) =: n^{\underline {k}}\) (fallende Faktorielle). Für \(x \in \real \) gilt \(1 + x \le e^x\). Daher erhält
man
\(\Pr (E) = \frac {n^{\underline {k}}}{n^k} = \prod _{i=1}^{k-1} (1 - \frac {i}{n}) \le \prod _{i=1}^{k-1} \exp (-\frac {i}{n}) = \exp (-\sum _{i=1}^{k-1} \frac {i}{n}) = \exp (-\frac
{k(k-1)}{2n})\). Ist \(k \ge \sqrt {2n} + 1\), so gilt \(\Pr (E) \le \exp (-\frac {(k-1)^2}{2n}) \le \frac {1}{e} < \frac {1}{2}\). Wählt man also \(k\) in der Größenordnung von \(\sqrt
{n}\), dann gilt \(\Pr (\lnot E) \ge \frac {1}{2}\) und es ist wahrscheinlicher, dass die Folge zwei gleiche Elemente enthält als dass sie nur verschiedene Elemente enthält.
Motivation: Angenommen, \(n\) besitzt einen Primteiler \(p\). Die Idee von Pollards \(\varrho \)-Methode ist, dass jede Zufallssequenz in \(\ZpZ \) im Durchschnitt nach \(\sqrt {p}\)-vielen Folgengliedern zwei gleiche
Elemente enthält (wie beim Geburtstagsparadoxon). Zur Erstellung einer solchen Folge wählt man eine Abb. \(f\colon \ZpZ \rightarrow \ZpZ \) und berechnet die Pseudozufallsfolge \(x_0, f(x_0),
f^2(x_0), \dotsc \) für einen Startwert \(x_0 \in \ZpZ \) (\(f\)-Folge). Üblicherweise verwendet man \(f\colon \ZpZ \rightarrow \ZpZ \), \(f(x) :=
(x^2 + a) \bmod p\) mit \(a \in \ZpZ \), wobei \(a \not \equiv _p 0\), \(a \not \equiv _p -1\), \(a \not \equiv _p -2\) (z. B. \(a = 1\)).
Weil man allerdings \(p\) nicht kennt, verwendet man Abbildungen \(F\colon \ZnZ \rightarrow \ZnZ \) und berechnet \(x_0, F(x_0), F^2(x_0), \dotsc \) (\(F\)-Folge),
wobei \(f(x) := F(x) \bmod p\). Üblicherweise benutzt man \(F(x) := (x^2 + a) \bmod n\) wie eben, z. B. mit \(a = 1\).
Gesucht sind zwei Indizes \(i \not = j\), sodass die Folgenglieder in der \(f\)-Folge übereinstimmen, in der \(F\)-Folge jedoch nicht, d. h. \(x_i \equiv _p x_j\) und \(x_i \not \equiv _n x_j\) mit \(x_i
:= F^i(x_0)\). In diesem Fall gilt \(p \teilt (x_i - x_j)\), aber \(n \notteilt (x_i - x_j)\), d. h. \(\ggT (x_i - x_j, n)\) ist ein nicht-trivialer Teiler von \(n\).
Das Problem dabei ist, dass alle \(x_i\) gespeichert werden müssen. Dafür nutzt man aus, dass aus \(\exists _{k \in \natural } \exists _{i \in \natural }\; x_i \equiv _p x_{i+k}\) folgt, dass
\(\exists _{j \in \natural }\; x_j \equiv _p x_{2j}\).
(Aus \(x_i \equiv _p x_{i+k}\) folgt \(x_{i’} \equiv _p x_{i’+k}\) für alle \(i’ \ge i\), da \(x_{i’+k} \equiv _p F^{i’-i}(x_{i+k}) \equiv _p F^{i’-i}(x_i) \equiv _p x_{i’}\).
Für \(j := ik\) ist damit \(x_{2j} = x_{2ik} = x_{(2i-1)k} \equiv _p \dotsb \equiv _p x_{ik} = x_j\).)
Daher berechnet man zusätzlich zu \(x_i\) die Folge \(y_i := F^{2i}(x_0) \bmod n\) und überprüft bloß Kollisionen zwischen der \(x_i\)- und der \(y_i\)-Folge, d. h. man berechnet
\(\ggT (y_i - x_i, n)\) und überprüft, ob dies ein nicht-trivialer Teiler von \(n\) ist.
Pollards \(\varrho \)-Methode:
Pollards \(\varrho \)-Methode ist ein Faktorisierungsverfahren und verläuft wie folgt.
Wähle \(x_0 \in \ZnZ \), \(F\colon \ZnZ \rightarrow \ZnZ \) und setze \(i := 1\), \(y_0 := x_0\).
Berechne \(x_i := F(x_{i-1})\) und \(y_i := F(F(y_{i-1}))\).
Berechne \(d := \ggT (y_i - x_i, n)\) und überprüfe, ob \(1 < d < n\).
Falls ja, so ist \(d\) ein nicht-trivialer Teiler von \(n\).
Falls nein, erhöhe \(i\) um \(1\) und gehe zu (2).
Laufzeit: Nach obiger Motivation ist \(d = \ggT (y_i - x_i, n)\) ein nicht-trivialer Teiler von \(n\), wenn \(x_i \equiv _p y_i = x_{2i}\), aber \(x_i \not \equiv _n y_i = x_{2i}\) mit einem Primteiler \(p\)
von \(n\). Weil ein solcher Zyklus im Mittel nach \(\sqrt {p}\) Schritten auftaucht, ist die erwartete Laufzeit \(\O (\sqrt {p})\) mit \(p\) dem größten Primteiler von \(n\). Allerdings kann \(p \in \Theta (\sqrt
{n})\) sein (z. B. \(143 = 11 \cdot 13\)), d. h. die erwartete Laufzeit ist \(\O (\sqrt [4]{n})\).
Pollards \(\varrho \)-Methode arbeitet besonders schnell, wenn \(n\) nur kleine Primteiler besitzt (diese aber durchaus in hohen Potenzen).
Quadratisches Sieb
Lemma: Sei \(n \in \natural \) und \(x, y \in \integer \) mit \(x^2 \equiv _n y^2\), aber \(x \not \equiv _n \pm y\). Dann gilt \(1 < \ggT (x \pm y, n) < n\).
Beweis: Es gilt \(x^2 - y^2 = (x + y)(x - y) \equiv _n 0\), d. h. \(n \teilt (x + y)(x - y)\).
Wäre \(\ggT (x \pm y, n) = n\), dann wäre \(x \pm y \equiv _n 0\), ein Widerspruch zu \(x \not \equiv _n \mp y\).
Wäre \(\ggT (x \pm y, n) = 1\), dann wäre \(n \teilt (x \mp y)\) (da \(n \teilt (x + y)(x - y)\)), d. h. \(x \mp y \equiv _n 0\), ein Widerspruch wie eben.
Idee: Die Idee des quadratischen Siebs ist es daher, Zahlen \(x, y \in \integer \) mit \(x \not \equiv _n \pm y\) zu finden, sodass \(x^2 \equiv _n y^2\) (d. h. \(x^2 - y^2\) ist ein Vielfaches von \(n\)).
Faktorbasis:
Eine Menge \(B \subset \natural \cup \{-1\}\) heißt Faktorbasis, falls \(\exists _{B_0 \in \natural }\; B = \{-1\} \cup \{p \in \PP \;|\; p \le B_0\}\).
\(B\)-glatt: Seien \(B\) eine Faktorbasis und \(s \in \integer \).
Dann heißt \(s\) \(B\)-glatt, falls \(\forall _{p \in B} \exists _{e_p(s) \in \natural _0}\; s = \prod _{p \in B} p^{e_p(s)}\).
Schema: Das quadratische Sieb ist ein Faktorisierungsverfahren und verläuft wie folgt.
Wähle eine Faktorbasis \(B\).
Finde genügend viele Zahlen \(z \in \integer \) mit \(g(z) := z^2 \bmod n\) \(B\)-glatt.
Wähle eine Teilmenge der \(z\), sodass das Produkt \(r\) der \(g(z)\) nur gerade Exponenten bzgl. Faktoren aus \(B\) enthält.
Definiere \(x\) als das Produkt der \(z\) und \(y\) als das Produkt der \(g(z)\), nur jeweils mit halbierten Exponenten. Dann gilt \(x^2 \equiv _n r = y^2\) und man erhält eine Faktorisierung von \(n\)
(falls \(x \not \equiv _n \pm y\)).
zu Schritt (1): „wüste“ Zahlentheorie
zu Schritt (2): Sieben
Das Verfahren des quadratischen Siebs beschleunigt die Suche nach den Zahlen \(z \in \integer \) mit \(g(z) = z^2 \bmod n\) \(B\)-glatt, indem \(z\) in der Nähe von \(\sqrt {n}\) gesucht wird. Man definiert
daher \(f(x) := (x + m)^2 - n\) mit \(m := \left \lfloor \sqrt {n}\right \rfloor \). Damit erhält man für betragsmäßig kleine \(x\) Werte von \(z\) in der Nähe von \(\sqrt
{n}\), außerdem bleibt \(f(x)\) dann betragsmäßig klein (d. h. die \(B\)-Glattheit von \(f(x)\) ist leichter zu untersuchen).
Die Ermittlung von Zahlen \(x\) mit \(f(x)\) \(B\)-glatt verläuft wie folgt:
Wähle ein Sieb \(S := \{-c, \dotsc , c\}\) mit \(c \in \natural \).
Berechne \(f(s) := (s + m)^2 - n\) mit \(m := \left \lfloor \sqrt {n}\right \rfloor \) für alle \(s \in S\).
Für jede Primzahl \(p \in B \setminus \{-1\}\) wiederhole:
Berechne die (maximal zwei) Nullstellen \(s_{1,p}, s_{2,p} \in \FF _p\) von \((X + m)^2 - n \in \FF _p[X]\).
Für \(s \in S\) gilt \(p \teilt f(s) \iff s \in \{s_{1,p}, s_{2,p}\} + p\integer \). Ermittle daher für jedes \(s \in S \cap (\{s_{1,p}, s_{2,p}\} + p\integer )\) den
maximalen Exponenten \(e_p(f(s)) \in \natural \) von \(f(s)\) bzgl. des Faktors \(p\) und teile ihn in einer anderen Variable heraus.
Die \(s \in S\) mit \(f(s)\) \(B\)-glatt sind genau die \(s \in S\), bei denen \(\pm 1\) in der anderen Variable übrig bleibt.
(Es gilt \(p \teilt f(s) \iff f(s) \equiv _p 0 \iff (s \equiv _p s_{1,p}) \lor (s \equiv _p s_{2,p}) \iff s \in \{s_{1,p}, s_{2,p}\} + p\integer \).)
zu Schritt (3): Lösung eines LGS
Sei \(S = \{-c, \dotsc , c\}\) das eben benutzte Sieb und \(S’ := \{s \in S \;|\; f(s) \text { $B$-glatt}\}\). Um eine nicht-leere Teilmenge \(I \subset S’\) mit \(\forall _{p \in B}\; [\sum _{s \in I}
e_p(f(s)) \text { gerade}]\) zu erhalten, betrachtet man ein LGS über \(\FF _2\). Für jedes \(p \in B\) erhält man eine Gleichung \(\sum _{s \in S’} e_p(f(s)) \cdot \lambda _s \equiv
_2 0\) des LGS mit \(\lambda _s \in \FF _2 = \{0, 1\}\). Hat man eine nicht-triviale Lösung \((\lambda _s)_{s \in S’}\) berechnet, so erfüllt \(I := \{s \in S’ \;|\; \lambda _s \equiv _2
1\}\) die gewünschte Eigenschaft.
Das LGS hat \(|B|\) Gleichungen und \(|S’|\) Unbekannte. Es muss also \(|B| < |S’|\) gelten, damit eine nicht-triviale Lösung auf jeden Fall existiert, d. h. man benötigt auf jeden Fall mehr als
\(|B|\)-viele \(B\)-glatte Zahlen. (Normalerweise ist \(|B| \ll |S|\).)
Ist \(|B|\) klein, so benötigt man also nur wenige \(B\)-glatte Zahlen. Dann braucht man allerdings ein großes Sieb, da sich nur wenige Zahlen mit kleinen Primfaktoren faktorisieren lassen. Wenn \(|B|\) dagegen groß ist,
findet man zwar leichte \(B\)-glatte Zahlen (d. h. mit kleineren Sieben), aber wegen der unteren Schranke im LGS braucht man viele davon.
zu Schritt (4): Wahl von \(x\) und \(y\)
Wähle nun \(x := (\prod _{s \in I} (s + m)) \bmod n\), \(y := \prod _{p \in B} p^{(\sum _{s \in I} e_p(f(s)))/2}\) und \(r := \prod _{s \in I} f(s)\).
Dann gilt \(x^2 \equiv _n r = y^2\) und im Fall \(x \not \equiv _n \pm y\) sind nicht-triviale Teiler von \(n\) gefunden.
Beispiel: \(n = 7429\), \(m = 86\), \(c = 3\), \(B = \{-1, 2, 3, 5, 7\}\)
\(s\)
|
\(-3\)
|
\(-2\)
|
\(-1\)
|
\(0\)
|
\(1\)
|
\(2\)
|
\(3\)
|
\(f(s)\)
|
\(-540\)
|
\(-373\)
|
\(-204\)
|
\(-33\)
|
\(140\)
|
\(315\)
|
\(492\)
|
\(2\) sieben
|
\(-135\)
|
|
\(-51\)
|
|
\(35\)
|
|
\(123\)
|
\(3\) sieben
|
\(-5\)
|
|
\(-17\)
|
\(-11\)
|
|
\(35\)
|
\(41\)
|
\(5\) sieben
|
\(-1\)
|
|
|
|
\(7\)
|
\(7\)
|
|
\(7\) sieben
|
|
|
|
|
\(1\)
|
\(1\)
|
|
Ergebnis
|
\(-1\)
|
\(-373\)
|
\(-17\)
|
\(-11\)
|
\(1\)
|
\(1\)
|
\(41\)
|
|
|
|
|
|
|
|
|
Es gilt daher \(S’ = \{-3, 1, 2\}\). Wählt man \(I = \{1, 2\}\), dann gilt wegen \(f(1) = 140 = 2^2 \cdot 5 \cdot 7\) und \(f(2) = 315 = 3^2 \cdot 5 \cdot 7\), dass \(x := (1 + 86)(2 + 86) \equiv
227 \pmod {7429}\) und \(y := 2 \cdot 3 \cdot 5 \cdot 7 = 210\), d. h. \(x^2 \equiv 2^2 \cdot 3^2 \cdot 5^2 \cdot 7^2 = y^2 \pmod {7429}\) und \(\ggT (227 - 210, 7429) = 17\).