Zusammenfassung teil1 Flashcards

1
Q

Arrays und Listen vergleich;

A

Beliebiges Element suchen: Array Θ(n), List Θ(n)
Auf Element mit Index i zugreifen: Array Θ(1), List Θ(n)
Element am Anfang einfugen: Array Θ(n), List Θ(1)

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

Bubblesort

A

Laufzeit liegt im Worst- und Average-Case in Θ(n^2). Im
Best-Case kann die Laufzeit bei optimierten
Implementierungen in Θ(n) liegen.

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

Selectionsort:

A

(nicht stabil) Selectionsort sucht in jeder Iteration das kleinste
Element in der noch unsortierten Teilfolge, entnimmt es und fügt es dann an die sortierte Teilfolge an.

Laufzeit/Vergleiche: Die Laufzeit liegt immer (Best/Average/Worst-Case) in Θ(n^2).

Vertauschungen immer Θ(n)

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

Insertionsort:

A

(stabil) Insertionsort entnimmt der unsortierten Teilfolge ein Element und fugt es an richtiger Stelle in die (anfangs leere) sortierte Teilfolge ein.

Laufzeit/Vergleiche:
Best-Case Θ(n)
Worst-Case Θ(n^2).
Average-Case Θ(n^2)

Vertauschungen:
Best-Case Θ(n)
Worst-Case Θ(n^2).
Average-Case Θ(n^2)

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

Wann ist Algorithmus effizient?

A

Wir nennen einen Algorithmus effizient, wenn seine

Laufzeit polynomiell in der Eingabegröße ist.

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

Internes Sortieren:

A

bezeichnet Sortierverfahren die nur im Hauptspeicher arbeiten

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

Stabiles Sortieren:

A

Ordnungserhalten bei gleichen Schlüsseln. Das bedeutet bei gleichen Schlüsseln
bleibt die ürsprungsreihenfolge erhalten. Bspw. Radix-Sort

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

Merge Sort:

A

(stabil)
* Teile Array in zwei Hälften.
* Sortiere jede Hälfte rekursiv.
* Verschmelze zwei Hälften zu einem sortierten Ganzen.

Laufzeit/Vergleiche immer : Θ(n log n)
Vertauschungen immer: Θ(n log n)
Speicher: immer Θ(n)

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

Quick Sort:

A

(nicht stabil)
Quicksort: Benutzt auch das Divide-and-Conquer-Prinzip, aber auf
eine andere Art und Weise.
Teile: Wähle ”Pivotelement“ x aus Folge A, z.B. das an der letzten Stelle stehende Element.

Teile A ohne x so in zwei Teilfolgen A1 und A2, dass gilt:
A1 enthält nur Elemente ≤ x.
A2 enthält nur Elemente ≥ x.
Herrsche:
Rekursiver Aufruf für  A1.
Rekursiver Aufruf für  A2.

Laufzeit/Vergleiche:
Best/AVG Θ(n log n)
Worst Θ(n^2)

Speicher:
Best/AVG Θ(log n)
Worst Θ(n)

Vertauschungen:
Best Θ(n)
Worst/AVG Θ(n log n)

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

Lineare Suche

A

Best Case : Θ(1)
naives, sequenzielles Durchsuchen der Liste.

Worst/AVG Case: Θ(n)

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

Binäre Suche

A

Suchen in sortierter Liste durch Halbierung des Suchintervalls

Best Case : Θ(1)
naives, sequenzielles Durchsuchen der Liste.

Worst/AVG Case: Θ(logn)

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

Einsatz von Sortierverfahren Merge und quicksort

A

Quicksort:
Wird sehr oft in allgemeinen Sortiersituationen bevorzugt.

Mergesort:

Mergesort wird hauptsächlich fur das Sortieren von Listen verwendet.

Wird auch fur das Sortieren von Dateien auf externen Speichermedien eingesetzt.
- Dabei wird aber eine iterative Version von Mergesort (Bottom-up-Mergesort) verwendet, bei der nur log n-mal eine
Datei sequentiell durchgegangen wird.

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

Handshaking lemma für ungerichtete Graphen

A

Summe (deg(v)) = 2*|E|

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

Adjazenzmatrix vs Adjazenyliste

A

Adjazenzmatrix:
Platzbedarf in Θ(n^2).
Uberprüfen, ob (u, v) eine Kante ist, hat Laufzeit : Θ(1).
Aufzählen aller Kanten hat eine Laufzeit von Θ(n^2)

Adjazenzliste:
Platzbedarf in Θ(m+n).
Uberprüfen, ob (u, v) eine Kante ist, hat Laufzeit : Θ(deg(u)).
Aufzählen aller Kanten hat eine Laufzeit von Θ(m+n)

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

Lichte und Dichte Graphen:

A

Graphen sind dicht (dense) falls m = Θ(n^2).
Graphen sind licht (sparse) falls m = O(n)

Fur dichte Graphen sind beide Darstellungsformen
(Adjazenzmatrix oder Adjazenzlisten) vergleichbar.

Lichte Graphen Adjazenzlisten

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

Breitensuche und Tiefensuche laufzeit

A

0(n+m)

17
Q

Gerichteter azyklischer Graph Lemma

A

Lemma: G ist ein DAG genau dann wenn jeder Teilgraph von G eine Quelle hat.
Wir nennen eine Knoten v ohne eingehende Kanten in einem gerichteten Graphen (i.e. deg−(v) = 0) Quelle.

18
Q

Topologische Sortierung Laufzeit:

A

O(n + m)

19
Q

Min Heap Laufzeiten(analog für max)

A

Insert(H,v): O(log n).
FindMin(H): O(1)
Delete(H,i): O(logn)
ExtractMin(H): Kombination von FindMin und Delete unddaher in O(log n)

20
Q

Dijkstra Laufzeit

A

Worst cases:

Liste O(n^2)
Heap O((n + m) log n) 
FibHeap O(m + n log n)

m - Anzahl Kanten n - Anzahl Knoten

21
Q

Interval Scheduling Laufzeit

A

Greedy: O(n*logn)

22
Q

Kantenschnittlemma:

A

Sei S eine beliebige Teilmenge von Knoten

und sei e die minimal gewichtete Kante mit genau einem Endknoten in S. Dann enth¨alt der MST die Kante e.

23
Q

Kreislemma:

A

Sei C ein beliebiger Kreis und sei f die maximal

gewichtete Kante in C. Dann enth¨alt der MST f nicht.

24
Q

Kruskal vs Prim

A

Kruskal:
O(m logn)

Prim:
O(m logn) mit Priority Queue
O(m + nlogn) mit Fib Heap

Anwendung in der Praxis:

Fur dichte Graphen ( m = Θ(n^2)) ist Prims Algorithmus
besser geeignet. потому что в крускале нужно будет много вычеркивать ненужных что увеличивает лауфцайт

Fur dünne(lichte) Graphen ( m = Θ(n)) ist Kruskals Algorithmus
besser geeignet.

25
Q

Inorder, PostOrder,Preorder

A

Inorder-Durchmusterung: Behandle rekursiv zunächst den linken
Unterbaum, dann die Wurzel, dann den rechten Unterbaum.

Preorder-Durchmusterung: Behandle rekursiv zunächst die Wurzel,
dann den linken Unterbaum, danach den rechten Unterbaum.

Postorder-Durchmusterung: Behandle rekursiv zunächst den linken
Unterbaum, dann den rechten Unterbaum, danach die Wurzel.

26
Q

Successor und Predecessor

A

Successor: Nächster Knoten entsprechend der Inorder-Durchmusterungsreihenfolge oder null.

Predecessor: Vorhergehender Knoten entsprechend der Inorder-Durchmusterungsreihenfolge oder null.

27
Q

AVL Baum laufzeit

A

Immer O(logn)

28
Q

B baum der Ordnung m

A
  1. Alle Blätter haben gleiche Tiefe und sind leere Knoten.
  2. Jeder Knoten hat bis zu m Kinder.
  3. Jeder innere Knoten außer der Wurzel hat mindestens [m/2] Kinder. Die Wurzel hat mindestens 2 Kinder.
  4. Jeder Knoten mit l Schlussel hat l + 1 Kinder.
29
Q

Lineares Sondieren

A

h(k, i) = (h’(k) + i) mod m

primären Häufung ist das Problem von liniares Sondieren

30
Q

Quadratisches Sondieren:

A

h(k, i) = (h’(k) + c1i + c2i^2) mod m

die sekundären Häufungen ist das Problem von Quadratischen Sondieren

31
Q

Double Hashing:

A

h(k, i) = (h1(k) + i*h2(k)) mod m.

32
Q

Verbesserung nach brent

A
j1 = (j + h2(k)) mod m
j2 = (j + h2(k')) mod m
33
Q

Set:

A

Eine Collection, die keine duplizierten Elemente enth¨alt.

34
Q

List:

A

Eine geordnete Collection (mit duplizierte Elementen).

Elemente können über einen Index angesprochen werden (nicht immer effizient)

35
Q

Queue/Deque:

A

Verwalten von Warteschlangen.
FIFO, Priorit¨atswarteschlangen.
Einfugen und Löschen an beiden Enden bei Deque (“double ended queue”).

36
Q

ArrayList vs Linked List

A

ArrayList:
*Indexzugriff auf Elemente ist uberall gleich schnell ( ¨O(1)).
*Einfugen und Löschen ist am Listenende schnell und wird mit wachsender
Entfernung vom Listenende langsamer (O(n)).

LinkedList:
*Indexzugriff auf Elemente ist an den Enden schnell und wird mit der Entfernung
von den Enden langsamer (O(n)).
*Einfugen und Löschen ohne Indexzugriff ist überall gleich schnell (O(1)).

37
Q

PriorityQueue

A

Einfugen eines Elements und Löschen des ersten Elements in einer Queue der
Größe n sind in O(log n).
Löschen eines beliebigen Elements aus einer Queue der Größe n ist in O(n)
Lesen des ersten Elements in einer Queue ist in konstanter Zeit möglich (O(1)).
Ist als Min-Heap implementiert.