Zum Inhalt springen

Schnelles Potenzieren

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 21. September 2005 um 20:09 Uhr durch KingLoeric (Diskussion | Beiträge) (mathematische Symbole). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Vorlage:Mathematische Symbole

Unter dem Schnellen Potenzieren versteht man ein mathematisch optimiertes Verfahren, dessen bekanntester Vertreter das Square & Multiply ist. Es stellt eine Möglichkeit dar, um die Berechnung von natürlichen Zahlen mit großen Exponenten zu beschleunigen, in dem es versucht, Rechenoperationen zu ersparen.

Square & Multiply

Das Square & Multiply Verfahren beschreibt eine Methode, um schnell Potenzen zu berechnen.

Einsatzgebiete

Das Verfahren ist für folgende 2 Fragestellungen geeignet:

Das Verfahren ist nicht nur auf die Multiplikation beschränkt, sondern kann für verschiedenste Operationen (z.B. Elliptische Kurven-Addition) adaptiert werden.

Verfahren

Square & Multiply nutzt die Tatsache, dass eindeutig als geschrieben werden kann, wobei und .

Dies kann man wiederum umformen und erhält folgende Form

Gegeben:

Gesucht:

Ablauf:

Square & Multiply
 res=1
 for i=0..n
    res = res^2 mod m
    if b_i = 1
       res = res * a mod m
    end-if
 end-for

Wenn keine modulare Reduzierung von Nöten ist, wird diese einfach weggelassen.

Möchte man die Punktmultiplikation für elliptische Kurven implementieren, muss man die Quadrierung und die Multiplikation durch das jeweilige Äquivalent ersetzen. Der adaptierte Algorithmus hätte folgende Form.

Gegeben:

Gesucht:

Square & Multiply für elliptische Kurven
 Q=INF
 for i=0..n
    Q = 2*Q
    if b_i = 1
       Q = Q + P
    end-if
 end-for

Square & Multiply ist streng genommen der falsche Begriff. Es müsste eigentlich Double & Add heißen.

Beispiel

Gegeben:

  • a = 2
  • c = 11
  • b = 1011


res = 1
  • Schleifendurchlauf 1:
res = res^2 = 1
res = res * a = 2
  • Schleifendurchlauf 2:
res = res^2 = 4
  • Schleifendurchlauf 3:
res = res^2 = 16
res = res * a = 32
  • Schleifendurchlauf 4:
res = res^2 = 1024
res = res * a = 2048

Laufzeitanalyse

Bei der einfachen und langsamen Potenzierung von multipliziert man -mal mit sich selbst. Beim Square & Multiply werden lediglich Schleifendurchläufe benötigt. In jedem Schleifendurchlauf kommt es zu einer Quadrierung (wobei die erste Quadrierung vernachlässigt werden kann) und eventuell einer Multiplikation. Asymptotisch kommt man auf Operationen, wogegen man Operationen bei der einfachen Potenzierung benötigt. bezeichnet eine asymptische obere Schranke für das Laufzeitverhalten des Algorithmus. Wie man leicht einsieht, ist das Square & Multiply Verfahren sehr viel effizienter als das einfache Verfahren. Dieser verringerte Anspruch an die Rechenleistung ist bei großen Basen und Exponenten enorm.

Additive Ketten