Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:big_o:start [23.07.2020 11:17] – sbel | faecher:informatik:oberstufe:algorithmen:big_o:start [21.02.2024 10:28] (aktuell) – [Tabelle] Marco Kuemmel | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
<WRAP center round info 95%> | <WRAP center round info 95%> | ||
- | Darum einigt man sich, dass man bei der Beurteilung von Algorithmen bevorzugt den schlechtesten Fall (" | + | Darum einigt man sich, dass man bei der Beurteilung von Algorithmen bevorzugt den schlechtesten Fall (" |
</ | </ | ||
- | Der schlechteste Fall bei der binären Suche dauert 7ms, also 15 mal so lang. Die binäre Suche ist also 15 mal schneller als die einfache | + | Der schlechteste Fall bei der binären Suche dauert 7ms, also nur 1/15 mal so lang. Die binäre Suche ist also 15 mal schneller als die einfache |
- | ^Zahl der Elemente | + | ^ Zahl der Elemente |
- | |100 | 100ms | 7ms | | + | | 100 | 100ms |
- | |10.000| 10 Sekunden | 14ms | | + | | 10.000 |
- | |1.000.000.000 | 11 Tage | 32ms | | + | | 1.000.000 |
Man sieht, dass die Laufzeiten **mit der Zunahme der Zahl der Elemente sehr unterschiedlich zunehmen**. | Man sieht, dass die Laufzeiten **mit der Zunahme der Zahl der Elemente sehr unterschiedlich zunehmen**. | ||
- | Um diesen Umstand darzustellen, | + | <WRAP center round info 95%> |
+ | Um diesen Umstand darzustellen, | ||
+ | </ | ||
- | Für unser Problem | + | Für unser Beispiel |
^Einfache Suche ^ Binäre Suche ^ | ^Einfache Suche ^ Binäre Suche ^ | ||
| O(n) | O(log n) | | | O(n) | O(log n) | | ||
- | + | ===== Übung ===== | |
+ | |||
+ | Du sollst auf einem Blatt Papier 16 rechteckige Kästchen erzeugen. Wie effizient sind die folgenden beiden Algorithmen? | ||
+ | |||
+ | - Du zeichnest mit einem Stift nacheinander Kästchen für Kästchen auf das Blatt. | ||
+ | - Du faltest das Blatt jeweils auf seine Hälfte und verwendest die Faltmarken als Ränder der Quadrate. | ||
+ | |||
+ | * Überlege zunächst, wie viele Operationen du für 16 Kästchen jeweils benötigst. | ||
+ | * Wie viele Operationen benötigt man, um 32 oder 64 Kästchen zu erzeugen? | ||
+ | * Wie effizient sind die beiden Vorgehensweisen in der Landau-Notation? | ||
+ | * Josephine sagt: " | ||
+ | |||
+ | |||
+ | ====== " | ||
+ | |||
+ | * //O(log n) - " | ||
+ | * //O(n) - " | ||
+ | * //O(n*log n)//, ein schneller Sortieralgorithmus | ||
+ | * //O(n^2)//, ein langsamer Sortieralgorithmus | ||
+ | * //O(n!)//, ein sehr langsamer Algorithmus (Problem des Handlungsreisenden, | ||
+ | |||
+ | ====== Zusammenfassung ====== | ||
+ | |||
+ | <WRAP center round info 95%> | ||
+ | * Die Geschwindigkeit eines Algorithmus wird **nicht** als Zeit (z. B. in Sekunden) angegeben, sondern durch die Betrachtung der **Zunahme der Anzahl der Operationen**. | ||
+ | * Wir schauen, wie schnell die Laufzeit zunimmt, wenn die Größe der Eingabe zunimmt. | ||
+ | * Die Laufzeit wird in der Landau Notation aufgeschrieben | ||
+ | </ | ||
+ | |||
+ | ====== Aufgaben ====== | ||
+ | |||
+ | Gib die Laufzeit der folgenden Probleme in Landau-Notation an (das Telefonbuch ist aus Papier). | ||
+ | |||
+ | * Finde die Telefonnummer einer Person mit bekanntem Namen | ||
+ | * Finde den Namen einer Person anhand einer bekannten Telefonnummer. | ||
+ | * Es sollen alle Namen und Telefonnummern eingelesen werden. | ||
+ | * Es sollen alle Namen und Telefonnummern von Personen eingelesen werden, deren Namen mit A beginnt. |