Code-Expert Tipps
- Index Search in an almost sorted Array
- Ähnlich wie Aufgabe 4.4
- Ticket Shop:
- DP
- Laufzeit hat jeden Parameter aus der Angabe einmal → Teilproblem mit der vollständigen Parameterisierung
- Zum debuggen ev. temporär Arrays importieren und deepToString verwenden
Allgemein
Schritte
- Dimension
- Teilproblem
- Rekursionsformel (Elemente in der DP Table berechnen aus vorherigen Einträgen)
- Berechnungsreihenfolge
- Anzahl und Laufzeit (Ziel der Laufzeit pro Element ist )
Bekannte Probleme und Takeways
Sonstiges
- Memoization
- DP braucht Rekursionsformel, dann ist Bottom-up und Memoization beides möglich. Siehe Bottom-up vs Memoization.jpg
- DP Tabelle durch Rückverfolgung
// erlaubt
Integer.MAX_VALUE
Math.min()Bekannte Probleme
Jump-Game
(Definition 2.1)
Zahl im Array gibt erlaubte maximale Anzahl an Sprüngen an, Ziel ist, mit möglichst wenigen Schritten an das letzte Element zu kommen.
-
Teilproblem: DP(i): min. Anzahl Sprünge um Position i zu erreichen. i … Parametrisierung
-
Dimension: DP(1…n), nur ein Parameter, also nur eine Dimension
-
Rekursionsformel:
Base Case: DP(1)=0 wir starten mit Position 1, und um die zu erreichen braucht man also 0 Schritte
DP(i) = min{ DP(j)+1 | j+ i, 1 }
-
Berechnungsreihenfolge: aufsteigend
for i=1...n:
Compute DP(i)- Lösung Extrahieren: DP(n)
- Anzahl Einträge in der DP-Tabelle: n Laufzeit pro Eintrag: O(n) Gesamtlaufzeit:
Something
DP(i) = Max. erreichbarer Index in i Sprüngen
DP(0)=1 DP(i)=max{k+A(k) | DP(i-2) k DP(i-1)}
Coin Conversion
Siehe 06 Sheet
Längste gemeinsame Teilfolge
Definition 2.2, zweidimensional
- Teilproblem: L(i,j) = Länge einer LGT von ( und ) hier wieder basically Parameterisierung
- Rekursionformel:
Editierdistanz
- Teilproblem: ED(i,j) = Editierdistanz von () und ()
- Rekursionsformel: (und zusätzlich Base Case nicht vergessen) $$ ED(i,j) = \min \begin{cases} ED(i-1, j) + 1, \[6pt] ED(i, j-1) + 1, \[6pt] ED(i-1, j-1) + \begin{cases} 1, & \text{falls } a_i \neq b_j \text{ ist}, \[4pt] 0, & \text{falls } a_i = b_j \text{ ist}. \end{cases} \end{cases}