Wachstum von Funktionen Flashcards

1
Q

Was ist das asymptotische Verhalten und wie analysiert man es?

A

Das asymptotische Verhalten beschreibt, wie die Laufzeit sich bei steigender Größe von Eingabewerten verhält.
Man abstrahiert den Term, der den höchsten Exponenten bzw. das höchste Wachstum hat und schreibt es als O(f(n)).

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

Welche Grenzen gibt es und wie sind ihre Definitionen?

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

Welche Strategie steckt hinter dem Stack und welche Methoden hat er?

A

last-in, first-out Strategie
Operationen sind alle in O(1)
Operation INSERT -> PUSH (S,e)
Operation DELETE -> POP(e) (gibt ebenfalls oberstes Objekt zurück)
Operation STACK-EMPTY() (gibt boolean zurück)

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

Wie heißt das Attribut beim Stack und wann kommt es zu fehlern beim Stack?

A
  • Attribut S.top gibt das zuletzt abgelegte Element zurück und ist immer das oberste Element des Stapels
  • Wenn S[S.top] = 0 -> Stapel leer
  • Wenn Stapel leer ist und Element entfernt wird -> stack underflow
  • Wenn S.top > n und möchten Element anhängen -> stack overflow (n ist maximale Anzahl an Objekten im Stack)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Strategie verfolgt die Warteschlange und welche Operationen hat sie?

A

Strategie: First-in, First-out
Operationen sind alle in O(1)
Operation: INSERT -> ENQUEUE(Q,e)
Operation DELETE -> DEQUEUE(Q,e) (gibt ebenfalls das Element zurück)
Besitzt zwei Attribute head und tail

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

Welche Attribute hat die Warteschlange und wann kommt es zu fehlern?

A
  • Q.kopf -> gibt den Anfang der Schlange zurück
  • Q.ende -> gibt nächst mögliche Stelle für ein Element zurück (einen hinter dem letzten Element)
  • Wenn Q.kopf = Q.ende -> Schlange leer
  • Wenn Q.kopf = Q.ende = 1 und Element wird entfernt -> stack underflow
  • Wenn Q.kopf = Q.länge und möchtest Element anhängen -> stack overflow
  • maximal n-1 Elemente
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist eine verkette Liste und welche eigenschaften kann sie haben?

A
  • Bei einer verketteten Liste liegen Elemente in linearer Reihenfolge da
  • Anordnung wird durch Zeiger festgelegt
  • Einfach verkette Liste nutzt einen Nachfolger
  • doppelt verkette Liste benutzt Nachfolger und Vorgänger
  • Kann sortiert oder unsortiert sein
  • Kann zyklisch oder nicht zyklisch sein
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind die Attribute einer verketteten Liste und welche besonderen Werte können sie haben?

A
  • schlüssel -> Wert/Inhalt des Elements
  • nachf -> zeigt auf den Schlüssel des Nachfolgers Attribut
  • vorg -> zeigt auf den Schlüssel des Vorgängers
  • L.Kopf -> zeigt auf das erste Element der Liste
  • Wenn x.vorg = NIL -> Besitzt keinen Vorgänger -> erstes Element
  • Wenn x.nachf = NIL -> Besitz kein Nachfolger -> letztes Element
  • Wenn L.kopf = NIL -> leere Liste
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wie wird eine zyklische doppelt verkettete Liste umgesetzt?

A
  • Über ein Wächterobjekt
  • Wächter befindet sich zwischen Kopf und Ende der Liste
  • Verweise auf NIL ersetzt man durch den Wächter L.nil
  • Somit zeigt L.nil.nachf auf den Kopf der Liste und L.nil.vorg auf das Ende der Liste
  • Nachf des letzten Elements und vorg des ersten Elements zeigen auf L.nil
  • L.kopf überflüssig, da L.nil.nachf auf das erste Element zeigt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welche Operationen hat die verkettete Liste?

A

ListInsert(L,x) -> O(1)
ListSearch(L,x) -> Θ(n)
ListDelete(L,x) -> Θ(n) (weil vorher ListSearch aufgerufen wird sonst O(1))

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

Was sind vor und nachteile der zyklischen Liste?

A

Vorteile:
* Können zu kleineren konstanten Faktoren führen
* Vorteil liegt eher in der Klarheit des Codes als in der Perfomanz
Nachteile:
* Reduzieren selten die asymptotische Zeitschranke von Operationen
* Gesparte Laufzeit bei ListInsert und ListDelete ist konstant
* Bei vielen kleinen Listen verschwendet es Arbeitsspeicher
* Verwendung nur Ratsam um Programmcode zu vereinfachen

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

Wie stellt man einen Graphen dar?

A

Ein Graph besteht aus zwei Mengen, einmal die Menge der “Knoten” und die Menge der “Kanten”. Diese kann man nun als Diagram oder als Tabelle darstellen. Im Diagram zeigt ein Pfeil die Richtung an, wenn es gerichtet ist und in der Tabelle bedeutet (A,B) dass es von A nach B geht {A,B} bedeutet ungerichtet.

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

Was ist eine Adjazentliste?

A

Eine Liste aller Verbindungen im Graphen. Dabei hat jedes Element aus der Menge der Knoten eine eigene Liste, mit allen Verbindungen die Sie hat. Erforderlicher Speicherplatz ist die Menge der Knoten + Menge der Kanten

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

Was ist eine Adjazentmatrix?

A

Eine Matrix, die alle Verbindungen des Graphen mit einer Zahl repräsentiert. Die Zahl entspricht der Gewichtung des Graphen. Speicherplatz ist die Anzahl der Knoten Quadriert
In der Abbildung unter c) zu sehen

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

Wann benutzt man eine Adjazenzliste und wann eine Adjazenzmatrix?

A

Für dünn besetzte Graphen Liste und für dichte Graphen matrizen. Dabei gilt, dass ein Graph dünn besetzt ist, wenn die Anzahl der Kanten kleiner ist als die Menge der Zustände Quadriert

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

Was ist BFS?

A

BFS - Breadth-first search (Breitensuche)
* Die Breitensuche erforscht Systematisch alle Kanten und entdeckt die Knoten des Graphen, die vom vorgegebenen Startknoten erreichbar sind.
* Berechnet die Distanz des Startknoten zu jedem erreichbaren
* BFS nutzt eine Queue
* “Färbt” die bereits besuchten Knoten um sie nicht nochmal zu besuchen

16
Q

Was ist DFS?

A

DFS - Depth-First Search (Tiefensuche)
* Man geht erst soweit es geht und wenn man nicht mehr zu einem unbesuchten Knoten kann, markiert man diesen
* Hat man einen Knoten markiert, geht man zum letzten besuchten Knoten und wiederholt den Algorithmus
* Wenn alle erreichbaren knoten markiert sind ist es vorbei