Složitost algoritmu Vybrané problémy: Při analýze složitosti jednotlivých algoritmů často narazíme na problém, jakým způsobem vzít v úvahu velikost vstupu.

Slides:



Advertisements
Podobné prezentace
Dělitelnost přirozených čísel
Advertisements

Rovnice a nerovnice s neznámou pod odmocninou
Kryptografie Šifrování
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Asymetrická kryptografie
Algebra.
Algoritmy I Cvičení č. 4.
Lineární algebra.
Základní číselné množiny
Matice D.: Matice je systém m .n čísel, uspořádaný do m řádků a n sloupců. Je to jenom symbol, nemá to žádnou číselnou hodnotu! Označení: řádek, řádkový.
Radek Horáček IZI425 – Teorie kódování a šifrování
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Počítáme s celými čísly
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Číselné soustavy david rozlílek ME4B
Radim Farana Podklady pro výuku
Matice.
Třída P (PTIME) DEF: P je třída všech jazyků, které jsou rozhodnutelné deterministickým Turingovým strojem v polynomiálním čase. Neboli: Třída P je.
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Výpočet neznámé veličiny z vybraných fyzikálních vzorců
Pre-algebra Antonín Jančařík.
P-těžké, np-těžké a np-úplné problémy
Vedení tepla Viktor Sláma SI – I 23. Zadání Vhodné uložení vyhořelého jaderného paliva je úkol pro současnou generaci. Zaměřme se na jednu nepatrnou část.
Obecná kvantifikace v relačních databázích Přehled typů dat a algoritmů Alan Eckhardt.
polynom proměnné x f = anxn + an-1xn-1 + ……. + a0
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Teorie čísel a šifrování Jan Hlava, Gymnázium Jiřího Ortena Kutná Hora Petr Šebek, Gymnázium Uherské Hradiště.
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Úvod do klasických a moderních metod šifrování
RSA šifra Ronald Rivest, Adi Shamir a Leonard Adlemann.
Teorie čísel Prvočíslo Eulerova funkce φ(n)
Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární.
Vyhledávání vzorů (template matching)
Teorie čísel Prvočíslo Generování prvočísel: Erathosenovo síto
Radim Farana Podklady pro výuku
Doc. Josef Kolář (ČVUT)Prohledávání grafůGRA, LS 2010/11, Lekce 4 1 / 15Doc. Josef Kolář (ČVUT)NP-úplné problémyGRA, LS 2012/13, Lekce 13 1 / 14 NP-ÚPLNÉ.
RSA – poznámky k algoritmu
Diference a diferenciál Způsoby vyčíslování termodynamických dat.
Teorie čísel Prvočíslo Eulerova funkce φ(n)
Feistlovy kryptosystémy Posuvné registry Lucifer DES, AES Horst Feistel Německo, USA IBM.
Kvadratické nerovnice
McEllisova šifra.
McEllisova šifra. James Ellis( ) Clifford Cocks, Malcolm Williamson Alice Bob zpráva šum Odstranění šumu.
Bezpečnost systémů 2. RSA šifra *1977 Ronald Rivest *1947 Adi Shamir *1952 Leonard Adelman *1945 University of Southern California, Los Angeles Protokol.
Symetrická šifra Šifrovací zobrazení y = φ(x,k) Dešifrovací zobrazení x = ψ(y,k)
Kódování a šifrování Monoalfabetické šifry Polyalfabetické šifry
Informační bezpečnost VY_32_INOVACE _BEZP_16. SYMETRICKÉ ŠIFRY  Používající stejný šifrovací klíč jak pro zašifrování, tak pro dešifrování.  Výhoda.
Celá čísla.
Mocniny Druhá mocnina.
Mocniny Druhá mocnina.
Logické principy QCA Karel Kouba.
L i n e á r n í r o v n i c e II. Matematika 8.ročník ZŠ
Dělitelnost přirozených čísel
Definiční obor a obor hodnot
KIV/ZD cvičení 7 Tomáš Potužák.
Název projektu: Moderní výuka s využitím ICT
Popisná statistika: přehled
Dělitelnost přirozených čísel
Klasické šifry – princip substituce, transpozice
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Feistlovy kryptosystémy
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Aritmetické operace s binárními čísly
1 Lineární (vektorová) algebra
Výpočetní složitost algoritmů
Název projektu: Moderní výuka s využitím ICT
VZTAHY MEZI KOŘENY A KOEFICIENTY KVADRATICKÉ ROVNICE
Definiční obory. Množiny řešení. Intervaly.
Algoritmizace a datové struktury (14ASD)
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

Složitost algoritmu Vybrané problémy: Při analýze složitosti jednotlivých algoritmů často narazíme na problém, jakým způsobem vzít v úvahu velikost vstupu. Co když počítáme s maticí – je velikost vstupu n nebo n*n? Co když počítáme s velkými čísly? Jelikož máme brát v úvahu délku vstupu, pro běžný integer budeme uvažovat délku vstupu 1, ale co když jde o mnohem větší čísla? Pozor na problémy s pseudopolynomickou složitostí!

Složitost algoritmu

Jakou velikost vstupu máme uvažovat? Je obvyklé pracovat s parametrem n, i když je zřejmé, že na vstupu bude n*n čísel. Složitost: Každý z n*n prvků nové matice vznikne jako skalární součin dvou vektorů o velikosti n, k čemuž je třeba provést n násobení a n-1 sčítání. Tedy n+n-1=2n-1 pro každý prvek nové matice Celkem tedy n*n*(2n-1)=2n 3 -n 2 Složitost algoritmu: f  O(n 3 )

Složitost algoritmu

Příklad: Jakou složitost má algoritmus pro součet dvou čísel? Algoritmus: Součet se provede jedinou instrukcí. Složitost: Není zde žádný cyklus, takže pokud jde o „standardní“ čísla, jediná instrukce mi vrátí součet. Složitost algoritmu: f  O(1) Co když ale půjde o hodně velká čísla?

Složitost algoritmu Příklad: Jakou složitost má algoritmus pro součet dvou „hodně dlouhých“ čísel? Algoritmus: Součet se provede v cyklu tak, že postupujeme zprava číslici po číslici (a pracujeme s eventuálním přenosem). Složitost: Délka cyklu, ve kterém se provádí sčítání, je úměrná počtu číslic (délce vstupu) a vstup nemůžeme považovat za jedno číslo C. Složitost algoritmu: f  O(N), kde N je délka vstupu (N =  logC  +1).

Složitost algoritmu

Právě uvedený příklad algoritmu patří mezi takzvané problémy s pseudopolynomickou složitostí. Pseudopolynomická složitost se nazývá složitost, která se vzhledem k číselné hodnotě vstupu jeví jako polynomická, ale fakticky se vzhledem k délce vstupu jedná o složitost exponenciální. Pro problém faktorizace není znám algoritmus pracující v polynomiálně omezeném čase, a právě na tohoto faktu využívají moderní šifrovací algoritmy.

Šifrovací algoritmy Při utajené výměně informací je možné postupovat takto:  Pokud chce Karel poslat Evě utajený balík, zamkne ho svým zámkem.  Eva balík dostane, přidá na něj svůj zámek a pošle zpět.  Karel odstraní svůj zámek a pošle Evě už jen se zámkem Evy.  Eva odemkne svým klíčem a konečně ví, co je v balíku. To znamená opakované posílání, je to zdlouhavé, a proto potřebujeme lepší systém distribuce/výměny klíčů.

Šifrovací algoritmy Řešením může být asymetrické šifrování, kdy každá osoba má dva klíče (jeden šifrovací, druhý dešifrovací). Šifrovací klíč je „veřejný“, dešifrovací je „soukromý“. Zpráva je zašifrována „veřejným“ klíčem. Přečíst ji potom lze s použitím „soukromého“ klíče. Je třeba mít vhodnou matematickou funkci, kterou lze (při znalosti určitých faktů) snadno invertovat.

Šifrovací algoritmus RSA RSA (R. Rivest, A. Shamir, L. Adlemann) Vygenerujeme dvě dostatečně velká prvočísla p a q (každé má délku 1024 bitů) a spočteme n=pq. Číslo n je parametrem šifrovacího systému (šifrovací modul) a zveřejňuje se spolu s veřejným klíčem. Spočítá se Eulerova funkce  (n)= (p-1)(q-1) udává počet přirozených čísel menších než n, která jsou nesoudělná s číslem n (protože n je součinem dvou prvočísel, je takových čísel právě (p-1)(q-1))

Šifrovací algoritmus RSA Zvolíme privátní klíč e z množiny {1,..,n} nesoudělný s číslem (p-1)(q-1) K privátnímu klíči e vypočteme Eulerovým algoritmem veřejný klíč d podle vztahu d  e mod (p-1)(q-1)= d  e mod  (n)= 1 Tato rovnice má jediné řešení d (1<d<  (n)) Zakódování zprávy z se provede dle vztahu z e mod n =s Dekódování zprávy se provede dle vztahu s d mod n =z Korektnost šifry je dána vztahem: z=s d mod n = z de mod n = z k  (n)+1 mod n =1  z mod n=z

Šifrovací algoritmus RSA Jednoduchý příklad: Zvolíme číslem prvočísla p=11 a q=19 Spočteme šifrovací modul n=p*q=11*19= 209 Spočítáme Eulerovu funkci  (n)= (p-1)(q-1) =10*18 = 180 Zvolíme privátní klíč e z množiny {1,..,n} nesoudělný s číslem (p-1)(q-1); nechť je to e=7 Veřejný klíč d vypočteme (rozšířeným Euklidovým algoritmem) ze vztahu d  e mod (p-1)(q-1)= d  e mod  (n)= 1 d  7 mod 180 = 1 z čehož dostaneme d=103

Šifrovací algoritmus RSA Rozšířený Euklidův algoritmus: Snadný výpočet pomocí tabulky div 7 = mod 7 = 5 1-0*25 = 10-1*25 = -25

Šifrovací algoritmus RSA Rozšířený Euklidův algoritmus: Snadný výpočet pomocí tabulky div 5 = 1 7 mod 5 = 2 0-1*1 = -11-(-25)*1 =26

Šifrovací algoritmus RSA Rozšířený Euklidův algoritmus: Výpočet končí ve chvíli, kdy je zbytek po dělení 1 Pokud vyjde kladné číslo, máme d, když číslo záporné (-77), musíme přičíst  (n) a potom tedy d=180-77=103 Vidíme, že 103*7 mod 180 = 721 mod 180= div 2 = 2 5 mod 2 = 1 1-(-1)*2 = 3-25-(26)*2 =-77

Šifrovací algoritmus RSA Máme tedy veřejný klíč: n=209, e=7 a soukromý klíč n=209, d=103 Pošleme zprávu z=a, v ASCII je to 97 Zakódujeme použitím veřejného klíče e: 97 7 mod 209 =147 Dekódování zprávy se provede pomocí privátního klíče d: mod 209 = 97

Šifrovací algoritmus RSA