Vortrag

Werbung
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
Herunterladen