Algorithmen und deren Komplexität Flashcards

1
Q

Was ist eine Instanz für ein Problem?

A

eine mögliche Eingabe für ein spezifisches Problem

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

Was ist ein Algorithmus?

A

definiert eine Folge elementarer Anweisungen zur Lösung eines Problems

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

Was bedeutet Korrektheit im Bezug auf Algorithmen?

A

Ein Algorithmus stoppt für jede mögliche Eingabe
mit der korrekten Ausgabe

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

Sind Variablen im Pseudo-Code default lokal oder global?

A

lokal

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

Was ist call by value?

A
  • Die Werte der tatsächlichen Parameter werden in die formalen Parameter der Funktion kopiert.
  • Es gibt zwei Kopien von Parametern, die in verschiedenen Speicherorten gespeichert sind: die Originalkopie und die Funktionskopie.
  • Änderungen, die innerhalb von Funktionen vorgenommen werden, spiegeln sich nicht in den tatsächlichen Parametern des Aufrufers wider.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist call by reference?

A
  • Anstatt die Werte von Variablen zu übergeben, übergeben wir die Adresse von Variablen (Speicherort von Variablen) an die Funktion.
  • Tatsächliche und formale Argumente werden im selben Speicherort erstellt.
  • Änderungen an tatsächlichen Parametern können innerhalb der Funktion vorgenommen werden und spiegeln sich in den tatsächlichen Parametern des Aufrufers wider.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist beim Pseudo-Code default? call by value oder reference?

A

call by value

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

Wie gibt man Variablen als Parameter an, die dem Prinzip call by reference entsprechen sollen an?

A

mit einem & davor

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

Wie werden boolesche operatoren ausgeführt im Pseudo-Code?

A

Boole‘sche Operatoren werden träge ausgewertet (lazy evaluation), d.h. von links nach rechts bis der Ausdruck garantiert falsch oder wahr ist.

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

Worauf weißt das Schlüsselwort error im Pseudo-Code hin?

A

weißt auf nicht erfüllte Randbedingungen an die Eingabe hin, die dann zu einem Fehler und Abbruch führen

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

Was ist die formale Korrektheit von Algorithmen?

A
  • Angabe von Vor- und Nachbedingung für jede Anweisung
  • Schleifeninvariante: Bedingung, die vor, während (d.h. nach jeder Iteration) und nach Ausführung einer Schleife gültig ist
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist eine Schleifeninvariante?

A

Bedingung, die bei jedem Durchlauf gelten muss

vor, während (nach jeder Iteration) u. nach Ausf. einer Schleife gültig

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

Wovon hängt die physikalische Laufzeit ab?

A
  • hängt stark vom Computer ab
  • hängt von vielen Details der Eingabedaten ab
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Modellannahmen gibt es bei der Laufzeit?

A
  • Uniformes Kostenmaß: Math. Operationen kosten unabhängig von der Größe der Operanden eine Zeiteinheit
  • RAM-Modell
    – Zugriff auf Daten kostet eine konstante Zeiteinheit
    – Algorithmen werden sequentiell ausgeführt (nur ein Prozessor)
  • Statt der genauen Laufzeit wird eine Schranke angegeben
  • Konstante Faktoren werden vernachlässigt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Welche Modellannahmen gibt es bei dem Speicherplatz?

A

RAM-Modell: Speicherung eines elementaren Datenobjekts kostet unabhängig vom Wert konstanten Speicherplatz

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

Wie können wir die Effizienz eines Algorithmus unabhängig von Details der Eingabe bewerten?

A

Durch asymptotische Laufzeit:
* Wie verhält sich der Algorithmus bei immer größeren Instanzen?

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

Worauf bezieht sich eine Laufzeitanalyse, wenn nicht anders angegeben?

A

auf den Worst Case

18
Q

Was ist O(g(n))?

A

die Menge der Funktionen, die nicht stärker wachsen als g (= hat die Bedeutung von ∈, mit O() ist manchmal eine Menge, manchmal ein Repräsentant gemeint)

19
Q

Es gilt f, g = O(F).
Was gilt für f+g?

A

f + g = O(F)

20
Q

Es gilt f = O(F) und c konstant.
Was gilt für c*f?

A

c*f = O(F)

21
Q

Es gilt f = O(F) und g = O(f).
Was gilt für g?

A

g = O(F)

22
Q

Es gilt f = O(F) und g = O(G).
Was gilt für f*g?

A

f*g = O(F*G)

23
Q

Es gilt f = O(F*G).
Was gilt für f noch?

A

f = |F|*O(G)

24
Q

Es gilt f = O(F) und |F| ≤|G|.
Was gilt für f noch?

A

f = O(G)

25
Q

Was gilt für Polynome vom Grad m bei der O-Notation?

A

Ist p ein Polynom von Grad m gilt: p = O(N^m)

26
Q

Wofür steht bei dem O-Kalkül das O?

A
27
Q

Wofür steht bei dem O-Kalkül das o?

A
28
Q

Wofür steht bei dem O-Kalkül das Ω?

A
29
Q

Wofür steht bei dem O-Kalkül das ω?

A
30
Q

Wofür steht bei dem O-Kalkül das Θ?

A
31
Q

Wie schaut eine if-elseif-else Verzweigung im Pseudo-Code aus?

A
32
Q

Wie schaut eine while Schleife im Pseudo-Code aus?

A
33
Q

Wie schaut eine for-to/downto Schleife im Pseudo-Code aus?

A
34
Q

Wie schaut eine repeat-until Schleife im Pseudo-Code aus?

A
35
Q

Ist die Variable für eine for Schleife im Pseudo-Code noch nach Schleifenende definiert?

A

Ja, (C-Konvention)

36
Q

Wie schreibt man Kommentare im Pseudo-Code?

A

// Kommentar-Beispiel

37
Q

Wofür steht == im Pseudo-Code?

A

Vergleich von Ausdrücken

38
Q

Wofür steht = im Pseudo-Code?

A

Zuweisung von Werten

39
Q

Wie werden Feldelemente und Teilfelder angegeben?

A

Feldelemente: A[i]
Teilfelder: A[i..j]

40
Q

Wie funktioniert ein Scan-Line Verfahren?

A

Beispiel max-subarray-problem
* durchlaufe X von links nach rechts
* merke dir das bisherige Maximum maxtsum
* merke dir die rechte Randteilsumme

41
Q

Zähle die Funktionen für die O-Notation aus der Vorlesung nach Größenordnung aufsteigend auf.
* sqrt(n)
* log^2 n
* 2^n
* n
* n^2
* log n
* n^3
* n log n
* 1

A
  • 1
  • log n
  • log^2 n
  • sqrt(n)
  • n
  • n log n
  • n^2
  • n^3
  • 2^n