Počítačová algebra ZS 2026/2027
Kontakt
Pro případné dotazy a konzultace použijte můj mail: patak AT kam.mff DOT cuni.cz.
Domácí úkoly
Řešení domácích úkolů zasílejte na shora uvedený mail.
- 1.10.2026
- Napište program pro výpočet největšího společného dělitele v oboru Gaussovských celých čísel, a jeho běh ilustrujte na výpočtu největšího společného dělitele čísel 4 a 9+5i.
- 8.10.2026
- Napište vlastní programy na násobení (dlouhých) celých čísel: porovnejte metody školského násobení pod sebou, Karatsuby a Toom-3. Na základě experimentu určete, které metody jsou nejvhodnější pro dané délky čísel. To jest, určete, od jaké délky se vyplatí používat (vaší implementaci) Karatsuby, od jaké Toom-3.
- 15.10.2026
- Napište funkci, která znásobí číslo a délky 2n s číslem b délky 3n s využitím metody rozděl a panuj a rozdělením na úseky délky n (Toom-2.5); (na násobení čísel délky n pak použijte násobicí algoritmus dle svého uvážení)
- 22.10.2026
- Je možné dělat rychlou Fourierovu transformaci pomocí dělení na "třetiny"? Jakou by to mělo asymptotickou složitost?
- 29.10.2026
- Napište vlastní implementaci rychlého násobení polynomů
- 5.11.2026
- Implementujte subrezultantovou PRS pro výpočet NSD(f,g), kde f,g jsou celočíselné polynomy jedné proměnné. (Můžete využít knihoven, které umí dělit polynomy se zbytkem.)
Seznam probraných témat
- 1.10.2026
- Reprezentace čísel v počítači
- Délka čísla v soustavě o základu B
- Sčítání, odčítání, násobení a dělení pod sebou s časy O(n+m), O(n+m), O(mn), O(n(m-n+1)); převod do jiné báze
- Rozšířený Euklidův algoritmus a jeho použití pro řešení soustavy kongruencí (Čínská zbytková věta); Garnerův a Lagrangeův algoritmus - zatím bez odhadu časové a paměťové složitosti
- Reprezentace polynomu jedné proměnné (husté vs řídké reprezentace)
- 8.10.2026
- Složitost rozšířeného Euklidova algoritmu
- Složitost algoritmů pro Čínskou zbytkovou větu
- Interpolace polynomů jako speciální případ ČVZ
- Metoda rozděl a panuj:
- Mistrovská metoda pro odhad časové složitosti
- Karatsubův algoritmus pro násobení čísel
- Algoritmy Toom-k pro násobení čísel
- 15.10.2026
- Opakování: Zobecněná verze mistrovské metody i s důkazem
- Násobení čísel pomocí metod Toom-k, odhad časové složitosti pomocí zobecněné mistrovské metody
- Rychlé násobení matic: Strassenův a Winogradův algoritmus s odhadem časové složitosti, zavedení exponentu maticového násobení ω: nejmenšího čísla takového, že každé dvě matice n×n lze znásobit v čase O(nω+o(1))
- 22.10.2026
- Rozdělení do bloků a využití blokových úprav pro výpočet inverzní matice a determinantu v čase O(nω+o(1)), kde ω označuje exponent maticového násobení.
- Vandermondův determinant
- n-té odmocniny z jednotky
- Diskrétní Fourierova transformace (reprezentace polynomu stupně < n pomocí jeho hodnot v n bodech) a rychlá Fourierova transformace (algoritmus jak rychlou Fourierovu transformaci provést v čase O(nlog n), pokud ony body jsou právě všechny 2^k-té odmocniny z jednotky )
- 29.10.2026
- Opakování rychlé Fourierovy transformace
- Rychlé násobení a rychlé dělení polynomů
- 5.11.2026
- Opakování mocninných řad a rychlého výpočtu prvních n členů inverzní mocninné řady
- Rychlé dělení polynomů
- Posloupnost polynomiálních zbytků PRS (aneb jak se zbavit zlomků, které vycházejí při počítání největšího společného dělitele dvou polynomů nad podílovým tělesem)
- Ukázky kódu jednotlivých PRS v Sagemath
- Společné nastavení:

- Největší společný dělitel v podílovém tělese:

- Eukleidovská PRS:
- Redukovaná PRS:

- Sylvestrova matice, rezultant a Sylvestrovo kritérium: dva polynomy jsou soudělné v podílovém tělese, právě tehdy když mají nulový rezultant.
Seznam doplňkových příkladů probíraných na cvičení
- 22.10.2026
- Dokažte, že má-li těleso T primitivní n-tou odmocninu z jedné, tak součet n jedniček je v T invertibilní.
- Víme, že výsledkem diskrétní Fourierovy transformace polynomu f nad ℤ17 při využití primitivní čtvrté odmocniny 4 je vektor (2,0,2,0). Určete původní polynom.
- Kolik primitivních n-tých odmocnin z jedné existuje v q-prvkovém tělese?
- Kolik primitivních n-tých odmocnin z jedné existuje v ℤm?
- Dokažte následující vlastnosti Eulerovy funkce φ(n):
- Je-li n sudé, tak φ(n)/n ≤ 1/2
- Pokud má n méně než 8 prvočíselných dělitelů, tak φ(n)/n > 1/6
- limsup φ(n)/n = 1
- liminf φ(n)/n = 0
- 5.11.2026
- V oboru formálních mocninných řad R[[x]] spočtěte 1/f, pro mocninnou řadu f=e^x a f=sin x. (Existují vůbec?)
- Označme t_i počet binárních stromů s n vrcholy, kde binární strom je definován rekurzivně: strom s nula vrcholy je prázdná množina,
a strom s n+1 vrcholy se sestáva z kořene a levého stromu s k vrcholy, a pravého stromu s l vrcholy, kde n=k+l+1.
Buď T formální mocninná řada ∑tixi. Dokažte, že tato řada splňuje T = 1 + xT^2.
- Vydělte se zbytkem (x8 - x6+x) a (2x5+x4 + x3 + x).
- Dokažte, že pro těleso T je T[[x]] Gaussovský obor. (Nápověda: Pokud je konstantní člen nenulový, řada lze invertovat; takže existuje jediný maximální ideál.)
- (Těžší příklad) Dokažte, že redukovaná posloupnost polynomiálních zbytků funguje, tj. že při jejím průběhu nevznikají žádné zlomky.
- Je nějaký způsob jak rozumně definovat skládání formálních mocniných řad? Za jakých podmínek je složení dvou takových řad dobře definováno? Pro které f je dobře definována inverzní mocninná řada vůči skládání?,
tj. pro která f existuje g taková, že f(g(x))=x = g(f(x))?
Literatura
Kurz následuje skripta Počítačová algebra od Davida Stanovského a Libora Barta; i když v poněkud volném pořadí témat. Scripta lze rovněž konzultovat pro rigorózní formulace všech důkazů.
Buďte však obezřetní, skripta na mnoha místech obsahují drobné nepřesnosti.