diff --git a/luku16.tex b/luku16.tex index c6f8056..5a5bb36 100644 --- a/luku16.tex +++ b/luku16.tex @@ -703,56 +703,4 @@ while (a != b) { b = f(b); c++; } -\end{lstlisting} -% -% \subsubsection{Algoritmi 2 (Brent)} -% -% \index{Brentin algoritmi@Brentin algoritmi} -% -% Brentin algoritmi -% muodostuu peräkkäisistä vaiheista, joissa osoitin $a$ pysyy -% paikallaan ja osoitin $b$ liikkuu $k$ askelta -% Alussa $k=1$ ja $k$:n arvo kaksinkertaistuu -% joka vaiheen alussa. -% Lisäksi $a$ siirretään $b$:n kohdalle vaiheen alussa. -% Näin jatketaan, kunnes osoittimet kohtaavat. -% -% \begin{lstlisting} -% a = x; -% b = f(x); -% c = k = 1; -% while (a != b) { -% if (c == k) { -% a = b; -% c = 0; -% k *= 2; -% } -% b = f(b); -% c++; -% } -% \end{lstlisting} -% -% Nyt tiedossa on, että syklin pituus on $c$. -% Tämän jälkeen ensimmäinen sykliin kuuluva solmu löytyy -% palauttamalla ensin osoittimet alkuun, -% siirtämällä sitten osoitinta $b$ eteenpäin $c$ askelta -% ja liikuttamalla lopuksi osoittimia rinnakkain, -% kunnes ne osoittavat samaan solmuun. -% -% \begin{lstlisting} -% a = b = x; -% for (int i = 0; i < c; i++) b = f(b); -% while (a != b) { -% a = f(a); -% b = f(b); -% } -% \end{lstlisting} -% -% Nyt $a$ ja $b$ osoittavat ensimmäiseen sykliin kuuluvaan solmuun. -% -% Brentin algoritmin etuna Floydin algoritmiin verrattuna on, -% että se kutsuu funktiota $f$ harvemmin. -% Floydin algoritmi kutsuu funktiota $f$ ensimmäisessä silmukassa -% kolmesti joka kierroksella, kun taas Brentin algoritmi -% kutsuu funktiota $f$ vain kerran kierrosta kohden. - +\end{lstlisting} \ No newline at end of file