Aufgabenstellung
Loading
Loading
Algorithmen sind endliche, eindeutige Handlungsvorschriften. Prüfungsrelevant sind Kontrollstrukturen, Rekursion, klassische Sortier- und Suchverfahren sowie die Beschreibung von Laufzeiten mit Big-O.
6Abschnitteca. 20Min Lesezeit4KompetenzenNiveauBasis 2 · Standard 2 · Vertiefung 2Stand 06/2026
Lesetiefe: Vertiefung
Schriftgröße: Standard
Modularisierung - Aufrufgraph
Übersetze den Pseudocode in Python: "Solange n > 1 wiederhole: wenn n gerade, n := n/2; sonst n := 3n+1. Zähle Schritte."
`def collatz_schritte(n: int) -> int:`
```python schritte = 0 while n > 1: n = n // 2 if n % 2 == 0 else 3 * n + 1 schritte += 1 return schritte ```
`collatz_schritte(6)` ergibt 8 (6,3,10,5,16,8,4,2,1).
Ergebnis: Die Funktion liefert die Länge der Collatz-Folge ab Startwert . Sie terminiert empirisch für alle bisher getesteten Werte - mathematisch unbewiesen!
Jedes Programm lässt sich aus Sequenz, Selektion und Iteration aufbauen - das ist das Theorem von Böhm/Jacopini.
Funktionen sind die wichtigste Abstraktionsstufe: gleiche Eingabe ergibt gleiche Ausgabe, ohne Seiteneffekte ist Testen einfach.
Modularisiere frühzeitig, damit jede Funktion einen einzigen klaren Zweck erfüllt.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine Python-Funktion `vokale_zählen(text)`, die die Anzahl der Vokale (a, e, i, o, u; gross/klein) zurückliefert. Demonstriere den Aufruf mit "Informatik".
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Böhm/Jacopini: Flow diagrams, Turing machines and languages with only two formation rules (CACM) · Python Software Foundation - Tutorial (PSF)
Rekursionsbaum von fib(4)
Rekursive Definition der Fakultät
Fibonacci-Rekurrenz
Implementiere `fib(n)` rekursiv und mit Memoization in Python.
```python def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) ``` Laufzeit mit .
```python from functools import lru_cache @lru_cache def fib(n): return n if n < 2 else fib(n-1)+fib(n-2) ``` Laufzeit , Speicher .
```python def fib(n): a, b = 0, 1 for _ in range(n): a, b = b, a+b return a ``` Laufzeit , Speicher .
Ergebnis: Rekursion ist elegant, aber ohne Caching zu langsam; Memoization oder Iteration sind die richtigen Lösungen für grosse .
Rekursion zerlegt ein Problem in eine kleinere Version desselben Problems plus einen Basisfall.
Der Call-Stack ist die Daten-struktur, die Rekursion überhaupt erst möglich macht.
Memoization speichert berechnete Werte und verwandelt exponentielle Rekursion in lineare Laufzeit.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine rekursive Python-Funktion `fakultät(n)`. Erläutere, warum sie bei in Python einen `RecursionError` auslösen kann.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (CLRS) Kap. 2-4 (MIT Press)
Logarithmisches Wachstum O(log n) bei wachsendem n
Mergesort - Divide-and-Conquer Baum
Quicksort - Partition mit Pivot
Mergesort-Rekurrenz und Lösung
Sortiere [38, 27, 43, 3, 9, 82, 10] mit Mergesort und protokolliere die Merge-Schritte.
Links [38,27,43,3] | Rechts [9,82,10].
[38,27] und [43,3] werden zu je [27,38] und [3,43] gemergt.
merge([27,38],[3,43]) = [3,27,38,43].
[9,82] und [10]; merge ergibt [9,10,82].
merge([3,27,38,43],[9,10,82]) = [3,9,10,27,38,43,82].
Ergebnis: Sortiertes Array [3, 9, 10, 27, 38, 43, 82]. Laufzeit .
Sortieren ist das Standardbeispiel, an dem alle Konzepte zusammenkommen: Verfahren, Komplexität, Speicher und Stabilität.
Mergesort - Divide-and-Conquer Baum
Mergesort teilt das Array bis auf Einzelelemente und fädelt sie sortiert zusammen - daher die garantiert logarithmische Tiefe.
Quicksort ist schnell, weil die Partition in-place arbeitet, aber er kann bei schlechter Pivotwahl quadratisch werden.
Quicksort - Partition mit Pivot
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Sortiere [5, 2, 9, 1, 5, 6] mit Insertion Sort und protokolliere die ersten drei Iterationen. Wie oft wird vergleichen und wie oft getauscht?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Knuth: The Art of Computer Programming, Vol. 3 - Sorting and Searching (Addison-Wesley) · OpenDSA - Sorting Algorithms (Virginia Tech)
Lineare vs. binäre Suche - Vergleichsschritte
Rekurrenz der binären Suche
Finde mit binärer Suche den Wert 23 im Array [3, 7, 12, 18, 23, 31, 47, 55].
low = 0, high = 7. Pivot mid = (0+7)/2 = 3 -> a[3] = 18 < 23 -> rechts weitersuchen.
low = 4, high = 7. mid = 5 -> a[5] = 31 > 23 -> links weitersuchen.
low = 4, high = 4. mid = 4 -> a[4] = 23 == Suchwert. Index 4 zurückgeben.
Ergebnis: Index 4 nach 3 Vergleichen; allgemein Schritte für Elemente.
Die binaere Suche ist das Schulbuchbeispiel für logarithmische Laufzeit.
Bei jeder Halbierung sinkt das Restproblem auf , , ... bis .
Auf unsortierten Daten musst du linear suchen oder zuerst sortieren - das kostet .
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Schreibe eine iterative binaere Suche in JavaScript. Wie viele Iterationen sind im Worst Case bei einer Million Elementen nötig?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: Sedgewick & Wayne: Algorithms, 4. Auflage (Addison-Wesley)
Mergesort - Divide-and-Conquer Baum
Wachstum der Komplexitätsklassen
Big-O Notation - obere asymptotische Schranke
Master-Theorem - Rekurrenzform für Divide-and-Conquer
Logarithmisches Wachstum O(log n) bei wachsendem n
Bestimme die Lösung der Rekurrenz mit dem Master-Theorem.
, , .
; also .
-> Fall 2 des Master-Theorems.
.
Ergebnis: Mergesort hat asymptotische Laufzeit im Worst, Average und Best Case.
Big-O sagt dir, wie sich eine Laufzeit verhält, wenn du die Eingabegröße verdoppelst.
Logarithmisches Wachstum O(log n) bei wachsendem n
Das Master-Theorem ist die schnellste Methode, Divide-and-Conquer-Rekurrenzen zu lösen.
Achte darauf, dass Big-O nur asymptotisch gilt - für kleine Eingaben kann ein quadratischer Algorithmus schneller sein als ein log-linearer.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Bestimme mit dem Master-Theorem die Lösung der Rekurrenzen und . Wie lautet die Komplexität jeweils?
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: CLRS: Introduction to Algorithms, Kapitel 3 und 4 (MIT Press)
Knapsack-DP-Tabelle (W=50)
DP-Rekurrenz für 0/1-Knapsack
Werte , Gewichte , Kapazität .
Tabelle der Größe ; erste Zeile/Spalte = 0.
Für jedes Item und jede Kapazität : , falls .
(Items 2 und 3).
Ergebnis: Maximaler Wert 220 EUR. Mit Backtracking auf der Tabelle lässt sich die optimale Auswahl rekonstruieren. Laufzeit - pseudo-polynomiell.
Greedy ist verführerisch einfach - aber nur bei matroidischen Problemen garantiert optimal.
DP ist die Klassiker-Antwort, wenn ein Problem optimale Teilstruktur und Überlappung hat.
Memoization spart Zeit, DP-Tabelle spart Stack - wähle nach Problem.
SRDP-Aufgaben
Aufgabenstellung
Typische Fehler
Aktive Wiederholung
Löse das 0/1-Knapsack-Problem mit Werten , Gewichten und Kapazität mittels DP-Tabelle.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Quellen: CLRS Kapitel 15 (DP) und 16 (Greedy) (MIT Press)
Belege & Quellen
Addison-Wesley
Virginia Tech