MINT lernen

Effizienz beurteilen

Welcher Algorithmus ist der beste — und für welche Daten eigentlich?

1

Kriterien für ein Urteil

„Effizient“ heißt: wenig Rechenzeit und wenig Speicher für die konkrete Aufgabe. Ein Urteil verbindet deshalb die Eigenschaften der Verfahren mit den Daten und ihrer Nutzung.

Die Verfahren des Kapitels im Vergleich
Verfahrenbester Fallungünstigster FallZusatzspeicherBesonderheit
lineare Suche\(O(1)\)\(O(n)\)\(O(1)\)jede Reihung
binäre Suche\(O(1)\)\(O(\log n)\)\(O(1)\)nur sortiert
Selectionsort\(O(n^2)\)\(O(n^2)\)\(O(1)\)höchstens \(n - 1\) Vertauschungen, nicht stabil
Insertionsort\(O(n)\)\(O(n^2)\)\(O(1)\)stabil, schnell bei fast sortierten Daten
Bubblesort mit Abbruch\(O(n)\)\(O(n^2)\)\(O(1)\)stabil, viele Vertauschungen
  • Wachstumsklasse:entscheidet bei großen \(n\) — gemessen im ungünstigsten Fall, weil er garantiert gilt.
  • Daten:Wie groß ist \(n\)? Sind die Daten vorsortiert? Wie groß ist der Wertebereich?
  • Nutzung:einmal oder sehr oft? Ein teurer Vorbereitungsschritt (z. B. Sortieren) verteilt sich auf viele Anfragen.
  • Speicher:reicht der Arbeitsspeicher für eine Kopie oder eine Markierungsreihung?
  • Weitere Kriterien:Konstanten bei kleinem \(n\), teure Schreibzugriffe, Stabilität, Verständlichkeit des Codes.
Herleitung:
\(k \cdot n \;\ge\; \dfrac{n(n-1)}{2} + k\,\bigl(\log_2 n + 1\bigr)\)
Ansatz

Links \(k\) lineare Suchen, rechts einmal einfach sortieren und \(k\) binäre Suchen (ungünstigster Fall, ohne Abrunden). Wann ist links mehr Arbeit?

\(k\,\bigl(n - \log_2 n - 1\bigr) \;\ge\; \dfrac{n(n-1)}{2}\)
umstellen

Alle Summanden mit \(k\) auf die linke Seite bringen.

\(k \;\ge\; \dfrac{n(n-1)}{2\,(n - \log_2 n - 1)}\)
\(:\,(\ldots)\)

Durch die Klammer teilen; sie ist für \(n \ge 4\) positiv.

\(k \;\gtrsim\; \dfrac{n}{2}\)
Ergebnis

Für große \(n\) ist \(\log_2 n\) gegen \(n\) vernachlässigbar. Beispiel \(n = 100\,000\): Sortieren lohnt sich erst ab etwa 50 000 Suchen.

2

Urteilen an Fällen

Lies den Fall, tippe auf den Kandidaten, den du für effizienter hältst, und decke dann mit ▶ die Aufwände auf. Die Balken sind logarithmisch: Jede Markierung bedeutet das Tausendfache. Spiele alle sechs Fälle durch.

Wer gewinnt?

Halte fest: Die bessere Wachstumsklasse gewinnt nur, wenn ihre Voraussetzungen erfüllt sind und sich ihr Mehraufwand (Sortieren, Zusatzspeicher) über die Nutzung auszahlt.

  • 1. Kriterium:nennen, woran gemessen wird — Vergleiche, Schreibzugriffe oder Speicher.
  • 2. Anwenden:für den Fall konkrete Zahlen oder Klassen bestimmen.
  • 3. Abwägen:Voraussetzungen und Zusatzkosten prüfen (sortiert? Speicher frei? wie oft?).
  • 4. Fazit:eine klare Entscheidung mit ihrer Grenze: „… solange weniger als \(\frac{n}{2}\) Suchen anfallen“.
Merke

Effizienz beurteilen = Wachstumsklasse im ungünstigsten Fall und Daten (Größe, Vorsortierung, Wertebereich) und Nutzung (einmal oder oft) und Speicher

3

Allgemeine Hinweise

Eine Zahl ist noch kein Urteil

„Braucht 190 Vergleiche“ beantwortet keine Beurteilungsfrage. Erst der Vergleich mit der Alternative und eine Begründung für die konkrete Situation machen daraus ein Urteil.

Den Sonderfall der Daten nutzen

Vorsortierte Daten, kleine Wertebereiche oder seltene Änderungen sind oft der Schlüssel: Sie machen ein sonst schwächeres Verfahren zum besten.

Voraussetzungen mitprüfen

Die binäre Suche braucht sortierte Daten, die Markierungsreihung einen kleinen Wertebereich. Wer nur die Klasse vergleicht, übersieht die versteckten Kosten.

Videos