Greedy Algorithmen Flashcards
1
Q
Wie funktionieren Greedy Algorithmen?
A
- Fallen unter die selbe Kategorie wie Probleme der dynamischen Programmierung
- In jedem Schritt wird die lokale beste Entscheidung getroffen um ein globales Problem zu lösen
- Dabei wird nicht auf die Konsequenzen “in der Zukunft” rücksicht genommen
2
Q
Wie sind die 4 Schritte in einem Greedy Algorithmus?
A
- Greedy Algorithmen bestehen aus 4 Schritten
1. Initialisierung: Setzen Sie den Anfangszustand des Problems.
2. Auswählen: Wählen Sie die beste verfügbare Option aus.
3. Anwenden: Führen Sie die ausgewählte Option aus und aktualisieren Sie den Zustand des Problems.
4. Überprüfen: Überprüfen Sie, ob das Ziel erreicht wurde. Wenn ja, beenden Sie den Algorithmus. Andernfalls gehen Sie zu Schritt 2 zurück.
3
Q
Wann sollte man Greedy-Algorithmen als Lösung eines Problems nutzen?
A
- Greedy-Algorithmen sind besonders nützlich, wenn das Problem in Teilprobleme unterteilt werden kann
- Diese müssen unabhängig voneinander lösbar sein
- Dann kann ein Greedy-Algorithmus schnell eine Lösung finden
- Eine Garantie für die optimale Lösung bei Greedy-Algorithmus ist nicht gegeben
4
Q
Was ist ein minimaler Spannbaum (MST)?
A
- Ein Teilgraph eines ungerichteten, gewichteten Graphen
- Dieser verbindet alle Knoten auf die effizienteste Weise
5
Q
Wie funktioniert Prim’s Algorithmus?
A
- Wähle einen beliebigen Knoten aus dem Graphen und füge ihn zum minimalen Spannbaum hinzu.
- Finde die Kante mit dem geringsten Gewicht, die einen Knoten im minimalen Spannbaum mit einem Knoten außerhalb des Spannbaums verbindet.
- Füge den Knoten, der an der anderen Seite der Kante liegt, zum minimalen Spannbaum hinzu und füge die Kante selbst hinzu.
- Wiederhole Schritt 2 und 3, bis alle Knoten des Graphen im minimalen Spannbaum enthalten sind.
* Laufzeit: Abhängig der Datenstruktur, aber meist O(E log V), wobei E die Anzahl der Kanten und V die Anzahl der Knoten im Graphen ist.
6
Q
Wie funktioniert Kruskal’s Algorithmus?
A
- Speichere alle Kanten ab und sortiere sie aufsteigend
- Markiere alle Kanten nacheinander, wenn sie keinen Kreis bilden
* Laufzeit:Abhängig der Datenstruktur, aber meist O(E log E), wobei E die Anzahl der Kanten im Graphen ist.
7
Q
Wie funktioniert Dijkstra’s Algorithmus?
A
- Setze den Abstandswert des Startknotens auf 0 und alle anderen Abstandswerte auf unendlich.
- Füge den Startknoten in eine Prioritätswarteschlange ein.
- Solange die Prioritätswarteschlange nicht leer ist, nimm den Knoten mit dem kleinsten Abstandswert aus der Warteschlange.
- Für jeden benachbarten Knoten des aktuellen Knotens aktualisiere den Abstandswert, wenn der Pfad über den aktuellen Knoten zum benachbarten Knoten kürzer ist als der bisher bekannte Pfad.
- Füge den benachbarten Knoten mit dem aktualisierten Abstandswert in die Prioritätswarteschlange ein.
- Wiederhole Schritt 3 bis 5, bis alle Knoten besucht wurden.
* Laufzeit: Abhängig der Datenstruktur, aber meist O((E+V)logV), wobei E die Anzahl der Kanten und V die Anzahl der Knoten im Graphen ist