Exponentiation: das Problem

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

Bemerkung: der goldene Schnitt ϕ ist die positive Lösung der Gleichung: x 2 = 1 + x

p Z >1 ist Primzahl, wenn gilt Euklid:

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

Schleifeninvarianten. Dezimal zu Binär

Algebraische und arithmetische Algorithmen

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Algebraische und arithmetische Algorithmen

3.3 Laufzeit von Programmen

Der euklidische Algorithmus für ganze Zahlen

Numerische Verfahren und Grundlagen der Analysis

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

Übung Algorithmen und Datenstrukturen

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.

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

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

Übung zur Vorlesung Berechenbarkeit und Komplexität

Komplexität von Algorithmen:

5 Randomisierte Algorithmen für Probleme aus der Zahlentheorie

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

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

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

Diskreter Logarithmus und Primkörper

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

Kapitel 3 Elementare Zahletheorie

Komplexität von Algorithmen

Interim. Kapitel Einige formale Definitionen

4 Kryptologie. Übersicht

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Diskrete Mathematik 1

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

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

Prof. Dr. Margarita Esponda

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

3.5 Schnelle Fouriertransformation (FFT, DFT)

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

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

Primzahltest in Polynomialzeit Der Algorithmus von Agrawal, Kayal und Saxena

Vorlesung Diskrete Strukturen Rechnen modulo n

Vorlesung Diskrete Strukturen Rechnen modulo n

Komplexität von Algorithmen

Erweiterter Euklidischer Algorithmus

Pseudo-Zufallsgeneratoren basierend auf dem DLP

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

Die schnelle Fouriertransformation

Euklidische Algorithmus, Restklassenringe (Z m,, )

19. Dynamic Programming I

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

Kapitel 6: Das quadratische Reziprozitätsgesetz

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

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

7 Die Sätze von Fermat, Euler und Wilson

1.7 Die schnelle Fourier-Transformation (FFT)

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

Komplexität von Algorithmen SS 2011

16. All Pairs Shortest Path (ASPS)

Beispiel: Fibonacci-Zahlen

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

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

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

13. Der diskrete Logarithmus

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

Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren

Praktisch modulo n rechnen

WS 2008/09. Diskrete Strukturen

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

Algorithmen und Datenstrukturen

5 Harte zahlentheoretische Probleme

Einführung in die Informatik I

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

WS 2009/10. Diskrete Strukturen

Informatik I Komplexität von Algorithmen

LR Zerlegung. Michael Sagraloff

Teilbarkeitslehre und Restklassenarithmetik

Kryptographie und Komplexität

WS 2009/10. Diskrete Strukturen

Übungen zum Vorkurs Mathematik für Studienanfänger 2009 ***

Lösungsvorschlag Serie 2 Rekursion

Praktikum Diskrete Optimierung (Teil 11)

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

Mathematischer Vorbereitungskurs für das MINT Studium

Algorithmen & Komplexität

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

Programmiertechnik II

Division mit Schulmethode

Public-Key-Algorithmen WS2015/2016

Kanonische Primfaktorzerlegung

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Grundlegende Tatsachen über den Ring Z

8.7 Die schnelle Fourier-Transformation Aufgabe: Gegeben zwei Polynome A(x) und B(x), als A(x) =

Algorithm Theory 3 Fast Fourier Transformation Christian Schindelhauer

Kryptographische Protokolle

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

11. Rekursion, Komplexität von Algorithmen

Hallo Welt für Fortgeschrittene

Organisatorisches. Theoretische Informatik 3 WS 2005/06. Empfohlene Literatur. Übersicht

Transkript:

Problemstellung Exponentiation: 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 Exponentiationsmethode 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 Exponentiation: die Idee Bessere Idee: In jeder Halbgruppe (H, ) kann man zur Berechnung der Exponentiation 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 Exponentiation, Exponentiation 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 Exponentiation: 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 Exponentiation: 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 Exponentiation: Aufwand 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 = Also gilt insbesondere: l(n)+ν(n) = l(2n+1)+ν(2n+1) 2 log n M(n) 2 log n d.h. M(n) Θ(log n)

Schnelle Exponentiation: Zitate aus TAOCP Abbildung: Knuth, TAOCP vol.2, ch. 4.6.3 (LR-Methode)

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

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

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

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

Schnelle Exponentiation: iteratives 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)

Schnelle Exponentiation: rekursives Programm 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 Exponentiation: Anwendung Zur Anwendung: Knuth (TAOCP, vol2., ch. 4.6.3) diskutiert, wann man binäre ( schnelle ) Exponentiation 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!

Schnelle Exponentiation: Anwendung Anwendungszenario: Exponentiation 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 Exponentiation: 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 Exponentiation 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

Schnelle Exponentiation: Anwendung 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 Exponentiation: Anwendung Gofer-Programm zur Berechnung der Fibonacci-Zahlen mittels schneller Exponentiation von Matrizen (Heun, GA) 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

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) (straight-line-programm mit Addition als einziger Operation) 1 2 3 6 12 15 27 39 78 79

Additionsketten LR-Additionskette für n = 155 1 2 4 8 9 18 19 38 76 77 154 155 RL-Additionskette für n = 155 1 2 3 4 8 11 16 27 32 64 128 155

Additionsketten 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 3 6 7 14 15 1 2 3 4 7 8 15 1 2 3 6 12 15 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!