Zurück zur Übersicht

Begriff

Dynamic Programming

Computer Science Algorithms S3
1 Quelle 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Klingt nach Hollywood, ist aber nur schlaues Caching. Stell dir vor, ich frage: "Was ist 1 + 1 + 1 + 1?" Du zählst und sagst: "4". Jetzt schreibe ich noch eine "+ 1" dazu: "Was ist 1 + 1 + 1 + 1 + 1?" Du sagst sofort: "5". Warum? Du hast nicht von vorne angefangen zu zählen. Du hast dir das Ergebnis "4" gemerkt und einfach eins dazu addiert. Das ist Dynamic Programming: Komplexe Probleme in kleine Teilprobleme zerlegen, die Ergebnisse merken und wiederverwenden.

Merksatz: Eine Methode, um komplexe Probleme effizient zu lösen, indem man sie in überlappende Teilprobleme zerlegt und deren Lösungen speichert.


Quick-Check

  1. Der Name "Dynamic"?
    Der Erfinder Richard Bellman wählte den Namen in den 50ern, weil er "cool" klang und Forschungsgelder vom Militär sichern sollte. Es hat nichts mit "dynamisch" im Sinne von Bewegung zu tun.
  2. Ist es schwer?
    Ja, DP gilt als die schwerste Disziplin in Coding-Interviews. Das Schwierigste ist nicht das Coden, sondern zu erkennen, dass ein Problem mit DP lösbar ist ("Overlapping Subproblems").
  3. Unterschied zu Divide & Conquer?
    Bei Divide & Conquer (z.B. Mergesort) sind die Teilprobleme unabhängig. Bei DP überlappen sie sich (man braucht das gleiche Ergebnis immer wieder).