Dynamische Programmierung Prüfungsfragen

Eine Sammlung von Prüfungsfragen zur dynamischen Programmierung, die häufige Konzepte und Algorithmen abdeckt, die für Studierende in Deutschland relevant sind.

MaxDragon9b·48 flashcards·48 vragen·1 weergaven
Studiumcomputer_sciencealgorithms
0
Ken ik
1 / 48
0
Aan het leren
Voorkant

Was ist dynamische Programmierung?

Tik om om te draaien
Achterkant

Ein Algorithmusansatz zur Lösung komplexer Probleme, indem sie in einfachere Teilprobleme zerlegt werden.

Tik om om te draaien
Ken ik
Aan het leren

Quiz(48 vragen)

Vraag 1 van 48

1. Was beschreibt das Rucksackproblem?

Termen in deze set(48)

Grundlagen der dynamischen Programmierung(16)

Was ist dynamische Programmierung?

Ein Algorithmusansatz zur Lösung komplexer Probleme, indem sie in einfachere Teilprobleme zerlegt werden.

Nenne die Hauptmerkmale dynamischer Programmierung.

Optimalitätsprinzip, Überlappung der Teilprobleme, Speicherung von Teillösungen.

True or False: Dynamische Programmierung verwendet keine Rekursion.

False: Sie kann rekursive Ansätze nutzen, oft in Kombination mit Memoisierung.

Fülle die Lücke: Dynamische Programmierung ist besonders nützlich bei __________.

Optimierungsproblemen mit überlappenden Teilproblemen.

Was sind die zwei Hauptansätze der dynamischen Programmierung?

Top-Down mit Memoisierung und Bottom-Up Ansatz.

Vergleiche: Rekursion und dynamische Programmierung.

Rekursion: einfache Implementierung, ineffizient bei überlappenden Teilproblemen. Dynamische Programmierung: optimiert durch Speicherung von Lösungen.

Was beschreibt das Optimalitätsprinzip?

Die optimale Lösung eines Problems enthält optimale Lösungen seiner Teilprobleme.

Erkläre den Begriff 'Memoisierung'.

Speichern der Ergebnisse von bereits berechneten Teilproblemen, um wiederholte Berechnungen zu vermeiden.

Nenne ein Beispiel für ein Problem, das mit dynamischer Programmierung gelöst werden kann.

Das Rucksackproblem oder das Fibonacci-Zahlen-Problem.

Wie wird die Laufzeit von dynamischen Programmieralgorithmen oft beschrieben?

Oft polynomial, abhängig von der Anzahl der Teilprobleme und deren Berechnungsaufwand.

Was ist der Unterschied zwischen Top-Down und Bottom-Up?

Top-Down: Rekursion mit Memoisierung. Bottom-Up: Iterative Lösung, beginnt mit den kleinsten Teilproblemen.

Zähle die Schritte zur Lösung eines Problems mit dynamischer Programmierung auf.

1. Problem zerlegen. 2. Teilprobleme lösen. 3. Lösungen speichern. 4. Endgültige Lösung zusammenstellen.

True or False: Dynamische Programmierung ist immer schneller als naive Rekursion.

True: Sie reduziert die Anzahl der Berechnungen erheblich durch Speicherung von Lösungen.

Was ist der 'Zustandsraum' in der dynamischen Programmierung?

Die Menge aller möglichen Zustände, die zur Lösung des Problems betrachtet werden.

Erkläre den Begriff 'Tabellierung'.

Das Erstellen einer Tabelle zur Speicherung von Teillösungen, typischerweise in einem Bottom-Up Ansatz.

Wie beeinflusst die Überlappung der Teilprobleme die Effizienz?

Erlaubt die Wiederverwendung bereits berechneter Ergebnisse, wodurch die Laufzeit erheblich reduziert wird.

Anwendungsbeispiele und Algorithmen(16)

Was ist das Rucksackproblem?

Ein Optimierungsproblem, bei dem man eine begrenzte Kapazität hat und die maximale Wertsumme von Gegenständen bestimmen muss. - Eingeschränkte Kapazität - Maximierung des Wertes.

Wie löst man das Rucksackproblem?

Durch die Erstellung einer Tabelle, die die maximalen Werte für unterschiedliche Gewichte speichert. Dynamische Programmierung ermöglicht es, Teilprobleme zu lösen und zu kombinieren.

Was beschreibt die Fibonacci-Folge?

Eine mathematische Folge, bei der jede Zahl die Summe der beiden vorherigen ist: F(n)=F(n−1)+F(n−2)\displaystyle F(n) = F(n-1) + F(n-2). Verwendung in dynamischer Programmierung zur Vermeidung redundanter Berechnungen.

Was ist das Longest Common Subsequence Problem?

Ein Problem, bei dem die längste Teilfolge von zwei Sequenzen gefunden werden soll, die in der gleichen Reihenfolge erscheinen, jedoch nicht zwingend zusammenhängend sind.

Vergleiche rekursive und dynamische Ansätze.

Rekursiv: kann viele redundante Berechnungen durchführen. Dynamisch: speichert bereits berechnete Ergebnisse, spart Zeit und Ressourcen.

Was ist das Matrix-Kettenmultiplikationsproblem?

Ein Optimierungsproblem, bei dem die Anzahl der Matrizenmultiplikationen minimiert werden muss. Es verwendet dynamische Programmierung, um die besten Klammerungen zu finden.

Fülle die Lücke: Die dynamische Programmierung ist besonders nützlich bei Problemen mit _________.

Überlappenden Teilproblemen und optimalen Teilstrukturen.

Wie funktioniert die Editierdistanz?

Bestimmt die minimale Anzahl an Operationen (Einfügen, Löschen, Ersetzen), um eine Zeichenkette in eine andere zu transformieren. Dynamische Programmierung wird verwendet, um die Kosten zu berechnen.

Was ist das Knapsack Problem?

Ein Problem, bei dem man eine Auswahl von Objekten in einen Rucksack mit begrenztem Gewicht treffen muss, um den maximalen Wert zu erreichen.

Gibt es eine optimale Lösung für das Rucksackproblem?

Ja, durch dynamische Programmierung kann eine optimale Lösung gefunden werden, die alle möglichen Kombinationen berücksichtigt.

Was stellt der Bellman-Ford-Algorithmus dar?

Ein Algorithmus zur Berechnung der kürzesten Wege in einem gewichteten Graphen mit negativen Gewichten. Er nutzt dynamische Programmierung zur Aktualisierung der Entfernungen.

Was ist das All-Pairs Shortest Paths Problem?

Ziel ist es, die kürzesten Wege zwischen allen Paaren von Knoten in einem Graphen zu finden. Der Floyd-Warshall-Algorithmus ist ein Beispiel, der dynamische Programmierung verwendet.

Was bedeutet 'Memoization'?

Eine Technik in der dynamischen Programmierung, die bereits berechnete Ergebnisse speichert, um wiederholte Berechnungen zu vermeiden.

Erläutere das Subset-Sum Problem.

Fragt, ob eine Teilmenge einer Menge die Summe eines bestimmten Ziels erreicht. Dynamische Programmierung hilft, alle möglichen Summen zu überprüfen.

Was ist das Problem der längsten monotonen Teilfolge?

Findet die längste Teilfolge in einer Sequenz, die nicht abnimmt. Dynamische Programmierung speichert die maximalen Längen für Teilsequenzen.

Vergleiche das Unbounded Knapsack Problem mit dem 0-1 Knapsack Problem.

Unbounded: Man kann unendlich viele Instanzen jedes Objekts nehmen. 0-1: Jedes Objekt kann nur einmal genommen werden.

Komplexität und Optimierung(16)

Was beschreibt die Zeitkomplexität?

Die Zeitkomplexität beschreibt, wie die Laufzeit eines Algorithmus in Abhängigkeit von der Eingabemenge wächst.

Was ist die Speichereffizienz?

Die Speichereffizienz bewertet, wie viel zusätzlicher Speicher ein Algorithmus benötigt, um seine Berechnungen durchzuführen.

Fülle die Lücke: Dynamische Programmierung reduziert die __________ von rekursiven Algorithmen.

Redundanz und damit die Laufzeit.

Was ist der Unterschied zwischen polynomialer und exponentieller Laufzeit?

Polynomiale Laufzeit ist effizienter als exponentielle Laufzeit, da letztere stark mit der Eingabegröße wächst.

True or False: Dynamische Programmierung erhöht immer die Speichereffizienz.

False: Sie erhöht oft den Speicherbedarf durch die Speicherung von Zwischenlösungen.

Was ist der Zweck von Memoization?

Memoization speichert bereits berechnete Werte, um redundante Berechnungen zu vermeiden und die Laufzeit zu verbessern.

Beispiel: Fibonacci-Zahlen mit dynamischer Programmierung.

F(n) = F(n-1) + F(n-2). Speicherung der Ergebnisse reduziert die Laufzeit auf O(n).

Was sind die drei Hauptschritte bei der Analyse eines Algorithmus?

1. Identifikation der Grundoperationen 2. Bestimmung der Laufzeit 3. Analyse des Speicherbedarfs.

Fülle die Lücke: Die Laufzeit eines DP-Algorithmus ist oft __________ im Vergleich zu rekursiven Ansätzen.

signifikant geringer

Was ist der Einfluss der Eingabedimension auf die Komplexität?

Die Anzahl der Dimensionen kann die Laufzeit exponentiell erhöhen, z.B. bei mehrdimensionalen Problemen.

Was sind die typischen Laufzeitkomplexitäten von DP-Algorithmen?

O(n), O(n^2), O(n*m) sind häufig, je nach Problemstellung.

Vergleiche die Laufzeit von DP und brute-force.

DP: O(n^2); Brute-force: O(2^n). DP ist effizienter als brute-force.

Was ist eine gemeinsame Fallstrick in der DP-Analyse?

Unterschätzung der benötigten Speicherressourcen, besonders bei großen Eingaben.

Wie bewertet man asymptotische Laufzeit?

Man betrachtet das Verhalten der Laufzeit für große Eingabewerte, oft durch Big-O-Notation.

Was bedeutet 'Bottom-Up'-Ansatz in der DP?

Er beginnt mit den einfachsten Teilproblemen und baut die Lösung schrittweise auf.

Was ist der Vorteil der Tabulation?

Tabulation ermöglicht die Berechnung aller Teilprobleme in einer Tabelle, wodurch die Lösung effizient abgerufen werden kann.

Vragen in deze set(48)

1. Was beschreibt das Rucksackproblem?

A.Ein Optimierungsproblem zur Maximierung des Werts bei begrenztem Gewicht.
B.Ein Algorithmus zur Sortierung von Zahlen.
C.Ein Problem zur Berechnung der Fibonacci-Zahlen.
D.Ein Verfahren zur Analyse von Graphen.

2. Was ist der Hauptvorteil der dynamischen Programmierung?

A.Reduzierung der Berechnungszeit durch Speicherung von Teillösungen
B.Komplette Vermeidung von Rekursion
C.Maximierung des Speicherplatzbedarfs
D.Einfache Implementierung ohne Planung

3. Was beschreibt die Laufzeit eines Algorithmus in der besten, schlechtesten und durchschnittlichen Fallanalyse?

A.Die Zeitkomplexität
B.Die Speicherkomplexität
C.Die Rekursionskomplexität
D.Die Eingabekomplexität

4. Wie wird die optimale Lösung des Rucksackproblems gefunden?

A.Durch Erstellen einer Tabelle für maximale Werte.
B.Durch zufällige Auswahl von Objekten.
C.Durch vollständige Auflistung aller möglichen Kombinationen.
D.Durch Anwendung von Sortieralgorithmen.

5. Welches Problem kann nicht mit dynamischer Programmierung gelöst werden?

A.Das Rucksackproblem
B.Das Fibonacci-Zahlen-Problem
C.Das Sortieren einer Liste
D.Das längste gemeinsame Teilwort

6. Was bedeutet eine exponentielle Laufzeit von O(2^n) für große n?

A.Die Laufzeit wächst schnell und ist ineffizient.
B.Die Laufzeit ist konstant.
C.Die Laufzeit wächst linear.
D.Die Laufzeit ist immer besser als polynomiale Laufzeit.

7. Was charakterisiert die Fibonacci-Folge?

A.Jede Zahl ist die Summe der beiden vorherigen Zahlen.
B.Jede Zahl ist das Quadrat der vorherigen.
C.Die Folge ist eine geometrische Reihe.
D.Die Zahlen sind gleichmäßig verteilt.

8. Was beschreibt die Begriffsdefinition von Memoisierung?

A.Das Speichern von Ergebnissen früherer Berechnungen
B.Das Erstellen einer Tabelle für komplexe Probleme
C.Die Verwendung von Schleifen zur Vereinfachung von Rekursion
D.Das Aufteilen von Problemen in unabhängige Teile

9. Was ist ein Beispiel für einen Algorithmus mit polynomialer Laufzeit?

A.Suchen in einer sortierten Liste mit binärer Suche
B.Berechnung der Fibonacci-Zahlen mit rekursiver Methode
C.Brute-Force-Lösung des Knapsack-Problems
D.Suchen in einer unsortierten Liste

10. Was ist das Ziel des Longest Common Subsequence Problems?

A.Die längste Teilfolge in zwei Sequenzen zu finden.
B.Die kürzeste Distanz zwischen zwei Punkten zu berechnen.
C.Die maximale Anzahl an Objekten in einem Rucksack zu bestimmen.
D.Die Anzahl der verschiedenen Permutationen zu zählen.

11. Wie wird der Bottom-Up Ansatz charakterisiert?

A.Er löst Probleme durch Rekursion und Memoisierung
B.Er beginnt mit den größten Teilproblemen und arbeitet nach unten
C.Er beginnt mit den kleinsten Teilproblemen und arbeitet nach oben
D.Er verwendet keine Speicherstrategien

12. Fülle die Lücke: Die Hauptidee der dynamischen Programmierung ist es, Probleme in __________ zu zerlegen.

A.Teilprobleme
B.Subprobleme
C.Komplexe Probleme
D.Rekursive Probleme

13. Welcher Vorteil hat die dynamische Programmierung gegenüber rekursiven Ansätzen?

A.Sie speichert bereits berechnete Ergebnisse.
B.Sie benötigt keine Speicherung von Variablen.
C.Sie führt weniger Berechnungen durch.
D.Sie ist immer schneller als rekursive Methoden.

14. Was ist ein Beispiel für ein Optimierungsproblem?

A.Das Finden des kürzesten Weges in einem Graphen
B.Das Erstellen einer Datenbankabfrage
C.Das Berechnen von Primzahlen
D.Das Sortieren einer Liste von Zahlen

15. Was ist der Zweck des Bottom-Up-Ansatzes in der dynamischen Programmierung?

A.Er berechnet die Lösung von unten nach oben und verwendet vorherige Ergebnisse.
B.Er verwendet zufällige Berechnungen.
C.Er verarbeitet Daten in zufälliger Reihenfolge.
D.Er ist nicht effizient.

16. Was ist das Matrix-Kettenmultiplikationsproblem?

A.Es minimiert die Anzahl der Matrizenmultiplikationen.
B.Es berechnet die Determinante einer Matrix.
C.Es ordnet Matrizen in aufsteigender Reihenfolge.
D.Es findet die Inverse einer Matrix.

17. Welches Merkmal ist nicht typisch für dynamische Programmierung?

A.Optimalitätsprinzip
B.Rekursive Abhängigkeit ohne Speicherung
C.Überlappung der Teilprobleme
D.Speicherung von Teillösungen

18. Was ist eine häufige Falle bei der Analyse der Speicherkomplexität von DP-Algorithmen?

A.Unterschätzung des benötigten Speichers.
B.Überbewertung des benötigten Speichers.
C.Keine Berücksichtigung von Zwischenspeicher.
D.Vernachlässigung der Eingabedimension.

19. Die dynamische Programmierung ist besonders nützlich bei Problemen mit _________.

A.Überlappenden Teilproblemen.
B.Eindeutigen Lösungen.
C.Einfachen Berechnungen.
D.Liniengrafen.

20. Wie beeinflusst die Überlappung der Teilprobleme die Effizienz eines Algorithmus?

A.Erhöht den Zeitaufwand für Berechnungen
B.Reduziert den Speicherverbrauch
C.Erlaubt die Wiederverwendung bereits berechneter Ergebnisse
D.Hat keinen Einfluss auf die Effizienz

21. Was ist eine wichtige Technik zur Speichereffizienz in dynamischer Programmierung?

A.Memoization
B.Iteration
C.Brute-Force
D.Rekursion

22. Wie funktioniert die Editierdistanz?

A.Sie zählt die minimalen Operationen zur Umformung einer Zeichenkette.
B.Sie misst die Ähnlichkeit zwischen zwei Zahlen.
C.Sie berechnet die Anzahl der Zeichen in einer Kette.
D.Sie findet die kürzeste Route in einem Graphen.

23. Was ist der erste Schritt bei der Anwendung dynamischer Programmierung?

A.Die optimale Lösung direkt berechnen
B.Das Problem in Teilprobleme zerlegen
C.Eine Tabelle zur Speicherung erstellen
D.Die maximale Laufzeit bestimmen

24. Welche Laufzeit hat ein DP-Algorithmus im Vergleich zu einem Brute-Force-Algorithmus?

A.O(n^2) für DP, O(2^n) für Brute-Force
B.O(n) für DP, O(n^2) für Brute-Force
C.O(2^n) für beide
D.O(log n) für DP, O(n) für Brute-Force

25. Was beschreibt das Knapsack Problem?

A.Die Auswahl von Objekten mit maximalem Wert bei Gewichtsbeschränkung.
B.Die Berechnung der Anzahl von Kombinationen.
C.Die Sortierung von Objekten nach Gewicht.
D.Die Suche nach dem schwersten Objekt.

26. True or False: Die Laufzeitkomplexität dynamischer Programmierungen ist immer konstant.

A.True
B.False
C.Es hängt vom Algorithmus ab
D.Es ist im Allgemeinen linear

27. Was bezeichnet man als Tabulation in der dynamischen Programmierung?

A.Das Speichern aller Teilprobleme in einer Tabelle.
B.Die Verwendung von rekursiven Funktionsaufrufen.
C.Die zufällige Auswahl von Algorithmen.
D.Die Berechnung ohne Speicherung.

28. Gibt es eine optimale Lösung für das Rucksackproblem?

A.Ja, durch dynamische Programmierung.
B.Nein, es kann keine optimale Lösung geben.
C.Ja, aber nur durch brutale Kraft.
D.Nein, nur Näherungen sind möglich.

29. Welcher Ansatz verwendet typischerweise Rekursion?

A.Bottom-Up
B.Top-Down
C.Iterative Lösung
D.Greedy-Ansatz

30. Wie wird die asymptotische Laufzeit für große Eingabewerte bewertet?

A.Durch Big-O-Notation
B.Durch Durchschnittswerte
C.Durch empirische Tests
D.Durch Zufallsanalyse

31. Was ist der Bellman-Ford-Algorithmus?

A.Ein Algorithmus zur Berechnung der kürzesten Wege in gewichteten Graphen.
B.Ein Verfahren zur Sortierung von Graphen.
C.Ein Algorithmus zur Berechnung der maximalen Flüsse.
D.Ein Verfahren zur Erkennung von Zyklen in Graphen.

32. Welches ist kein typisches Beispiel für dynamische Programmierung?

A.Das Knapsack-Problem
B.Das Longest Common Subsequence-Problem
C.Das Finden der maximale Summe in einer Liste
D.Das Suchen eines Wertes in einer sortierten Liste

33. Welches ist kein Vorteil der dynamischen Programmierung?

A.Verringerung der Laufzeit durch Vermeidung redundanter Berechnungen.
B.Erhöhung des Speicherbedarfs.
C.Ermöglicht die Lösung komplexer Probleme.
D.Einfachere Implementierung als Brute-Force.

34. Was ist das All-Pairs Shortest Paths Problem?

A.Das Finden der kürzesten Wege zwischen allen Knotenpaaren.
B.Die Berechnung der maximalen Distanz in einem Graphen.
C.Die Ermittlung des schwersten Knoten in einem Graphen.
D.Die Zählung der Kanten in einem Graphen.

35. Was ist eine wichtige Eigenschaft von dynamischen Programmieralgorithmen?

A.Sie sind immer effizienter als bruteforce Ansätze
B.Sie sind nicht in der Lage, rekursive Ansätze zu nutzen
C.Sie erfordern immer eine vollständige Tabelle zur Speicherung
D.Sie sind unabhängig von der Problemgröße

36. Welches Problem ist ein typisches Beispiel für dynamische Programmierung?

A.Das Knapsack-Problem
B.Die lineare Suche
C.Die binäre Suche
D.Das Sortieren von Daten

37. Was bedeutet 'Memoization' in der dynamischen Programmierung?

A.Das Speichern bereits berechneter Ergebnisse.
B.Das Zählen der Berechnungsoperationen.
C.Das Erstellen von Zufallszahlen.
D.Das Vergleichen von Ergebnissen.

38. Was beschreibt das Optimalitätsprinzip am besten?

A.Die optimale Lösung ist eine Kombination aus suboptimalen Lösungen
B.Die optimale Lösung eines Problems enthält optimale Lösungen seiner Teilprobleme
C.Es gibt immer mehrere optimale Lösungen
D.Die optimale Lösung kann nur durch brute-force gefunden werden

39. Was ist die Auswirkung der Eingabedimension auf die Komplexität?

A.Kann die Laufzeit exponentiell erhöhen.
B.Hat keinen Einfluss.
C.Reduziert die Laufzeit.
D.Erhöht die Speichereffizienz.

40. Erläutere das Subset-Sum Problem.

A.Es fragt, ob eine Teilmenge einer Menge eine bestimmte Summe erreicht.
B.Es beschreibt die Anzahl der möglichen Teilmengen.
C.Es misst die Distanz zwischen zwei Summen.
D.Es zählt die Elemente in einer Menge.

41. Wie nennt man die Technik, bei der eine Tabelle verwendet wird, um Ergebnisse zu speichern?

A.Memoisierung
B.Tabellierung
C.Dynamische Speicherung
D.Rekursive Speicherung

42. Was beschreibt eine rein rekursive Lösung im Vergleich zu einer DP-Lösung?

A.Sie hat oft eine höhere Laufzeit aufgrund von Redundanz.
B.Sie ist immer effizienter.
C.Sie benötigt weniger Speicher.
D.Sie ist einfacher zu verstehen.

43. Was ist das Problem der längsten monotonen Teilfolge?

A.Es findet die längste nicht-abnehmende Teilfolge in einer Sequenz.
B.Es zählt die Anzahl der monotonen Funktionen.
C.Es sucht die kürzeste Teilfolge in einer Sequenz.
D.Es berechnet die maximale Länge einer Sequenz.

44. Was ist eine der Hauptanwendungen der dynamischen Programmierung?

A.Optimierung von Routen
B.Sortierung von Daten
C.Grafikrendering
D.Suchalgorithmen

45. Welche Eigenschaft hat ein Algorithmus mit linearer Laufzeit?

A.Die Laufzeit wächst proportional zur Eingabemenge.
B.Die Laufzeit ist konstant.
C.Die Laufzeit wächst exponentiell.
D.Die Laufzeit ist nicht vorhersehbar.

46. Vergleiche das Unbounded Knapsack Problem mit dem 0-1 Knapsack Problem.

A.Unbounded erlaubt unendliche Instanzen, 0-1 nur einmalige.
B.Unbounded ist immer einfacher zu lösen.
C.0-1 hat keine Gewichtsbeschränkungen.
D.Unbounded hat immer eine optimale Lösung.

47. Welcher der folgenden Ansätze ist kein typischer Bestandteil der dynamischen Programmierung?

A.Top-Down mit Memoisierung
B.Bottom-Up Ansatz
C.Brute-Force-Ansatz
D.Optimierungsansatz

48. Was beschreibt die Speichereffizienz in der dynamischen Programmierung?

A.Wie viel zusätzlicher Speicher ein Algorithmus benötigt
B.Die maximale Laufzeit eines Algorithmus
C.Die Anzahl der verwendeten Variablen
D.Die Anzahl der Rekursionen die ein Algorithmus benötigt

Gerelateerde sets

Maak je eigen studieset

Upload een PDF, plak je notities of beschrijf een onderwerp – AI genereert flashcards, quizzen en meer in seconden.