Schnelle Exponentiation

Neue Frage »

Malcang Auf diesen Beitrag antworten »
Schnelle Exponentiation
Hallo mal wieder smile

ich habe hier im Skript einen Algorithmus zur schnellen Exponentiation gegeben. Es ist dieser:
[attach]58122[/attach]

Nun versuche ich das Beispiel nachzuvollziehen, dass ich hier habe. Berechnet werden soll .

Es ist also
.
Nun berechne ich .

Aber für den Ausdruck brauche ich doch nun wieder schnelle Exponentiation verwirrt

Oder übersehe ich eine einfache Lösung?
HAL 9000 Auf diesen Beitrag antworten »

Nein, diese Quadratberechnung wird als normale Modulo-Multiplikation durchgeführt - wir wollen doch nicht in einen Zirkelschluss geraten. Augenzwinkern


Man kann das Verfahren auch so beschreiben: Ausgehend von der Binärdarstellung des Exponenten modulo-multipliziert man diejenigen miteinander, für die (also Einsziffer in der Binärdarstellung) ist. Im Laufe dieses Verfahrens werden die durch iteriertes Quadrieren berechnet, d.h. basierend auf .

Wegen sind dabei also "nur" Modulo-Multiplikationen nötig.
Malcang Auf diesen Beitrag antworten »

Danke sehr HAL. Aber gibt es für diese Quadratberechnung wiederum einen Trick? Denn es heißt, man könne das nun "leicht" schriftlich durchführen.
HAL 9000 Auf diesen Beitrag antworten »

Von "leicht" kann keine Rede sein - es reduziert nur eben die Anzahl der nötigen Multiplikationen:

Es ist , also insgesamt 5 Einsen in einer 9stelligen Binärzahl, macht demnach 5+9=14 nötige Multiplikationen - DAS allein ist mit "leicht" gemeint, etwa gegenüber der primitiven Methode mit 283 Multiplikationen.

------------------------------------------------------------------------------------------

Wenn du die Aufgabe wirklich schriftlich ohne jede Rechenhilfsmittel bewältigen sollst, dann kannst du alternativ auch anders vorgehen:

1) Zunächst Primfaktorzerlegung des Moduls (auch das kann schriftlich schon mal dauern):

2) Getrennte Berechnung nach Primfaktormodulen - wenn es geht auch unter Nutzung des Kleinen Fermat:





3) Lösung des Kongrunzystems





bestimmen (Chinesischer Restsatz), ergibt .


Ist viel Schreibaufwand, aber manuell vermutlich etwas schneller bewältigen als das oben - wobei man für die Teilaufgaben sowie durchaus ja auch die schnelle Exponentiation anwenden kann, mit deutlich kleineren Zahlen, wo die anstehenden Quadrierungen für gute Kopfrechner sogar schon bewältigbar sind. Augenzwinkern
Malcang Auf diesen Beitrag antworten »

Ok, danke HAL, das sehe ich ein.

Das ganze war mal eine Klausuraufgabe, daher dachte ich, ich übersehe einen Trick für's schriftliche Rechnen.
Mir fiele bloß noch ein, das Ganze über den chinesischen Restsatz zu lösen:



und zusammengesetzt erhalte ich dann .

Wirklich einfacher finde ich das aber auch nicht.

Edit: Das hat sich gerade auf die Sekunde mit deinem Edit überschnitten Big Laugh

Edit2: Ah, ich sehe, du hast die gesamte Aufgabe mit dem CRT betrachtet. Das ist natürlich auch möglich, jedoch lautete die Aufgabenstellung "mit schneller Exponentiation". Sicherlich geht deine Methode "noch schneller" Big Laugh
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Malcang
Das ganze war mal eine Klausuraufgabe,

Wobei ich annehme, dass einfache Taschenrechner erlaubt waren? Na da kannst du doch die Einzelschritte mit "erst multiplieren, dann modulo" doch ganz flink berechnen, und bei dieser Aufgabe dann eben 14-mal.
 
 
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
Zitat:
Original von Malcang
Das ganze war mal eine Klausuraufgabe,

Wobei ich annehme, dass einfache Taschenrechner erlaubt waren? Na da kannst du doch die Einzelschritte mit "erst multiplieren, dann modulo" doch ganz flink berechnen, und bei dieser Aufgabe dann eben 14-mal.


Nein, keine Taschenrechner erlaubt. Jedenfalls würde es mich wundern. Ich kenne die Aufgabe aus einer Altklausur und es waren noch nie Taschenrechner erlaubt.
HAL 9000 Auf diesen Beitrag antworten »

Oje ... hat man dann eine Stunde Zeit (oder noch mehr) für diese Aufgabe, oder wie? verwirrt
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
Oje ... hat man dann eine Stunde Zeit (oder noch mehr) für diese Aufgabe, oder wie? verwirrt


Ich gehe nicht davon aus, die Klausur dauerte insgesamt 120 Minuten. Der Prof. ist aber auch leider nicht mehr an unserer Uni.
HAL 9000 Auf diesen Beitrag antworten »

Ich hab gerade mal im Selbstversuch getestet: Mit dem Originalmodul 2077 habe ich für eine solche Multiplikation zweier vierstelliger Zahlen gefolgt von einer Division mit Rest durch 2077 ca. 2,5 Minuten benötigt. Mit 14 multipliziert ergibt das 35 Minuten, dabei sind keine Zeiten für Überprüfungen einbezogen. Und da ich noch einer Generation entstamme, die die ersten 9 Schuljahre ohne Taschenrechner bewältigen musste, bilde ich mir auch ein, da auch gar nicht so schlecht im Kopfrechnen zu sein (wenn auch etwas aus der Übung).

Daher denke ich, dass eine Stunde Zeit für diese Aufgabe gewiss nicht zu hoch gegriffen ist. Es sei denn, sowas wird vorher exzessiv geübt, aber ich wüsste nicht, warum eine solche Fronarbeit im universitären Umfeld angestellt werden sollte.
willyengland Auf diesen Beitrag antworten »

Vielleicht wäre der genaue Aufgabentext hilfreich?
HAL 9000 Auf diesen Beitrag antworten »

Die Aufgabe ist (s.o.): Berechne .

Unklar waren die zur Verfügung stehenden Mittel - und wie ich Malcang verstanden habe: Keinerlei elektronische, d.h., nur Gehirn, Stift und Papier.
willyengland Auf diesen Beitrag antworten »

Vielleicht stand da ja noch etwas dabei, z.B. Wie würden sie prinzipiell vorgehen?
HAL 9000 Auf diesen Beitrag antworten »

Ok: Kennst du eine Methode, die ohne rechentechnische Hilfsmittel signifikant schneller als die beiden vorgestellten Alternativen ist?

EDIT: Ach du meinst, dass man skizzieren soll, wie man vorgehen will, ohne konkret zu rechnen? Dann hätte uns Malcang aber ganz schön veralbert mit diesem Thread.
HAL 9000 Auf diesen Beitrag antworten »

Vielleicht noch ein kleiner Exkurs, wie man bei in Relation zum Modul vergleichsweise großen Exponenten diesen Exponenten "reduzieren" kann:


1) Sind teilerfremd, so gilt bekanntlich , dabei ist die Carmichael-Funktion (welche im Fall von ungeraden Primfaktorpotenzen mit der Eulerschen Phi-Funktion übereinstimmt, sonst aber nur ein echter Teiler davon ist). Es folgt unmittelbar

für .

Im obigen Beispiel ist und somit für . Nützt bei leider herzlich wenig, etwas größer sollte der Exponent also schon sein, damit man das nutzen kann.


2) Sind nicht teilerfremd, so ist dennoch noch einiges möglich. Zunächst mal zerlegt man das Modul derart, dass teilerfremd sind und der andere Faktor nur Primteiler enthält, die auch in enthalten sind (wenn auch ggfs. mit anderen Exponenten). Zunächst halten wir fest, dass dann für genügend große gilt, sei das kleinste dieser (dieses lässt sich leicht aus den Primfaktorzerlegungeb von und ermitteln). Nun gilt (siehe 1)) und außerdem für alle , aus beiden zusammen folgt

für und .

Man kann das auch so formulieren, dass Folge ab Index periodisch ist mit Periodenlänge , die allerdings (abhängig von ) nicht notwendig auch die kleinste Periodenlänge sein muss.


Beispiel: und , dann ist sowie und . Daraus folgt, dass für alle die beiden Endziffern aufweist.


1) kann man übrigens als Spezialfall und damit dann auffassen.
Malcang Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
EDIT: Ach du meinst, dass man skizzieren soll, wie man vorgehen will, ohne konkret zu rechnen? Dann hätte uns Malcang aber ganz schön veralbert mit diesem Thread.


Nein, das war so nicht gemeint. Es ging also ganz konkret um das Rechnen.
HAL 9000 Auf diesen Beitrag antworten »

Hatte ich auch nicht wirklich angenommen. Es bleibt eine seltsame Klausuraufgabe, die aus dem (doppeldeutig gemeinten) Zeitrahmen fällt. Mit erlaubtem TR und auf 15min kalkuliert wäre sie Ok.

P.S.: In Python übrigens eine einzige Anweisung pow(1292,283,2077), und man muss dazu nicht mal eine zusätzliche Bibliothek importieren...
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »