Studienarbeit Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Betreuer: Dr. Bernd Borchert, Dr. Klaus Reinhardt Prof. Dr. K.-J. Lange Arbeitsbereich für Theoretische Informatik/Formale Sprachen Wilhelm-Schickard-Institut für Informatik (WSI) Eberhard Karls Universität Tübingen Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Terminologie Turm: Arithmetischer { 1, +, -, * }-Schaltkreis Gerichteter azyklischer Graph T = (V, E) mit degin(v) = 2 für alle v in V und degout(v) ≤ 1 6 für alle v in V und einem "obersten" Knoten z (Knoten mit degout(z) = 0). Als direkte Eingabe ist nur 1 erlaubt. 4 Größe: Anzahl Knoten/Operationen des Turms Ergebniswert: Ausgabe der "obersten" Operation Kraft: 2 Anzahl verschiedener Primfaktoren in der Primfaktorzerlegung des Ergebniswerts Größe: 3 Ergebniswert: 6 = 2 * 3 Kraft: 2 Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Motivation ● Schnelle Faktorisierung mit Algorithmus: Eingabe: Zahl c = a*b, die in Faktoren zerlegt werden soll Algorithmus: • Setze Integer n := 0. • while(true): • Setze Integer x := T(n) mod c. • Falls x = 0: setze n := n + 1, continue. • Berechne r := gcd(c, x). • Falls r > 1: gebe "r ist Faktor von c" aus, break. • Setze n := n + 1. Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Ziel ● Alle Türme einer bestimmten Größe aufbauen und deren Kraft berechnen. ● Gesucht sind Türme mit max. Kraft. ● Sind bestimmte Muster erkennbar? Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Probleme ● ● ● Anzahl Türme wächst exponentiell Größe der Ergebniswerte wächst exponentiell Ohne Optimierungen nur bis Größe 6 Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Turm-Enumeration ● ● ● Bottom-Up - Natürlicher Ansatz (vgl. binäre Addition) - "Overflows" nach oben Top-Down - "Overflows" nach unten - Zwischenergebnisse merken - Mehr Optimierungen Verwendet: Top-Down Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Faktorisierung ● ● ● ECM-Bibliothek von D. A. Alpern Faktorisierung in Thread - Faktorisierungen werden nach 30 min abgebrochen, Eintrag in Log-Datei - Abgebrochene Faktorisierungen können wieder aufgenommen werden (parallel) Caching - High Cache: Zeit ≥ 3 sek + abgebr. - Low Cache: alle anderen - Ersetzungsstrategie: first in, never out Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Anzahl Türme Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Optimierungen ● ● ● + und * sind kommutativ Impl.: Rechte Op.ref. ≤ linker Op.ref. Nicht-referenzierte Knoten nicht erlaubt Impl.: nicht implementiert, da bei TopDown ineffizient Keine doppelten Zwischenergebnisse (sonst äquivalent zu kleinerem Turm) Impl.: bei jedem geänderten Knoten überprüfen Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Optimierungen ● ● 0 und 1 keine gültigen Zwischenergebnisse (führt zu doppelten Zwischenergebnissen) Erster Knoten 1+1 Impl.: folgt aus anderen Optimierungen Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Optimierungen ● Ergebnisse mit unterer Schranke vergleichen Ist ein Turm mit n verschiedenen Primfaktoren bekannt, muss der Ergebniswert mindestens 2*3*5*7*... (n Faktoren) sein, alle kleineren müssen nicht faktorisiert werden Ohne: 38 s, mit: 187 ms Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Optimierungen ● ● ● Operator +: Referenzen nur < (a+a = 2*a, 2 wegen Knoten 1+1 verf.) Operator *: keine Mult. mit 1 Maximal noch möglichen Ergebniswert des Turms berechnen Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Türme mit max. Kraft (1-3) 6 4 2 2 Größe: 1 Ergebnis: 2 Kraft: 1 Größe: 2 Ergebnis: 4 Kraft: 1 Viele verschiedene Primfaktoren mit wenigen Operationen 4 2 Größe: 3 Ergebnis: 6 = 2 * 3 Kraft: 2 Dominik Reichl Türme mit max. Kraft (4-5) 252 14 256 16 16 4 4 2 2 Größe: 4 Kraft: 2 Größe: 5 Kraft: 3 252 = 2*2*3*3*7 Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Türme mit max. Kraft (6-7) Größe: 7 Größe: 6 Ergebniswert: 65520 Fakt.: 24 * 32 * 5 * 7 * 13 Kraft: 5 Ergebniswert: 4294967292 Fakt.: 22 * 32 * 7 * 11 * 31 * 151 * 331 Kraft: Viele verschiedene Primfaktoren mit wenigen Operationen 7 Dominik Reichl Türme mit max. Kraft (8-9) Größe: 8 Kraft: 12 Viele verschiedene Primfaktoren mit wenigen Operationen Größe: 9 Kraft: 16 Dominik Reichl Türme mit max. Kraft (10-11) Größe: 10 Kraft: 22 Größe: 11 Kraft: 34 28 * 33 * 5* 72 * 13 * 17 * 19 * 29 * 37 * 43 * 73 * 109 * 113 * 127 * 241 * 337 * 433 * 1009 * 1429 * 3361 * 5419 * 14449 * 21169 * 38737 * 92737 * 649657 * 2627857 * 15790321 * 269389009 * 40388473189 * 77158673929 * 88959882481 * 118750098349 * 1475204679190128571777 Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Übersicht Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl Ergebnisse ● Quadratisches Wachstum? ● Beispiel max. Turm Größe 10: Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl 2-dim. Größenparameter Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl ● Vielen Dank für Ihre Aufmerksamkeit! http://www-fs.informatik.uni-tuebingen.de/studdipl/reichl/ Viele verschiedene Primfaktoren mit wenigen Operationen Dominik Reichl