Wachstum von Funktionen - Elementare Datenstrukturen Flashcards

Asymptotische Notation, Stapen/Warteschlangen, Verkettete Listen, Graphen representation

1
Q

Wie beschreibt man die Laufzeit von Algorithmen?

A

Verhalten im Grenzwert
O == ≤ (big oh) Obere asymptotische Schranke
Ω == ≥ (Ohm) untere asymptotische Schranke
θ == = (Theta) enge Grenze
o == < (klein o)
ω == > (klein Ohm)

== ist wie, oder ähnlich zu
Die Symbole werden Landau Symbole genannt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Landau Symbole / Notationen

Definition der O- Notation (Big oh)

A

Die Big-O-Notation, auch bekannt als asymptotische obere Schranke, wird verwendet, um das Wachstumsverhalten einer Funktion zu beschreiben. Eine Funktion f(n) gehört zu O(g(n)), wenn es positive Konstanten c und n_0 gibt, so dass |f(n)|≤c⋅|g(n)| für alle n≥n_0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Landau Symbole / Notationen

Definition der Ω- Notation (Ohmega)

A

Die Omega-Notation, auch bekannt als asymptotische untere Schranke, wird verwendet, um das untere Wachstumsverhalten einer Funktion zu beschreiben. Eine Funktion f(n)f(n) gehört zu Ω(g(n))Ω(g(n)), wenn es positive Konstanten c und n_0 gibt, so dass |f(n)|≥c⋅|g(n)| für alle n≥n_0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Landau Symbole / Notationen

Definition der Θ-Notation (Theta)

A

Die Theta-Notation wird verwendet, um ein enges Wachstumsverhalten zwischen Funktionen zu beschreiben. Eine Funktion f(n) gehört zu Θ(g(n)), wenn sie sowohl zu O(g(n)) als auch zu Ω(g(n)) gehört, was bedeutet, dass es positive Konstanten c_1, c_2 und n_0 gibt, so dass c_1|g(n)|≤|f(n)|≤C2⋅|g(n)| für alle n≥n_0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Landau Symbole / Notationen

Mach folgendes Sinn?
f(n) ist mindestens O(n²)

A

Nein, da die O-Notation die obere Grenze beschreibt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Stapel

Stapel DELETE

A

Entfernt das zuletzt hinzugefügte Element
last in, first out (LIFO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Warteschlange

Warteschlange DELETE

A

Entfernt das am längsten in der Menge befindliche Element
first in, first out (FIFO)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Warteschlange

Laufzeiten Stapel

A

Laufzeit: O(1)
~~~
INSERT == PUSH
DELETE == POP
STACK-EMPTY
~~~
veranschaulichung durch Tellerstapel:
unterster Teller == zuerst hinzugefügt, aber zuletzt entnehmbar

== ist gleich

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Warteschlange

Laufzeiten Warteschlange

A

Laufzeit: O(1)
~~~
INSERT == ENQUEUE
DELETE == DEQUEUE
~~~
veranschaulichung durch Schlange von Bankkunden vor Bankschalter. Schlange hat Kopf und Ende.
- Neues Element kommt ans Ende
- Element am Kopf wird als nächstes entfernt

== ist gleich

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

verkettete Listen

Unterschied zwischen einfach und doppelt verkettete Listen?

A

Einfach verkettete Listen haben nur einen zeiger auf das nächste Element. Wenn es das letzte Element ist, zeigt dieser auf NIL.
Doppelt verkettete Listen haben zusätzlich einen zeiger auf das vorherige Element. Das erste Element in dieser Liste zeigt dann auf NIL als vorheriges Element.

NIL = Not In List (Nicht in Liste)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

verkettete Listen

Was ist eine Zyklisch verkettete Liste?

A

Wenn das letzte Element auf das erste Element der Liste zeigt. Somit zeigt kein Element auf NIL.

NIL = Not In List (Nicht in Liste)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

verkettete Listen

Was ist ein Wächter (Sentinal) in verketteten Listen?

A

Ein Wächter ist ein Element, dass in doppelt verketteten Listen vorkommt und auf das nächste Element zeigt, wobei das letzte Element der Liste auf diesen Wächter zeigt.
Zum Beispiel Rundkurs Autorennen. Die Startlinie zeigt gleichzeitig die Ziellinie an.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Graphen

Was ist der Unterschied zwischen gerichteten und ungerichteten Graphen?

A

Ungerichtete Graphen sind Verticies die über Edges verbunden sind. Dabei spielt die Richtung keine Rolle. Bei gerichteten Graphen haben die Kanten eine Richtung. Dann wird durch doppelnennung der Kanten klarer ob diese in beide Richtungen geht.

V = Verticies (Knoten)
E = Edges (Kanten)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Graphen

Was ist ein dünn besetzter Graph?

A

Wenn
|E| < |V|²
ist
Dann benutzt man Adjazenzlisten.

|x| = Betrag von x

V = Verticies (Knoten)
E = Edges (Ecken, bzw Kanten)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Graphen

Was ist ein dicht besetzter Graph?

A

Wenn
|E| ≈ |V|²
ist.
Dann benutzt man Adjazenzmatritzen.

≈ = ungefär

|x| = Betrag von x
V = Verticies (Knoten)
E = Edges (Kanten)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Breitensuche

Wie lautet das grobe Vorgehen bei der Breitensuche?

BFS (breadth first search)

A
  1. Wähle einen Startknoten aus.
  2. Füge den Startknoten der Warteschlange hinzu und markiere ihn als besucht.
  3. Solange die Warteschlange nicht leer ist:
    a. Entnimm einen Knoten aus der Warteschlange.
    b. Für jeden unbesuchten Nachbarn dieses Knotens:
    i. Füge den Nachbarn der Warteschlange hinzu.
    ii. Markiere den Nachbarn als besucht.
  4. Wiederhole Schritt 3, bis die Warteschlange leer ist.

BFS (breadth first search)

EIne Warteschlange ist am besten dafür geeignet.

17
Q

Tiefensuche

Wie lautet das Vorgehen für die Tiefensuche?

DFS (depth first search)

A
  1. Wähle einen Startknoten aus.
  2. Markiere den Startknoten als besucht.
  3. Für jeden unbesuchten Nachbarn des aktuellen Knotens:
    a. Besuche den Nachbarn rekursiv.
  4. Wenn es keine unbesuchten Nachbarn mehr gibt, gehe zum vorherigen Knoten zurück.
  5. Wiederhole Schritt 3 und 4, bis alle Knoten besucht wurden.
18
Q

Breiten- und Tiefensuche

Wie unterscheiden sich Breiten und Tiefensuche?

A

Breitensuche (BFS):
Die Breitensuche durchläuft den Graphen schichtenweise, beginnend beim Startknoten. Sie besucht jeden Knoten und jede Kante genau einmal. Die Zeitkomplexität beträgt daher O(V + E).

Tiefensuche (DFS):
Die Tiefensuche erkundet einen Pfad so weit wie möglich, bevor sie zurückkehrt und andere Pfade erkundet. Sie besucht jeden Knoten und jede Kante ebenfalls genau einmal. Die Zeitkomplexität beträgt daher auch hier O(V + E).

19
Q

Breitensuche

Wie lautet die Laufzeit der Breitensuche? (BFS / Breadth-first search)

A

O(V+E)

V = Verticies (Knoten)
E = Edges (Kanten)

20
Q

Tiefensuche

Wie lautet die Laufzeit der Tiefensuche? (DFS / Depth-first search)

A

O(V+E)

V = Verticies (Knoten)
E = Edges (Kanten)

21
Q

Landau Symbole / Notationen

Satz der O- Notation (big oh)

A

0 ≤ f(n) ≤ c * g(n)

0 = null

f(n) = Funktion
g(n) = Klasse

22
Q

Landau Symbole / Notationen

Satz der Ω- Notation (Ohmega)

A

0 ≤ c * g(n) ≤ f(n)

0 = null

f(n) = Funktion
g(n) = Klasse

23
Q

Landau Symbole / Notationen

Satz der θ- Notation (Theta)

A

0 ≤ c_1 * g(n) ≤ f(n) ≤ c_2 * g(n)

0 = null

f(n) = Funktion
g(n) = Klasse

24
Q
A