Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element

Ähnliche Dokumente
Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt

Algebraische und arithmetische Algorithmen

Schleifeninvarianten. Dezimal zu Binär

3.3 Laufzeit von Programmen

Der euklidische Algorithmus für ganze Zahlen

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Übung Algorithmen und Datenstrukturen

Formale Grundlagen 2008W. Vorlesung im 2008S Institut für Algebra Johannes Kepler Universität Linz

Übung zur Vorlesung Berechenbarkeit und Komplexität

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Komplexität von Algorithmen:

Numerische Verfahren und Grundlagen der Analysis

ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Kapitel 3 Elementare Zahletheorie

Komplexität von Algorithmen

Abschnitt: Algorithmendesign und Laufzeitanalyse

IT-Security. Teil 8b: Rechnen mit beliebiger Genauigkeit Algorithmen

2. Entsprechende Listen P i von Vorgängern von i 3. for i := 1 to n do. (ii) S i = Knoten 2 + 1}

Interim. Kapitel Einige formale Definitionen

Der Primzahltest von Agrawal, Kayal und Saxena. Dr. Gerold Jäger

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Vorlesung Diskrete Strukturen Rechnen modulo n

4 Kryptologie. Übersicht

Vorlesung Diskrete Strukturen Rechnen modulo n

Komplexität von Algorithmen

Diskrete Mathematik 1

... direkte Umsetzung in Scheme. Prozeduren und von ihnen erzeugte Prozesse Gültigkeitsbereiche und Rekursion

Oft kommt es darauf an, Potenzen a n mod m zu berechnen. Dabei kann n eine sehr groÿe Zahl sein.

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Euklidische Algorithmus, Restklassenringe (Z m,, )

SAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen. Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014

Kapitel III Ringe und Körper

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Informatik I Komplexität von Algorithmen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

Kapitel 6: Das quadratische Reziprozitätsgesetz

16. All Pairs Shortest Path (ASPS)

13. Der diskrete Logarithmus

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

5 Harte zahlentheoretische Probleme

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

Einführung in die Informatik I

Algorithmen und Datenstrukturen

Primzahltest in Polynomialzeit Der Algorithmus von Agrawal, Kayal und Saxena

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva,

Informatik I Komplexität von Algorithmen

Kryptographie und Komplexität

Teilbarkeitslehre und Restklassenarithmetik

WS 2009/10. Diskrete Strukturen

LR Zerlegung. Michael Sagraloff

WS 2009/10. Diskrete Strukturen

Public-Key-Algorithmen WS2015/2016

Lösungsvorschlag Serie 2 Rekursion

10. Woche: Elliptische Kurven Skalarmultiplikation und Anwendungen. 10. Woche: Elliptische Kurven - Skalarmultiplikation und Anwendungen 212/ 238

Algorithmen & Komplexität

Ansätze zur Erfassung von Faktoren durch Prüfungsaufgaben. (Diskussionen in Dagstuhl sowie mit Prof. Nickolaus, Technikpädagogik, U Stuttgart)

Grundlegende Tatsachen über den Ring Z

Algorithm Theory 3 Fast Fourier Transformation Christian Schindelhauer

V. Claus, Juli 2005 Einführung in die Informatik II 45

11. Rekursion, Komplexität von Algorithmen

Pseudo-Zufallsgeneratoren basierend auf dem DLP

Effiziente Algorithmen mit Python. D. Komm, T. Kohn

Programmiertechnik II

= 1. Falls ( a n. ) r i. i=1 ( b p i

Das RSA Verfahren. Die Mathematik von RSA. Ganzzahl Arithmetik. Die Mathematik des RSA-Verfahrens

Übungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***

Probabilistische Primzahltests

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005

Komplexität von Algorithmen SS 2011

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Form der Äquivalenzklassen

mittlerer Characteristik

C++ - Kontrollstrukturen Teil 2

1 Das RSA-Verfahren und seine algorithmischen Grundlagen

6. Transitive Hülle. 6.1 Min-Plus-Matrix-Produkt und Min-Plus-Transitive Hülle Ring Z(+, ) Semiring N(+, )

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

Großer Beleg. Arithmetische Optimierung eines kryptographischen Algorithmus für moderne FPGA-Architekturen. Peter Heinzig. 17.

Praktikum Diskrete Optimierung (Teil 11)

2. Effizienz von Algorithmen

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

11.1 Grundlagen - Denitionen

Die Größe A(n, d) und optimale Codes

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

31 Polynomringe Motivation Definition: Polynomringe

Aufgabe der Kryptografie

Ganzzahlige Division mit Rest

Algorithmen und Datenstrukturen I Grundlagen

Algebraische Strukturen. Idee. Gruppen, Ringe, Körper... (Teschl/Teschl Abschnitt 3.2, siehe auch Kap. 4)

Einführung in die Informatik I

Matrizen. Stefan Keppeler. 28. November Mathematik I für Biologen, Geowissenschaftler und Geoökologen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Algorithmen und Datenstrukturen

Kanonische Primfaktorzerlegung

Transkript:

Problemstellung Banale smethode : das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element a n = } a a a {{ a } H n (schreiben ab jetzt a n statt a n ) Hinweis: der wesentliche Trick funktioniert immer, wenn eine assoziative (aber nicht notwendig kommutative) Operation ist also nicht nur für Zahlen, sondern z.b. auch für Polynome, Matrizen, Funktionen,... Banale Idee: iterierte Multiplikation Algorithmus: Require: a H, n N Ensure: x = a n if n = 0 then Return(e) end if x a for i = 1 to n 1 do x x a end for Return(x) Dies erfordert n 1 Multiplikationen in H. Schnelle : die Idee Bessere Idee: In jeder Halbgruppe (H, ) kann man zur Berechnung der H N H : (a, n) a n die Binärdarstellung des Exponenten n verwenden Rekursive Struktur: ( ) a n 2 a n 2 falls n gerade = ( ) a a n 1 2 2 falls n ungerade = an mod 2 (a n 2) 2 schnelle oder binäre, mittels square-and-multiply Man kann die Binärdarstellung von n von links nach rechts (LR) oder von rechts nach links (RL) abarbeiten Notation Notation: (n) 2 : Binärdarstellung von n (ohne führende Nullen) l(n) : Länge der Binärdarstellung von n = log(n) + 1 ν(n) = 1 (n) 2 : Anzahl der Einsen in (n) 2 Rekursionen: l(2n) = l(n) + 1 l(2n + 1) = l(n) + 1 l(1) = 1 ν(2n) = ν(n) ν(2n + 1) = ν(n) + 1 ν(1) = 1

Schnelle : LR-Beispiel Beispiel n = 155 mit (155) 2 = 10011011, l(155) = 8, ν(155) = 5 LR-Methode (1) 2 = 1 a 1 = a (2) 2 = 10 a 2 = (a 1 ) 2 (4) 2 = 100 a 4 = (a 2 ) 2 (9) 2 = 1001 a 9 = (a 4 ) 2 a (19) 2 = 10011 a 19 = (a 9 ) 2 a (38) 2 = 100110 a 38 = (a 19 ) 2 (77) 2 = 1001101 a 77 = (a 38 ) 2 a (155) 2 = 10011011 a 155 = (a 77 ) 2 a erfordert 7 = l(155) 1 Quadrierungen und 4 = ν(155) 1 zusätzliche Multiplikationen, also insgesamt l(155) + ν(n) 2 Multiplikationen Schnelle : RL-Beispiel RL-Methode (1) 2 = 1 a 1 = a a 2 = (a 1 ) 2 (3) 2 = 11 a 3 = a 2 a a 4 = (a 2 ) 2 a 8 = (a 4 ) 2 (11) 2 = 1011 a 11 = a 8 a 3 a 16 = (a 8 ) 2 (27) 2 = 11011 a 27 = a 16 a 11 a 32 = (a 16 ) 2 a 64 = (a 32 ) 2 a 128 = (a 64 ) 2 (155) 2 = 10011011 a 155 = a 128 a 27 erfordert 7 = l(155) 1 Quadrierungen und 4 = ν(155) 1 zusätzliche Multiplikationen, also insgesamt l(155) + ν(n) 2 Multiplikationen Schnelle : Aufwand Schnelle : Zitate aus TAOCP Aufwand: M(n) : Anzahl der Multiplikationen (incl. Quadrierungen) in H zur Berechung von a n mittels LR- bzw. RL-Methode Rekursion: M(2n) = M(n) + 1 M(2n + 1) = M(n) + 2 Folgerung: M(n) = l(n) + ν(n) 2 Beweis (Induktion) M(1) = 0 M(1) =0 = 1 + 1 2 = l(1) + ν(1) 2 M(2n) =M(n)+1 = l(n)+ν(n) 1 = l(2n)+ν(2n) 2 M(2n+1) =M(n)+2 = l(n)+ν(n) = l(2n+1)+ν(2n+1) 2 Also gilt insbesondere: log n M(n) 2 log n d.h. M(n) Θ(log n) Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (LR-Methode)

Schnelle : Zitate aus TAOCP Schnelle : Zitate aus TAOCP Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (LR vs. RL) Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (RL) Schnelle : Zitate aus TAOCP Schnelle : Zitate aus TAOCP Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (RL) Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (RL)

Schnelle : iteratives Programm Schnelle : rekursives Programm Require: a H, n N Ensure: x = a n x e A a N n while N 0 do if N is even then A A A N N/2 else {N is odd} x x A N N 1 end if end while Return(x) Maple-Programm (rekursiv) power := proc (a,n::nonnegint) if n=0 then RETURN(1) else t := power(a,iquo(n/2))^2; if odd(e) then t := t*a fi; RETURN(t) fi; end; (Q) (M) Schnelle : Anwendung Schnelle : Anwendung Zur Anwendung: Knuth (TAOCP, vol2., ch. 4.6.3) diskutiert, wann man binäre ( schnelle ) verwenden sollte und wann nicht! Zitat: The point of these remarks is that binary methods are nice, but not a panacea. They are most applicable when the time to multiply x j x k is essentially independent of j and k (for example, when we are doing floting point multiplication, or multiplication modulo m); in such cases the running time is reduced from order n to order log n. Vorsicht! wenn der Aufwand für die Multiplikation x j x k proportional zu j k, als ist (Integer- und Polynommultiplikation!), also quadratisch mit der Anzahl der Ziffern- bzw. Koeffizientenoperationen wächst, kann der Aufwand für die banale Methode von der gleichen Grössenordnung wir für die schnelle Methode sein oder sogar schlechter! Anwendungszenario: in Z m (a, n, m) a n mod m Maple-Programm (rekursiv) modpower := proc (a,n,m) if n=0 then RETURN(1) else t := modpower(a,iquo(n/2),m)^2; (Q) if odd(n) then t := t*a mod m fi; (M) RETURN(t mod n) fi; end; benötigt (etwa) log n-maliges Quadrieren und höchstens log n weitere Multiplikationen von log m-bit Zahlen und log n Reduktionen modulo m von 2 log m-bit-zahlen, also insgesamt einen Aufwand O ( log n (log m) 2) gemessen in bit-operationen.

Schnelle : Anwendung Schnelle : Anwendung Umkehrabbildung: diskreter Logarithmus (a, a n mod m, m) n Hierfür ist bis heute kein effizienter Algorithmus bekannt! Die besten bekannten Algorithmen haben gleiche Komplexität wie die besten Algorithmen für die Faktorisierung von m Zahlenbeispiel: a, n, m in der Grössenordnung 10 200 schnelle erfordert etwa 3000 Multiplikationen von 200-digit-Zahlen und 3000 Reduktionen modulo m von 400-digit-Zahlen die Berechnung des diskreten Logarithmus brute-force würde etwa 10 200 Multiplikationen und Reduktionen modulo m erfordern Anwendungsszenario: schnelle Berechung C-rekursiver Folgen Kanonisches Beispiel: Fibonacci-Zahlen ( ) 1 1 Idee: mit F = gilt 1 0 also ( fn ) = f n 1 ( ) fn 1 + f n 2 = f n 1 ( fn f n 1 ) ( ) ( ) ( ) 1 1 fn 1 fn 1 = F 1 0 f n 2 f n 2 ( ) ( ) = F n 2 f2 = F n 2 1 f 1 1 Die Berechnung von f n mittels iteriertem Quadrieren der Matrix F benötigt 13 log(n 2) + 12 ν(n 2) 10 arithmetische Operationen (Additionen, Subtraktionen, Multiplikationen, Divisionen durch 2, siehe Heun, GA) Dies kann noch etwas verbessert werden, wenn man ausnützt, dass die Potenzen von F symmetrische Matrizen sind Schnelle : Anwendung Gofer-Programm zur Berechnung der Fibonacci-Zahlen mittels schneller von Matrizen (Heun, GA) Additionsketten Hinweis: Das Problem, a n in einer Halbgruppe möglichst effizient zu berechnen, hat etwas mit dem Problem der sog. Additionsketten zu tun. Eine Additionskette für n N ist eine Folge 1 = a 0, a 1, a 2,..., a r = n von ganzen Zahlen mit der Eigenschaft a i = a j + a k wobei j k < i (1 i r) Siehe Materialien zur Vorlesung für Laufzeitanalysen und gemessene Laufzeiten verschiedener Algorithmen zur Berechnung von Fibonacci-Zahlen Die Methode lässt sich generell für C-rekursive Folgen anwenden und liefert Verfahren logarithmischer (in n) Komplexität (straight-line-programm mit Addition als einziger Operation) 1 2 3 6 12 15 27 39 78 79

Additionsketten Additionsketten LR-Additionskette für n = 155 Das Problem, die Länge L(n) kürzester Additionsketten für gegebenes n zu bestimmen, ist sehr schwierig! LR- und RL-Additionsketten sind nicht immer optimal! 1 2 4 8 9 18 19 38 76 77 154 155 1 2 3 6 7 14 15 1 2 3 4 7 8 15 RL-Additionskette für n = 155 1 2 3 6 12 15 1 2 3 4 8 11 16 27 32 64 128 155 Berühmte Vermutung (Scholz, Brauer, 1937,1939): L(2 n 1) n 1 + L(n) Mehr darüber in ch. 4.6.3 von TAOCP!