Update Summary
This commit is contained in:
parent
9dd8e8e334
commit
463936cfcf
@ -5,15 +5,22 @@ $$self.address: A[i] $$
|
||||
$$\longleftarrow prev.address \ | \ next.address\longrightarrow$$
|
||||
### Stack
|
||||
First-In; Last-Out
|
||||
Add: "Push"
|
||||
Remove: "Pop"
|
||||
|
||||
### Queue
|
||||
First-In; First-Out
|
||||
Add: "Enqueue"
|
||||
Remove: "Dequeue"
|
||||
### Binary-Tree
|
||||
$$self.address : Value$$
|
||||
$$\rightarrow left.address : \rightarrow right.address$$
|
||||
$$\leftarrow left.address : \rightarrow right.address$$
|
||||
|
||||
### Graphen
|
||||
#### Adjazenzmatrix
|
||||
|
||||
Von *Zeile* nach *Spalte*
|
||||
Von *Zeile* nach *Spalte* lesen. Wert vom Element ist das Gewicht dieser Verbindung, wenn alle $Gewichte = 1$, dann ungewichtet.
|
||||
Wenn Symmetrische Matrix, dann Ungerichtet.
|
||||
|
||||
$$
|
||||
\newcommand\T{\rlap{\text{to}}}
|
||||
@ -31,20 +38,16 @@ $$
|
||||
\end{array}
|
||||
$$
|
||||
#### Adjazenzliste
|
||||
Von Spaltenheader zu allen elementen in der Spalte
|
||||
|
||||
Der **Header-Knoten**, geht zu allen Knoten in der Spalte.
|
||||
$$
|
||||
\begin{array}
|
||||
& 1 & 2 & 3 & 4 \\
|
||||
\hline
|
||||
2 & 3 & 2 & 1 \\
|
||||
4 \\
|
||||
|
||||
\end{array}
|
||||
$$
|
||||
|
||||
|
||||
|
||||
## 2. Skipliste, Binary-Search-Tree, Shellsort
|
||||
|
||||
### Skipliste
|
||||
@ -58,13 +61,10 @@ $$
|
||||
\text{Layer 0:} \quad H \rightarrow E_1 \rightarrow E_2 \rightarrow E_3 \rightarrow E_4 \rightarrow E_5 \rightarrow \text{NIL}
|
||||
\end{array}
|
||||
$$
|
||||
|
||||
|
||||
|
||||
### Binary Search Tree
|
||||
>Linker Teilbaum *kleiner*, rechter Teilbaum *größer*
|
||||
|
||||
$$Tiefe = Max(\text{Anzahl Kanten})$$
|
||||
$$Tiefe = Max(\text{Anzahl Kanten nach unten})$$
|
||||
|
||||
**Suchen**
|
||||
Richtung? -> Vergleich von beiden Kinder knoten
|
||||
@ -123,10 +123,9 @@ $$
|
||||
$$
|
||||
$$Parent: floor\left(\frac{2i}{2}\right)$$
|
||||
|
||||
|
||||
### Max/Min-Heap-Reparieren:
|
||||
Man itereriert durch alle Element, ausgeschlossen die Blätter.
|
||||
Folgendes Schema:
|
||||
Man iteriert durch alle Elemente, außer die Blätter.
|
||||
Folgendes Schema:
|
||||
>**Breadth-First**: Man startet dem Letzten Element (Visuell unten rechts), das **Kinder** hat. Dann nach Links bis ende der Ebene und dann nach oben.
|
||||
|
||||
Das ist nur das Iterieren! Noch Reparieren!
|
||||
@ -156,13 +155,14 @@ Jedes Element das man anschaut wird dann *down-geshifted*. Im grunde Rekursives
|
||||
```
|
||||
|
||||
2. (Abbruchbedingung), Gehe zum nächsten Element ...
|
||||
1. Max-Heap: Wenn $element$ ist das **größte** von den drei: $max([e, c1, c2]) = e$
|
||||
2. Min-Heap: Wenn $element$ ist das **kleinste** von den drei: $min([e, c1, c2]) = e$
|
||||
1. Max-Heap: Wenn $element$ das **größte** von den drei ist, i.e. $max([e, c1, c2]) = e$
|
||||
2. Min-Heap: Wenn $element$ das **kleinste** von den drei ist, i.e. $min([e, c1, c2]) = e$
|
||||
3. Wenn nicht, dann *tausche* mit dem größten (Max-Heap) / kleinsten (Min-Heap) der drei.
|
||||
4. Wiederhole, bis Abbruchbedingung erreicht, oder ende vom Baum, bzw. ganz unten.
|
||||
4. Wiederhole, bis Abbruchbedingung erreicht, oder am ende vom Baum, bzw. ganz unten.
|
||||
|
||||
#### Heap-Sort
|
||||
1. Unten Rechts (Letztes Element im Heap-Array, ist ein Blatt btw.), mit dem ersten (Root) Tauschen.
|
||||
0. (Vorrausgesetzt ist ein Valider-Heap)
|
||||
1. Unten Rechts (Letztes Element im Heap-Array, ist ein Blatt btw.), mit dem ersten (Root) Tauschen, und es (bzw. previous Root) vom Heap entfernen.
|
||||
2. Heap Reparieren indem man das neue Root element **down-shifted**, bis es wieder am richtigen platz ist, siehe vorherige erklärung.
|
||||
|
||||
## 4. Balancierte Bäume
|
||||
@ -172,17 +172,16 @@ Max. Tiefe: $log_2(n)$
|
||||
|
||||
Jeder Knoten bekommt einen *Balancefaktor*, dieser Entspricht der Tiefe vom rechten, minus der Tiefe des linken Teilbaumes.
|
||||
> Tiefe von einem (Teil)Baum, ist einfach die maximale Anzahl Kanten nach unten.
|
||||
$$BAL(N) = T(u_2) - T(u_1)$$
|
||||
$$BAL(Knoten) = T(u_2) - T(u_1)$$
|
||||
|
||||
Dieser sollte $$-1 \leq BAL(N)\leq 1$$
|
||||
Dieser sollte entweder $\{-1; 0; 1\}$
|
||||
## 5. Reelwertige Optimierung in einer Dimension
|
||||
|
||||
Bisektion mit Sampling. I.e. man macht Bisektion mehrere Male, mit anderen Intervallen.
|
||||
Also z.B. komplettes intervall ist $I=[1, 10]$, und dort sind vielleicht 4 lokale Minima.
|
||||
Dann macht man halt $$I_1=[1, 4], I_2=[4,7], I_3=[7, 10]$$
|
||||
Und führt auf den Intervallen Bisektion aus und nimmt das beste Ergebnis.
|
||||
|
||||
Ganz Normal Newton Verfahren mit Schrittweitensteuerung.
|
||||
Bei Newton: Einfach ganz Normal Newton mit Schrittweitensteuerung.
|
||||
|
||||
### Straf- (Penalty-) Funktionen
|
||||
|
||||
@ -223,9 +222,8 @@ Je größer $\beta$, desto stärker die Strafe ⇒ höhere Genauigkeit am Rand,
|
||||
#### Beispiel
|
||||
|
||||
$$
|
||||
\text{Min } e^x, \qquad 0 \le x \le 1.
|
||||
\text{Min } f(x), \qquad 0 \le x \le 1.
|
||||
$$
|
||||
|
||||
Strafterme
|
||||
|
||||
$$
|
||||
@ -235,29 +233,30 @@ $$
|
||||
Gesamtfunktion
|
||||
|
||||
$$
|
||||
\Phi(x)=e^x + p_1(x) + p_2(x).
|
||||
\Phi(x)=f(x) + p_1(x) + p_2(x).
|
||||
$$
|
||||
|
||||
*Ableitungen einsetzen → Newton-Iteration mit $\Phi$ anstelle von $f$.*
|
||||
|
||||
> **Merke:** Die Wahl von $\beta$ ist ein Kompromiss zwischen Genauigkeit und numerischer Stabilität.
|
||||
|
||||
|
||||
## 6. Bivariate Lineare Programmierung
|
||||
1. Nebenbedingungen Aufbauen (Ungleichungen)
|
||||
2. Nach $y$ auflösen und einzeichnen (Aufpassen)
|
||||
3. Lösung finden
|
||||
2. Nach $y$ auflösen und einzeichnen (Aufpassen auf Umformung)
|
||||
3. Lösung finden, indem die zu Optimierte Funktion folgendermaßen umgestellt wird.
|
||||
|
||||
>Werden beide Seiten einer Ungleichung mit einer negativen Zahl multipliziert oder durch eine negative Zahl dividiert, muss das Ungleichheitszeichen umgekehrt werden (z.B. aus $<$ wird $>$)
|
||||
|
||||
$$min(x-y) \ |\ x=x_1, y=x_2$$
|
||||
$$x-y=c \Rightarrow y = x-c$$
|
||||
$$\lim_{c \ \rightarrow\ -\infty} \Rightarrow y=x+\infty $$
|
||||
*Wenn $max(c)$, dann muss limes gegen $+\infty$ gehen!*
|
||||
|
||||
Das sollte dann ne Gerade geben, $c$ ist normalerweise nicht $\infty$, da die *Feasable-Region* es beschränkt, dann nimmt man den Rand oder Eckpunkt.
|
||||
|
||||
>**Achtung**: Werden beide Seiten einer Ungleichung mit einer negativen Zahl multipliziert oder durch eine negative Zahl dividiert, muss das Ungleichheitszeichen umgekehrt werden (z.B. aus $<$ wird $>$)
|
||||
|
||||
## 7. Reelwertige Optimierung in N Dimensionen
|
||||
|
||||
$$f(x_1, x_2,..., x_n)$$
|
||||
|
||||
$$ f'(x) \longrightarrow \nabla f(x)$$
|
||||
$$f''(x) \longrightarrow H$$
|
||||
|
||||
### 7.2 Downhill-Simplex
|
||||
|
||||
Besteht aus n+1 Punkten
|
||||
|
Loading…
x
Reference in New Issue
Block a user