Update Summary

This commit is contained in:
DotNaos 2025-06-24 20:24:09 +02:00
parent 9dd8e8e334
commit 463936cfcf

View File

@ -5,15 +5,22 @@ $$self.address: A[i] $$
$$\longleftarrow prev.address \ | \ next.address\longrightarrow$$ $$\longleftarrow prev.address \ | \ next.address\longrightarrow$$
### Stack ### Stack
First-In; Last-Out First-In; Last-Out
Add: "Push"
Remove: "Pop"
### Queue
First-In; First-Out
Add: "Enqueue"
Remove: "Dequeue"
### Binary-Tree ### Binary-Tree
$$self.address : Value$$ $$self.address : Value$$
$$\rightarrow left.address : \rightarrow right.address$$ $$\leftarrow left.address : \rightarrow right.address$$
### Graphen ### Graphen
#### Adjazenzmatrix #### 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}}} \newcommand\T{\rlap{\text{to}}}
@ -31,20 +38,16 @@ $$
\end{array} \end{array}
$$ $$
#### Adjazenzliste #### Adjazenzliste
Von Spaltenheader zu allen elementen in der Spalte Der **Header-Knoten**, geht zu allen Knoten in der Spalte.
$$ $$
\begin{array} \begin{array}
& 1 & 2 & 3 & 4 \\ & 1 & 2 & 3 & 4 \\
\hline \hline
2 & 3 & 2 & 1 \\ 2 & 3 & 2 & 1 \\
4 \\ 4 \\
\end{array} \end{array}
$$ $$
## 2. Skipliste, Binary-Search-Tree, Shellsort ## 2. Skipliste, Binary-Search-Tree, Shellsort
### Skipliste ### 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} \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} \end{array}
$$ $$
### Binary Search Tree ### Binary Search Tree
>Linker Teilbaum *kleiner*, rechter Teilbaum *größer* >Linker Teilbaum *kleiner*, rechter Teilbaum *größer*
$$Tiefe = Max(\text{Anzahl Kanten})$$ $$Tiefe = Max(\text{Anzahl Kanten nach unten})$$
**Suchen** **Suchen**
Richtung? -> Vergleich von beiden Kinder knoten Richtung? -> Vergleich von beiden Kinder knoten
@ -123,10 +123,9 @@ $$
$$ $$
$$Parent: floor\left(\frac{2i}{2}\right)$$ $$Parent: floor\left(\frac{2i}{2}\right)$$
### Max/Min-Heap-Reparieren: ### Max/Min-Heap-Reparieren:
Man itereriert durch alle Element, ausgeschlossen die Blätter. Man iteriert durch alle Elemente, außer die Blätter.
Folgendes Schema: 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. >**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! 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 ... 2. (Abbruchbedingung), Gehe zum nächsten Element ...
1. Max-Heap: Wenn $element$ ist das **größte** von den drei: $max([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$ ist das **kleinste** von den drei: $min([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. 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 #### 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. 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 ## 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. 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. > 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 ## 5. Reelwertige Optimierung in einer Dimension
Bisektion mit Sampling. I.e. man macht Bisektion mehrere Male, mit anderen Intervallen. 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. 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]$$ 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. 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 ### Straf- (Penalty-) Funktionen
@ -223,9 +222,8 @@ Je größer $\beta$, desto stärker die Strafe ⇒ höhere Genauigkeit am Rand,
#### Beispiel #### Beispiel
$$ $$
\text{Min } e^x, \qquad 0 \le x \le 1. \text{Min } f(x), \qquad 0 \le x \le 1.
$$ $$
Strafterme Strafterme
$$ $$
@ -235,29 +233,30 @@ $$
Gesamtfunktion 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$.* *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 ## 6. Bivariate Lineare Programmierung
1. Nebenbedingungen Aufbauen (Ungleichungen) 1. Nebenbedingungen Aufbauen (Ungleichungen)
2. Nach $y$ auflösen und einzeichnen (Aufpassen) 2. Nach $y$ auflösen und einzeichnen (Aufpassen auf Umformung)
3. Lösung finden 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 ## 7. Reelwertige Optimierung in N Dimensionen
$$f(x_1, x_2,..., x_n)$$ $$f(x_1, x_2,..., x_n)$$
$$ f'(x) \longrightarrow \nabla f(x)$$ $$ f'(x) \longrightarrow \nabla f(x)$$
$$f''(x) \longrightarrow H$$ $$f''(x) \longrightarrow H$$
### 7.2 Downhill-Simplex ### 7.2 Downhill-Simplex
Besteht aus n+1 Punkten Besteht aus n+1 Punkten