Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto Kolik je prvočísel?
Eulerova funkce Eulerova funkce φ(n), počet přirozených čísel menších než n a nesoudělných s n. Dodefinujeme φ(1) = 1 První hodnoty funkce φ: 1,1,2,2,4,2,6,3,6,4 Pro a, b nesoudělná φ(ab)= φ(a). φ(b) Snadno spočítáme třeba φ(91)=φ(7.13)=72 p prvočíslo: φ(p)=p-1 a je součin dvou prvočísel a=p.q, pak φ(a)=φ(p).φ(q)=(p-1).(q-1)
Vlastnosti prvočísel Binomický koeficient (p nad i) mod p = 0, pro i=1..p-1 (a+b)p mod p=ap+bp Pro c menší než p je cpmod p = c,
Malá Fermatova věta Pro c menší než p platí cp-1mod p = 1 Pierre de Fermat (1601-1665)
Velká Fermatova věta Neexistuje čtveřice přirozených a,b,c,n, n>2, pro která platí an+bn=cn Údajně dokázal P.Fermat v 17. století V roce 1900 formulováno jako 7. Hilbertův problém Hilbertovy problémy (23), dnes vyřešeny všechny až na 2. Velká Fermatova věta dokázána v roce 1994 (sir Andrew John Wiles), důkaz má 109 (velmi hutných) stran
Čínská věta o zbytcích Sun Tse (snad 3.-5. století) N je součin dvou prvočísel p,q. φ(N)=(p-1)(q-1), c φ(N) mod N = 1
Základní pojmy teorie složitosti algoritmů Časová složitost algoritmů Vyjadřujeme v počtu operací Složitost algoritmu je funkcí velikosti vstupních dat Zajímá nás složitost Minimální Průměrná Maximální Složitost limitní
Příklady výpočtů složitosti Vyhledání minimální hodnoty O(n) Součet matic O(n2) Součin matic O(n3) Seřazení souboru čísel O(n.log n) Úloha obchodního cestujícího n! Úloha o batohu 2n
Porovnání složitosti algoritmů 1 2 5 25 400000 32 120 10 100 108 1024 106 15 225 109 32000 1012 20 400 1010 1018 30 900 1011 1032 50 2500 1013 1015 1064 10000 1016 1030 10157 Podstatný rozdíl je mezi složitostí vyjadřitelnou polynomem a složitostí jinou
Při 1 000 000 000 operací za s. N N2 N8 2N N! 1 <1s 5 10 15 1 s 15 min 20 10 s 31 let 30 2 min 100 * Věk vesmíru 50 3 h 11 dní 100 3 měs Věk vesmíru
Třídění úloh podle složitosti P-úlohy Je znám algoritmus, který je řeší a má maximální složitost odhadnutelnou polynomickou funkcí NP-úlohy (nedeterministicky polynomiální) Není znám algoritmus, který je řeší a má maximální složitost odhadnutelnou polynomickou funkcí Je znám algortimus s minimální složitostí danou polynomickou funkcí (ověření výsledku)
NP – úplné problémy Patří do třídy NP Lze na sebe navzájem převádět. Pokud bude nalezet p-algoritmus pro jeden z nich, bude fungovat i pro všechny ostatní. Otevřená otázka P=NP? Vypsáno nadací Calyjako jeden ze 7 „problémů tisíciletí“ v roce 2000, odměna 1000000 $ Často řešeny přibližnými a heuristickými metodami
Příklady np-úplných problémů Travel Salesman Problem Knapsack problem Problém splnitelnosti formule Problém parketovatelnosti A dalších minimálně 100 problémů
Diagram složitosti úloh
Další NP problémy Problém faktorizace součinu dvou prvočísel A=p.q, známe A, třeba určit p a q Pro přesnou formulaci je třeba si uvědomit, co je zde velikost vstupních dat. Problém modulárních rovnic f(t) = pt mod q = α Známe-li p,q a t, snadno určíme α Známe-li p, q a α, nelze jednoduše určit t