Zusammenfassung teil1 Flashcards

(37 cards)

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

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:

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
Inorder, PostOrder,Preorder
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
Successor und Predecessor
Successor: Nächster Knoten entsprechend der Inorder-Durchmusterungsreihenfolge oder null. Predecessor: Vorhergehender Knoten entsprechend der Inorder-Durchmusterungsreihenfolge oder null.
27
AVL Baum laufzeit
Immer O(logn)
28
B baum der Ordnung m
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
Lineares Sondieren
h(k, i) = (h'(k) + i) mod m | primären Häufung ist das Problem von liniares Sondieren
30
Quadratisches Sondieren:
h(k, i) = (h'(k) + c1*i + c2*i^2) mod m | die sekundären Häufungen ist das Problem von Quadratischen Sondieren
31
Double Hashing:
h(k, i) = (h1(k) + i*h2(k)) mod m.
32
Verbesserung nach brent
``` j1 = (j + h2(k)) mod m j2 = (j + h2(k')) mod m ```
33
Set:
Eine Collection, die keine duplizierten Elemente enth¨alt.
34
List:
Eine geordnete Collection (mit duplizierte Elementen). | Elemente können über einen Index angesprochen werden (nicht immer effizient)
35
Queue/Deque:
Verwalten von Warteschlangen. FIFO, Priorit¨atswarteschlangen. Einfugen und Löschen an beiden Enden bei Deque (“double ended queue”).
36
ArrayList vs Linked List
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
PriorityQueue
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.