Algorithmenentwurf Flashcards
Indunkion, Iteration, Rekursion, Methoden des Algorithmen-Entwurfs, Korrektheit und Verifikation, Effizienz und Komplexität von Algorithmen
Welche Herangehensweisen, wie Befehlsfolgen organisiert sind, gibt es?
1
- Iterativ
- Rekursiv
- Induktiv
Was sind Iterative Algorithmen?
1
- for (i = 1; i<= n; i++) (…)
- Mithilfe von Iterationen
- zB For-Schleife
Was sind Rekursive Algorithmen?
1
- Rufen sich selbst auf, um Problem zu Lösen
- Art von Schleife
- Meist weniger effizient, da wiederholt gleiche Methode aufgerufen und Kontext gespeichert werden muss
- def Fakultaet(item n):
if n == 0 then return 1
else return Fakultaet(n-1) x n
Was sind induktive Algorithmen?
1
- oft in Beweisführung
- Problem in Teilprobleme zerlegt
- allgemeine Regel wird aus Basisfall und wiederholbaren Schlussfolgerungen abgeleitet
Welche sind die wesentlichen Paradigmen, nach denen Algorithmen entworfen werden?
2
- Greedy
- Divide and Conquer
- Dynamic Programming
Was ist das Greedy-Paradigma?
2
- jeder Schritt: lokal beste Entscheidung
- wählt Option, die momentan am vorteilhaftesten erscheint (ohne langfristige Konsequenz zu berücksichtigen)
Nenne Beispiele für Greedy-Algorithmen
2
- Dijkstra-Algorithmus
- Kruskal-Algorithmus
- Prim-Algorithmus
Was ist das Divide and Conquer Paradigma?
2
- Problem wird in Teilprobleme zerlegt und isoliert
- zB Liste in zwei Hälften geteilt und getrennt sortiert / nach etwas durchsucht; Später Vergleich der Ergebnisse
Was ist die dynamische Programmierung?
2
- Extremfall von Divide and Conquer
- Teilprobleme werden Reihenfolge nach gelöst (zunehmende Größe)
- Ergebnisse werden abgespeichert undw iederverwendet
Was ist der Unterschied zwischen Greedy-Algorithmus und dynamischer Programmierung?
2
- Greedy: immer Verbindung zu Knoten der momentan am nächsten liegt
- Dynamisch: immer globales Problem wird betrachtet, nicht lokal
Was sind mögliche Fehlerquellen in Algorithmen?
3
- Sprach- o. Syntaxfehler
- Logische o. semantische Fehler
- Endlosschleifen
Was sind Sprach- oder Syntaxfehler?
- Code entspricht nicht Regeln der Grammatik o. Programmiersprache
Was sind logische o. semantische Fehler?
3
- falsche Verwendung eines Ausdrucks
- Programm läuft, aber nicht erwartetes Ergebnis
Was sind Endlosschleifen?
3
- Nicht terminierende Schleifen
- unpräzise / fehlerhafte Definition des Abbruchkriteriums
Was ist die Vor- und Nachbedingung?
3
- Zustand der Daten vor und nach Ausführung des Algorithmus
Was sind Theorem-Beweiser?
3
- Theorem-Beweiser basieren auf Algorithmen
- Hilft, mathematische Sätze (halb-)automatisch zu beweisen
Was bedeutet “Total Korrekt”?
3
- Korrekt: Algorithmus produziert Ausgabe
- Terminierung: Algorithmus hält garantiert nach endlich vielen Schritten an