• Keine Ergebnisse gefunden

Beuth Hochschule Zeitkomplexitäten in Groß-O-Notation WS17/18, S. 1

N/A
N/A
Protected

Academic year: 2021

Aktie "Beuth Hochschule Zeitkomplexitäten in Groß-O-Notation WS17/18, S. 1"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Beuth Hochschule Zeitkomplexitäten in Groß-O-Notation WS17/18, S. 1 Zeitkomplexitäten in Groß-O-Notation

Was bedeuten bestimmte Zeitkomplexitäten anschaulich?

Die folgende Tabelle stammt aushttp://de.wikipedia.org/wiki/Landau-Symbole#Beispiele_und_Notation und wurde nur geringfügig geändert und angepasst.

Seif(n) eine (Schrittzahl-) Funktion mit einem positiv-ganzzahligen Parametern (der die Problemgröße darstellt).

Notation Bedeutung Anschauliche Erklärung Ein Beispiel-Algorithmus mit dieser Zeikomplexität

fϵ O(1) f ist beschränkt

Alle Werte vonf liegen (unab- hängig vonn) unterhalb einer Konstanten.

Zugriff auf dien-te Komponente r[n] einer Reihungr.

fϵ O(log2(n)) f wächst logarithmisch

f wächst ungefähr um 1 wenn mann ver-2-facht .

Binäre Suche in einer sortierten Reihung der Längen.

fϵ O(√n) f wächst wie die Quadratwurzel- funktion

f wächst ungefähr auf das 2-fache, wenn mann ver-4-facht.

Naiver Primzahltest mittels Teilen durch jede ganze Zahl≤√n.

fϵ O(n) f wächst linear

f wächst ungefähr auf das 2-fache, wenn mann ver-2-facht.

Suche in unsortierter Reihung der Längen

fϵ O(n * log(n)) f wächst super-linear

Sehr gute Algorithmen zum Sor- tieren einer Reihung der Längen, z.B. Mergesort, Heapsort

fϵ O(n2) f wächst quadratisch

f wächst ungefähr auf das 4-fache, wenn mann ver-2-facht.

Einfache Algorithmen zum Sor- tieren einer Reihung der Länge n, z.B. Selectionsort.

fϵ O(2n) f wächst exponentiell

f wächst ungefähr auf das 2-fache, wenn mann um 1 erhöht.

Erfüllbarkeitsproblem der Aussa- genlogik (SAT) mittels exhausti- vem Verfahren

fϵ O(n!)

f wächst faktoriell ("wie die Fakultäts- funktion")

f wächst ungefähr auf das (n+1)-fache, wenn man n um 1 erhöht.

Problem des Handlungsreisenden

Erweitern Sie diese Tabelle um ein paar Zeilen, indem Sie die folgenden Aufgaben lösen.

Aufgabe-01: Füllen Sie die leeren Felder aus:

Angenommen die

Schrittzahl-Funktion f(n) wächst wie

Das bedeutet: Die Schrittzahl f(n) wächst ungefähr auf das 2-fache wenn man die Problemgröße n um folgenden Faktor vergrößert:

die 2-te Wurzel von n (Quadratwurzel) die 3-te Wurzel von n (Kubikwurzel) die 4-te Wurzel von n

die m-te Wurzel von n

(2)

S. 2, WS17/18 Zeitkomplexitäten in Groß-O-Notation Beuth-Hochschule Aufgabe-02: Füllen Sie die leeren Felder aus:

Angenommen die

Schrittzahl-Funktion f(n) wächst wie

Das bedeutet: Wenn man die Problemgröße n ver-2-facht, dann wächst die Schrittzahl f(n) ungefähr um den folgenden Faktor:

die 2-te Potenz von n (d.h. wie n2) die 3-te Potenz von n (d.h. wie n3) die 4-te Potenz von n (d.h. wie n4) die m-te Potenz von n (d.h. wie nm)

Wozu werden Zeitkomplexitäten in der Praxis benutzt?

Angenommen, für ein algorithmisches Problem gibt es mehrere Lösungen mit unterschiedlichen Zeit- komplexitäten. Wenn man dann eine dieser Lösungen konkret implementiert (z.B. in Java), dann sollte man in der Dokumentation der betreffenden Klasse(n) die Zeitkomplexität der Lösung angeben.

Andersherum: Wenn man z.B. eine Sammlungsklasse aus der Java-Standardbibliothek benutzen will (z.B. die KlasseArrayList oder die KlasseLinkedList), sollte man sich vorher die Zeitkomplexi- täten der wichtigsten Methoden (zum Einfügen, Suchen und Entfernen von Komponenten) in der Doku- mentation ansehen, um die richtige Klasse auszuwählen.

Es folgen hier ein paar Auszüge aus der Online-Dokumentation der Java-Standardklassen (Java Platform Standard Ed. 8), Hervorhebungen durch kursive Schrift wurden hier hinzugefügt:

Aus der Dokumentation der Klasse ArrayList<K>:

Thesize,isEmpty,get,set,iterator, andlistIterator operations run in constant time.

Theadd operation runs in amortized constant time, that is, adding n elements requires O(n) time. All of the other operations run in linear time (roughly speaking). The constant factor is low compared to that for theLinkedList implementation.

Aus der Dokumentation der Klasse LinkedList<K>:

All of the operations perform as could be expected for a doubly-linked list. Operations that index into the list will traverse the list from the beginning or the end, whichever is closer to the specified index.

Aus der Dokumantation der Klasse TreeSet<K>:

This implementation provides guaranteed log(n) time cost for the basic operations (add,remove and contains).

Aus der Dokumentation der Klasse HashSet<K>:

This class offers constant time performance for the basic operations (add,remove,contains and size), assuming the hash function disperses the elements properly among the buckets. Iterating over this set requires time proportional to the sum of theHashSet instance's size (the number of elements) plus the "capacity" of the backingHashMap instance (the number of buckets). Thus, it's very important not to set the initial capacity too high (or the load factor too low) if iteration performance is important.

Referenzen

ÄHNLICHE DOKUMENTE

In der obersten Zeile Linksklick auf das Icon Editor, dann Linksklick auf den Reiter Formatting.. Nach Language: die Alternative

In diesem Abschnitt soll gezeigt werden, dass es manchmal noch einen einfacheren Weg gibt, um eine weitere Ordnung für eine Klasse K zu definieren: Wenn man schon ein oder

Wenn dieser (Referenz-) Wert auf ein Objekt zeigt (d.h. wenn er ungleich null ist), kann man die Übergabe auch so beschreiben: Das Objekt wird per Referenz übergeben (d.h. die

The array object ar (the target-value of the variable ar) contains 3 elements and additionally an int- variable named length with value 3. In all arrays this length -variable

Die Variable lob zeigt auf ein LongSpeicher30-Objekt (das lange Rechteck &#34;von ganz links nach ganz rechts&#34;).. Dieses Objekt ist (zur Zeit) eine leere Liste von

Hinweise: Solange man keine Doppelgänger einfügt, sehen Sammlungen des Typs LongSpeicher50 und LongSpeicher51 genau gleich aus.. Nr Bezeichnung

Welche Knoten haben einen leeren linken Unterbaum (und gehören somit zum Fall 2).. Welche Knoten haben einen leeren rechten Unterbaum (und gehören somit zum

Für die 14 Beispiel-Schlüssel ist hash03 nicht besonders gut, denn sie lässt 5 der 10 Listen leer und bewirkt, dass 8 der 14 Schlüssel in dieselbe Liste (ht[5]) eingefügt werden..