1 Landau-Symbole 2 Rekursionen lösen

Werbung
Algorithmen und Berechenbarkeit
Formelsammlung
1 Landau-Symbole
Die Landau-Symbole wurden in der Vorlesung wie folgt definiert:
f ∈ o(g)
⇔ ∀ C > 0 ∃ x0 > 0 ∀ x > x0 : |f (x)| ≤ C · |g(x)|
(x) ⇔ limx→∞ fg(x)
=0
f ∈ O(g)
⇔ ∃ C > 0 ∃ x0 > 0 ∀ x > x0 : |f (x)| ≤ C · |g(x)|
f (x) ⇔ lim supx→∞ g(x) < ∞
f ∈ Θ(g)
⇔ f ∈ O(g) ∧ g ∈ O(f )
⇔ ∃ c > 0 ∃ C > 0 ∃ x0 > 0 ∀ x > x0 : c · |g(x)| ≤ |f (x)| ≤ C · |g(x)|
f (x) f (x) ⇔ 0 < lim inf x→∞ g(x) ≤ lim supx→∞ g(x) < ∞
f ∈ Ω(g)
⇔ g ∈ O(f )
⇔ ∃ c > 0 ∃ x0 > 0 ∀ x > x0 : c · |g(x)| ≤ |f (x)|
(x) ⇔ lim inf x→∞ fg(x)
>0
f ∈ ω(g)
⇔ g ∈ o(f )
⇔ ∀ c > 0 ∃ x0 > 0 ∀ x > x0 : c · |g(x)| ≤ |f (x)|
(x) ⇔ limx→∞ fg(x)
=∞
2 Rekursionen lösen
Raten und Beweisen
Eine Möglichkeit eine Rekursionsgleichung zu lösen ist eine geschlossene Form zu
erraten und zu überprüfen, ob sie stimmt. Eine Möglichkeit mögliche Formen zu
erraten ist das entrollen der Rekusionen. Eine weitere Möglichkeit bietet The OnLine Encyclopedia of Integer Sequences. Hier kann man die ersten n Laufzeiten
eingeben und bekommt hierfür oft eine geschlossene Form angezeigt. Für manche
Rekursionsgleichung gibt es womöglich keine geschlossene Form. Stattdessen kann
1
Algorithmen und Berechenbarkeit
Formelsammlung
man versuchen die Funktion so gut es geht von unten und oben einzugrenzen. Um die
Korrektheit einer geschlossenen Formel zu Beweisen können wir einen InduktionsBeweis führen.
Induktionsvoraussetzung frekursiv (n) = fgeschlossen (n)
Induktionsanfang Induktionsvoraussetzung gilt für Basisfälle (f (0), f (1), f (2))
Induktionsschritt fgeschlossen (n) in frekursiv einsetzen und ausrechnen
Rekursionsbäume
Seien a, b ∈ N und b > 1, g : N → N und es gelte die Rekursionsgleichung:
t(1) = g(1)
t(n) = a · t(n/b) + g(n)
Dann gilt für n = bk (d.h. für k = logb (n)):
t(n) =
k
X
i
a ·g
i=0
n
bi
.
Mastertheorem I
Seien a, b ∈ N, mit b > 1 und es gelte die Rekursionsgleichung:
t(n) ∈ a · t(n/b) + Θ(nc )
Dann gilt:

c
falls a < bc
 Θ(n )
c
Θ(n log n) falls a = bc
t(n) ∈
log a

Θ(n log b )
falls a > bc
Mastertheorem II
Sei r > 0,
Pr
i=0
αi < 1 und für eine Konstante c sei
!
r
X
t(n) ≤
t(dαi ne) + c · n
i=0
Dann gilt t(n) ∈ O(n).
2
Algorithmen und Berechenbarkeit
Formelsammlung
Annihilator Methode
Operator
Addition
Subtraktion
Multiplikation
Verschiebung
Komposition
Definition
(f + g)(n) := f (n) + g(n)
(f − g)(n) := f (n) − g(n)
(α · f )(n) := α · f (n)
Ek f (n) := f (n + k)
(X + Y)f := Xf + Yf
(X − Y)f := Xf − Yf
(XY)f := X(Yf ) = Y(Xf )
Distributivgesetz X(f + g) = Xf + Yg
Operator
E−1
E−a
(E − a)(E − b)
Σi (E − ai )
(E − 1)2
(E − a)2
(E − a)2 (E − b)
(E − a)d
Vernichtete Funktion
α
α · an
α · an + βbn
Σi αi ani für ai 6= aj
αn + β
(αn + β) + an
(αn + β)ab + γbn für a 6= b
i n
(Σd−1
i=0 αi n )a
3 Divide and Conquer
Beschreibung
Hier versucht man ein Problem in kleiner Unterprobleme aufzuteilen und auf sich
selbst zurück zu führen.
Algorithmen
• Quicksort
• Mergesort
• Multiplikation zweier Zahlen
• Multiplikation zweier Matrizen (Strassen-Algorithmus)
3
Algorithmen und Berechenbarkeit
Formelsammlung
4 Greedy-Algorithmen
Beschreiung
Greedy-Algorithmen basieren auf einer schrittweisen Berechnung von Teillösungen
(lokalen Optima). Dieses Verfahren eignet sich für Probleme, bei denen jede Teilfolge
einer optimalen Folge auch optimal ist. Ihre Korrektheit sollte möglichst immer
bewiesen werden.
Algorithmen
• Dijkstra (kürzeste Wege)
• Prim (minimale Spannbäume)
5 Dynamisches Programmieren
Beschreibung
Dynamisches Programmieren ist eine Beschleunigungstechnik um rekursive Probleme, die mehrfach gleiche Probleme lösen, zu beschleunigen. Sehr eng verwandt damit
ist memoization. Das Problem muss hierbei zunächst in rekursiver Form dargestellt
werden. Anschließend kann daraus ein dynamisches Programm erstellt werden:
1. Unterprobleme herausfinden
2. Platzverbrauch/Laufzeit bestimmen
3. Datenstruktur zur Speicherung der Teillösungen definieren (memoization)
4. Abhängigkeiten zwischen Teillösungen bestimmen
5. Auswertungsreihenfolge festlegen
Algorithmen
• Optimale Matritzenmultiplikationsreihenfolge
• Optimale Suchbäume
4
Algorithmen und Berechenbarkeit
Formelsammlung
6 Durchschnittsanalyse
Beschreibung
Bei der Durchschnittsanalyse versucht man die durchschnittliche Laufzeit eines Algorithmus zu bestimmen. Sei l ∈ L mit |l| = n ein Problem der Größe n aus der Menge
Σ
n T (l)
mit Ln = {l|l ∈ L ∧ |l| = n}
der Probleme L. Gesucht ist nun T∅ (n) = l∈L
|Ln |
Algorithmen
• Quickselect
• Quicksort
7 Amortisationsanalyse
Formeln
Aggregat-Methode
Gesucht ist eine Funktion T (n), die die worst-case Laufzeit für n Operationen angibt.
Die amrotisierten Kosten für eine einzelne Operation betragen dann T (n)
.
n
Accounting-Methode
Einzelnen Operationen werden Kosten zugewiesen, sodass die Summe der amortisierten Kosten immer Größer als die Summe der wahren Kosten ist: Sigmaci ≤ Σai .
Hierbei können unterscheidlichen Operationen unterschiedliche amortisierte Kosten
zugewiesen werden. Somit können sich für die gleiche Datenstruktur unterschiedliche
Kosten der Operationen ergeben.
Potentialmethode
Für die Potentialmethode versucht man eine Potential ausgehen von der Konfiguration der Datenstruktur abzuleiten. Das Potential soll hierbei die “Arbeitsfähigkeit”
der Datenstruktur angeben. Die Potentialfunktion muss hierbei folgenden Gleichungen genügen:
ai = ci + (φi − φi−1 )
(1)
Σai = Σ(ci + (φi − φi−1 )) = Σci + φn − φ0 ≥ Σci
Somit muss gelten: φn ≥ φ0
5
(2)
Algorithmen und Berechenbarkeit
Formelsammlung
Algorithmen
• Fibonacci-Heaps
• Union-Find
8 Entscheidbarkeit
Begriffsdefinition
Sei L eine Sprache und w ∈ Σ∗ ein Wort. Dann ist L entscheidbar, falls es eine
Funktion gibt mit
1 falls w ∈ L
χ(w) =
0 falls w ∈
/L
Falls es keine solche Funktion gibt, so ist die Sprache unentscheidbar. Falls es eine
Funktion gibt mit
1
falls w ∈ L
0
χ (w) =
undef falls w ∈
/L
so ist die Sprache semi-entscheidbar. Falls es eine Funktion gibt mit
undef falls w ∈ L
00
χ (w) =
0
falls w ∈
/L
so ist die Sprache Cosemi-entscheidbar. Gibt es für eine Sprache L die Funktionen
χ0 und ξ 00 , so ist diese entscheidbar. Die Menge aller Sprachen kann nun grob in 4
Teile aufgeteilt werden:
1. Entscheidbare Sprachen
2. Semi-entscheidbare Sprachen
3. Cosemi-entscheidbare Sprachen
4. Weder Semi- noch Cosemi-entscheidbare Sprachen
Satz von Rice
Sei R die Klasse aller Turing-berechenbaren Funktionen. Sei S ( R. Dann ist
die Sprache C(S) = {w|die von Mw berechnete Funktion liegt in S} unentscheidbar. Anders gesagt: Jede nicht-triviale Eigenschaft einer Turingmaschine ist unentscheidbar. Eine nicht-trivial Eigenschaft ist hierbei eine Eigenschaft die für alle
Turingmaschinen, unabhängig von ihrer Implementierung, gelten muss. Also eine
Eigenschaft der Sprache und nicht der Turingmaschine selbst.
6
Algorithmen und Berechenbarkeit
Formelsammlung
Beispiele
Folgende Sprachen sind weder semi- noch Cosemi-entscheidbar:
• U = {w : L(Mw ) = Σ∗ }
• I = {w : |L(Mw )| = ∞}
• Q = {(w1 , w2 ) : L(Mw1 ) = L(Mw2 )}
Folgende Sprachen sind unentscheidbar:
• E = {w : L(Mw ) = ∅}
• PCP
• Halteproblem H, Halteproblem auf leerem Band H0
Für zwei deterministisch kontextfreie Grammatiken G1 , G2 sind fogende Fragestellungen unentscheidbar:
• L(G1 ) ∩ L(G2 ) = ∅
• |L(G1 ) ∩ L(G2 )| = ∞
• L(G1 ) ∩ L(G2 ) kontextfrei
• L(G1 ) ⊆ L(G2 )
Für zwei deterministisch kontextfreie Grammatiken G1 , G2 sind fogende Fragestellungen unentscheidbar:
• L(G1 ) = L(G2 )
• G1 mehrdeutig
• L(G1 ) kontextfrei
• L(G1 ) regulär
• L(G1 ) deterministisch kontextfrei
Für L1 kontextfrei und L2 regulär ist folgende Fragestellung unentscheidbar:
• L1 = L2
Für kontextsensitive Sprachen ist unentscheidbar:
• L=∅
• |L| < ∞
Reduktion
Seien A ⊆ Σ∗ und B ⊆ Γ∗ Sprachen. Dann heißt A auf B reduzierbar (A ≤p B),
falls es eine totale und berechenbare Funktion f : Σ∗ −→ Γ∗ gibt, so dass für alle
x ∈ Σ∗ gilt: x ∈ A ⇐⇒ f (x) ∈ B.
7
Algorithmen und Berechenbarkeit
Formelsammlung
Falls A ≤p B und B entscheidbar (semi-entscheidbar), so ist auch A entscheidbar
(semi-entscheidbar).
Beispiele
• Halteprobleme
• universelle Turingmaschine
Gödel’scher Unvollständigkeitssatz
Jedes Beweissystem für die wahren arithmetischen Formeln ist notwendigerweise
unvollständig.
Gödel’sches Prädikat
Für jede Tahlenfolge (n0 . . . nk ) gibt es a und b, so dass für i = 0 . . . k gilt:
ni = aMOD(1 + (i + 1) · b)
Gleichwertig zu β(a, b, i, ni ) is wahr. Die Zahlen a und b lassen sich zu gegebenen
Zahlen ni mit Hilfe des chinesischen Restsatzes ermitteln.
9 Berechnbarkeitstheorie
Church’sche These:
Die Klasse der turing-berechenbaren Funktionen stimmt mit der Klasse
der intuitiv berechenbaren Funktionen überein.
9.1 Berechnungsmodelle
• loop-Programme = primitive Rekursion
• while = goto-Programme = µ-Rekursion
10 Komplexitätstheorie
Reduktion
Seien A ⊆ Σ∗ und B ⊆ Γ∗ Sprachen. Dann heißt A auf B polynomial reduzierbar (A ≤p B), falls es eine totale und mit polynomialer Komplexität berechenbare
8
Algorithmen und Berechenbarkeit
Formelsammlung
Funktion f : Σ∗ −→ Γ∗ gibt, so dass für alle x ∈ Σ∗ gilt: x ∈ A ⇐⇒ f (x) ∈ B.
Falls A ≤p B und B ∈ P (B ∈ NP), so ist auch A ∈ P (A ∈ NP)
Logspace-Transducer
Ein Logspace-Transducer benötigt man für eine logspace-Reduktion und ist eine
deterministische Turingmaschine mit
• Eingabeband mit Lesezugriff
• Logarithmisch beschränktes Arbeitsband mit Lese/Schreibzugriff
• Ausgabeband mit Schreibzugriff
NP-Schwierigkeit/Vollständigkeit
Eine Sprache A heißt NP-schwierig, falls für alle Sprache L ∈ NP gilt: L ≤p A.
Eine Sprache A heißt NP-vollständig, falls A NP-schwierig und A ∈ NP
Konstruierbarkeit
Eine Funktion f ist Zeit/Platzkostruierbar, falls Sie in f Schritten/Platz berechnet
werden kann.
Abgeschlossenheit
DSPACE, DTIME sind unter Komplement abgeschlossen indem man einfach die
Antworten vertauscht.
Platzkompression
• NSPACE(O(f )) = NSPACE(f )
• DSPACE(O(f )) = DSPACE(f )
Zeitkompression
• NTIME(O(f )) = NTIME(f )
• > 0∀n : f (n) >= (1 + )n ⇒ DTIME(O(f )) = DTIME(f )
9
Algorithmen und Berechenbarkeit
Formelsammlung
• DTIME(O(n)) 6= DTIME(n)
Zeit/Platzsätze
• ∀n : f (n) ≥ log(n) ⇒ DSPACE(f ) ⊆ NSPACE(f ) ⊆ DTIME(2O(f ) )
Satz von Sawitch
Sei s : N → N eine Funktion mit s(n) ∈ Ω(log(n)). Dann gilt:NSPACE(s(n)) ⊆
DSPACE((s(n))2 )
Satz von Immerman und Szelepcsényi
Sei s : N → N eine platzkonstruierbare Funktion mit s(n) ∈ Ω(log(n)). Dann gilt:
NSPACE(s(n)) = co-NSPACE(s(n))
Zeithierarchiesatz
Seien t1 , t2 : N → N Funktionen, t1 · log(t1 ) ∈
/ Ω(t2 ), t2 ∈ Ω(n log(n)) und t2
sei zeitkonstruierbar. Dann gilt DTIME(t2 ) \ DTIME(t1 ) 6= ∅. Insbesondere gilt
DTIME(f (n)) ( DTIME(f (n) · log2 (f (n)))
Platzhierarchiesatz
Seien s1 , s2 : N → N Funktionen, s1 ∈
/ Ω(s2 ), s2 ∈ Ω(log(n)) und s2 sei platzkonstruierbar. Dann gilt DSPACE(s2 ) \ DSPACE(s1 ) 6= ∅. Insbesondere gilt
DSPACE(f (n)) ( DSPACE(f (n) · log(n))
Lückensatz von Borodin
Für totale, berechenbare Funktionen r : N → N mit r(n) ≥ n, gibt es immer eine
totale und berechenbare Funktion s : N → N sodass gilt:
DTIME(s) = DTIME(r ◦ s)
Translationstechnik
Beispiele
P-vollständige Probleme
10
Algorithmen und Berechenbarkeit
Formelsammlung
11 Minimale Schnitte
Algorithmen
• Stoer-Wagner
• Karger-Stein
Karger-Stein
12 Sonstige Themen
Algorithmen
• Stabile Heirat (Gale-Shapley)
• Median in Linearzeit
11
Herunterladen