Erinnerung VL 18.04.2016

Werbung
Erinnerung VL 18.04.2016
I
Amuse Geule: Langzahlmultiplikation
I
I
Gegeben: Langzahlen a, b (jeweils aus n Ziffern bestehend)
Gesucht: Produkt p = a · b (bis zu 2n Ziffern)
I
Basisoperationen: Ziffernaddition (mit Übertrag), Ziffernmult.
I
Erster Schritt: Langzahladdition mit n Ziffernadditionen
I
Multiplikation Langzahl mit Ziffer: n Ziffernmult., n Ziffernadd.
Schulmultiplikation: O n2 Ziffernoperationen
Rekursive Multiplikation: O n2 Ziffernoperationen
I
I
KIT – Institut für Theoretische Informatik
1
Erinnerung rekursiver Algorithmus
Function recMult(a, b)
assert a und b haben n Ziffern, sei k = dn/2e
if n = 1 then return a · b
Schreibe a als a1 · B k + a0
Schreibe b als b1 · B k + b0
return
recMult(a1 , b1 ) · B 2k +
(recMult(a0 , b1 )+recMult(a1 , b0 )) · B k +
recMult(a0 , b0 )
KIT – Institut für Theoretische Informatik
2
Karatsuba-Ofman Multiplikation[1962]
Beobachtung: (a1 + a0 )(b1 + b0 ) = a1 b1 + a0 b0 + a1 b0 + a0 b1
Function recMult(a, b)
assert a und b haben n Ziffern, sei k = dn/2e
if n = 1 then return a · b
Schreibe a als a1 · B k + a0
Schreibe b als b1 · B k + b0
c11 := recMult(a1 , b1 )
c00 := recMult(a0 , b0 )
return
c11 · B 2k +
(recMult((a1 + a0 ), (b1 + b0 )) − c11 − c00 )B k
+c00
KIT – Institut für Theoretische Informatik
3
Beispiel
10 01 · 19 84 =
10 · 19 · 10000+
((10 + 1) · (19 + 84) − 10 · 19 − 1 · 84) · 100+
1 · 84 =
1985984
KIT – Institut für Theoretische Informatik
4
Analyse
(
1
T (n) ≤
3 · T (dn/2e) + 10 · n
if n = 1,
if n ≥ 2.
−→ (Master-Theorem)
T (n) = Θ nlog2 3 ≈ Θ n1.58
KIT – Institut für Theoretische Informatik
5
Algorithm Engineering –
was hat das mit der Praxis zu tun?0
Algorithmics
experiment
analyze
design
implement
KIT – Institut für Theoretische Informatik
6
Algorithmentheorie (Karikatur)
models
design
Theory Practice
analysis
implementation
deduction
perf. guarantees
applications
KIT – Institut für Theoretische Informatik
7
Algorithmik als Algorithm Engineering
Algorithm
Engineering
Deduktion
Leistungs−
garantien
Entwurf
2
falsifizierbare
3 Hypothesen 5
Induktion
4
Implementierung
reale
Eingaben
Experimente
7
Anwendungen
Analyse
realistische
Modelle 1
Algorithmen− 6
bibliotheken
KIT – Institut für Theoretische Informatik
8
Zurück zur Langzahlmultiplikation
I
Zifferngröße ↔ Hardware-Fähigkeiten
z. B. 64 Bit
I
Schulmultiplikation für kleine Eingaben
I
Assembler, SIMD,. . .
0.4
Karatsuba, n = 2048
Karatsuba, n = 4096
0.3
0.2
0.1
4
8
16
32
64 128 256 512 1024
recursion threshold
KIT – Institut für Theoretische Informatik
9
Skalierung
school method
Karatsuba4
Karatsuba32
10
1
Asymptotik
setzt sich durch
I
Konstante Faktoren oft
Implementierungsdetail
0.1
time [sec]
I
0.01
0.001
0.0001
1e-05
24
26
28 210 212 214
n
KIT – Institut für Theoretische Informatik
10
Blick über den Tellerrand
I
Bessere Potenzen durch Aufspalten in mehr Teile
I
Schnelle Fourier Transformation
O(n) Multiplikationen von O(log n)-Bit Zahlen
I
[Schönhage-Strassen 1971]: Bitkomplexität O(n log n log log n)
I
[Fürer 2007]: Bitkomplexität 2O(log
I
Praxis: Karatsuba-Multiplikation ist nützlich für Zahlenlängen aus
der Kryptographie
∗
n) n log n
GnuPG, OpenSSL verwenden Karatsuba (ab best. Bitlänge)
(
0
falls n ≤ 1
Iterierter Logarithmus: log∗ n =
∗
1 + log log n sonst
I
KIT – Institut für Theoretische Informatik
11
Einführendes
KIT – Institut für Theoretische Informatik
12
Überblick
I
Algorithmenanalyse
I
Maschinenmodell
I
Pseudocode
I
Codeannotationen
I
Mehr Algorithmenanalyse
I
Graphen
KIT – Institut für Theoretische Informatik
13
(Asymptotische) Algorithmenanalyse
Gegeben:
Ein Programm
Gesucht: Laufzeit T (I) (# Takte), eigentlich für alle Eingaben I (!)
(oder auch Speicherverbrauch, Energieverbrauch,. . . )
Erste Vereinfachung: Worst case: T (n) = max|I|=n T (I)
(Später mehr:
average case, best case, die Rolle des Zufalls, mehr Parameter)
T(n)
Instanzen mit |I|=n
KIT – Institut für Theoretische Informatik
14
Zweite Vereinfachung: Asymptotik
O(f (n)) = {g(n) : ∃c > 0 : ∃n0 ∈ N+ : ∀n ≥ n0 : g(n)≤c · f (n)}
„höchstens“
Ω (f (n)) = {g(n) : ∃c > 0 : ∃n0 ∈ N+ : ∀n ≥ n0 : g(n)≥c · f (n)}
„mindestens“
Θ(f (n)) = O(f (n)) ∩ Ω (f (n))
„genau“
o(f (n)) = {g(n) : ∀c > 0 : ∃n0 ∈ N+ : ∀n ≥ n0 : g(n)≤c · f (n)}
„weniger“
ω(f (n)) = {g(n) : ∀c > 0 : ∃n0 ∈ N+ : ∀n ≥ n0 : g(n)≥c · f (n)}
„mehr“
KIT – Institut für Theoretische Informatik
15
O-Kalkül Rechenregeln
Schludrigkeit: implizite Mengenklammern.
Lese ‘f (n) = E ’ als ‘{f (n)} ⊆ E ’
cf (n) ∈ Θ(f (n)) für jede positive Konstante c
k
∑ ai ni ∈ O(nk )
i=0
f (n) + g(n) ∈ Ω (f (n)) ,
f (n) + g(n) ∈ O(f (n)) falls g(n) = O(f (n)) ,
O(f (n)) · O(g(n)) = O(f (n) · g(n)) .
u. s. w.
KIT – Institut für Theoretische Informatik
16
Maschinenmodell:
RAM (Random Access Machine)
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Space)
Moderne (RISC) Adaption des
von Neumann-Modells [von Neumann 1945]
KIT – Institut für Theoretische Informatik
17
Register
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Space)
k (irgendeine Konstante) Speicher
R1 ,. . . ,Rk für
(kleine) ganze Zahlen
KIT – Institut für Theoretische Informatik
18
Hauptspeicher
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Space)
Unbegrenzter Vorrat an Speicherzellen
S[1], S[2]. . . für
(kleine) ganze Zahlen
KIT – Institut für Theoretische Informatik
19
Speicherzugriff
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Speicher)
Ri := S[Rj ] lädt Inhalt von Speicherzelle S[Rj ] in Register Ri .
S[Rj ]:= Ri speichert Register Ri in Speicherzelle S[Rj ].
KIT – Institut für Theoretische Informatik
20
Rechnen
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Space)
Ri := Rj R` Registerarithmetik.
‘’ ist Platzhalter für eine Vielzahl von Operationen
Arithmetik, Vergleich, Logik
KIT – Institut für Theoretische Informatik
21
Bedingte Sprünge
S
1
2
Program Control
R 1
2
load
...
...
store
<>=
+−*/&v~
k
Θ (log Space)
JZ j, Ri Setze Programmausführung an Stelle j fort falls Ri = 0
KIT – Institut für Theoretische Informatik
22
„Kleine“ ganze Zahlen?
Alternativen:
Konstant viele Bits (64?): theoretisch unbefriedigend, weil nur endlich
viel Speicher adressierbar
endlicher Automat
Beliebige Genauigkeit: viel zu optimistisch für vernünftige
Komplexitätstheorie. Beispiel: n-maliges Quadrieren führt
zu einer Zahl mit ≈ 2n Bits.
OK für Berechenbarkeit
Genug um alle benutzten Speicherstellen zu adressieren: bester
Kompromiss.
KIT – Institut für Theoretische Informatik
23
Algorithmenanalyse im RAM-Modell
Zeit: Ausgeführte Befehle zählen,
d. h. Annahme 1 Takt pro Befehl.
Nur durch späteres O(·) gerechtfertigt!
Ignoriert Cache, Pipeline, Parallelismus. . .
Platz: Etwas unklar:
I letzte belegte Speicherzelle?
I Anzahl benutzter Speicherzellen?
I Abhängigkeit von Speicherverwaltungsalgorithmen?
Hier: Es kommt eigentlich nie drauf an.
KIT – Institut für Theoretische Informatik
24
Mehr Maschinenmodell
Cache: schneller Zwischenspeicher
I begrenzte Größe
kürzlich/häufig zugegriffene Daten sind eher im
Cache
I blockweiser Zugriff
Zugriff auf konsekutive Speicherbereiche sind
schnell
Parallelverarbeitung: Mehrere Prozessoren
unabhängige Aufgaben identifizieren
···
mehr in TI, Algorithmen II, Programmierparadigmen,. . .
KIT – Institut für Theoretische Informatik
25
Mehr Maschinenmodell
S 1
2
Caches
Program Control
R 1
2
...
k
...
Netzwerk
KIT – Institut für Theoretische Informatik
26
Herunterladen