Bäume und Graphen Flashcards

1
Q

Was ist der Grad eines Knotens?

A

Die Anzahl an Nachfolger.

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

Was ist der Grad eines Baumes?

A

Die maximale Anzahl an Nachfolger, die ein Knoten in diesen Baum haben kann.

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

Wie lässt sich die Tiefe eines Baumes herausfinden?

A

Durch Zählen der Kanten des längsten Pfads.

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

Wie lässt sich die Tiefe eines Knotens herausfinden?

A

Durch Zählen der Kanten des Pfads, der von der Wurzel zum Knoten führt.

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

Auf welcher Ebene ist die Wurzel?

A

Auf Ebene 0.

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

Wodurch sind Binäre Bäume charakterisiert?

A

Der Grad des Baumes ist 2.

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

Was ist ein binärer Suchbaum?

A

Wenn von der Wurzel und jedem Knoten aus links immer die kleineren Werte und rechts die größeren Werte vorzufinden sind, ist es ein binärer Suchbaum.

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

Was ist eine Traversierung?

A

Alle Knoten von einem Baum werden systematisch abgearbeitet.

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

Beschreibe die Preorder-Traversierung!

A
  1. Es wird die Wurzel betrachtet, als
  2. wird der linke Teilbaum betrachtet und als
  3. wird der rechte Teilbaum betrachtet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Beschreibe die Inorder-Traversierung!

A
  1. Es wird der linke Teilbaum betrachtet, als
  2. wird die Wurzel betrachtet und als
  3. wird der rechte Teilbaum betrachtet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Beschreibe die Postorder-Traversierung!

A
  1. Es wird der linke Teilbaum betrachtet, als
  2. wird der rechte Teilbaum betrachtet und als
  3. wird die Wurzel betrachtet
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie läuft die binäre Suche in einem binären Suchbaum ab?

A
  1. wird überprüft, ob der Baum und der gesuchte Wert einen Inhalt hat und gegebenenfalls null zurückgegeben, als
  2. wird in den linken Teilbaum gegangen, falls der gesuchte Inhalt kleiner als der Wurzelinhalt ist. Falls dies nicht der Fall ist, wird als
  3. in den rechten Teilbaum gegangen, falls der gesuchte Inhalt größer als der Wurzelinhalt ist. Falls dies nicht der Fall ist, wird als
  4. der Wurzelinhalt zurückgegeben.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie läuft das Einfügen eines Inhalts in einen binären Suchbaum ab?

A
  1. wird überprüft ob der einzufügende Inhalt einen Wert hat, als
  2. wird überprüft, ob der Baum leer ist und gegebenenfalls der Inhalt in die Wurzel gepackt. Falls dies nicht der Fall ist, wird als
  3. der Auftrag des Einfügens mit dem linken Teilbaum gestartet, falls der einzufügende Inhalt kleiner, als der Wurzelinhalt ist. Falls dies nicht der Fall ist, wird als
  4. der Auftrag des Einfügens mit dem rechten Teilbaum gestartet, falls der einzufügende Inhalt größer, als der Wurzelinhalt ist.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wie läuft das Entfernen eines Inhalts aus einem binären Suchbaum ab?

A
  1. Falls der zu entfernende Inhalt gefunden wurde:
    - Falls der Baum keine Teilbäume hat, also ein Blatt ist, wird der Inhalt einfach null gesetzt.
    - Falls er nur einen Teilbaum besitzt kann dieser einfach aufrücken.
    - Falls der Baum zwei nichtleere Teilbäume hat, wird das Maximum des linken Teilbaums an die Stelle des gelöschten Knoten gesetzt und das Maximum wird nach den oberen Prinzipien gelöscht.
  2. Falls der zu entfernende Inhalt noch nicht gefunden wurde wird nach der binären Suche weitergesucht.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was ist ein Partiell geordneter Baum?

A

Der Wert eines Knotens ist immer größer oder kleiner, als seine Nachfolger.

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

Was ist ein AVL-Baum?

A

Ein ausbalancierter Baum, der auf jeder Seite ca. gleich viele Nachfolger hat. Wird mithilfe eines Balancefaktors bestimmt.

17
Q

Wie wird der Balancefaktor in einem AVL-Baum berechnet?

A

BF = Höhe rechter Teilbaum - Höhe linker Teilbaum

18
Q

Wann tritt eine Rotation in einem AVL-Baum ein?

A

Wenn der BF kleiner als -1 oder größer als 1 eines Knotens ist.

19
Q

Wie läuft die Rotation in einem AVL-Baum ab?

A

Wenn der BF kleiner als -1 ist und dessen Nachfolgers BF -1 ist, wird rechtsrotiert.
Wenn der BF größer als 1 ist und dessen Nachfolgers BF 1 ist, wird linksrotiert

Wenn der BF kleiner als -1 ist und dessen Nachfolgers BF 1 ist, wird linksrechtsrotiert.
Wenn der BF größer als 1 ist und dessen Nachfolgers BF -1 ist, wird rechtslinksrotiert

20
Q

Wie läuft eine Rechtsrotation in einem AVL-Baum ab?

A

Der linke Nachfolger des Knotens mit einem zu niedrigen BFs wird die neue Wurzel des Teilbaums und der Knoten mit dem zu niedrigen BF wird dessen rechter Nachfolger.

21
Q

Wie läuft eine Linksrotation in einem AVL-Baum ab?

A

Der rechte Nachfolger des Knotens mit einem zu hohen BFs wird die neue Wurzel des Teilbaums und der Knoten mit dem zu hohen BF wird dessen linker Nachfolger.

22
Q

Wie läuft eine Linksrechtsrotation in einem AVL-Baum ab?

A

Der rechte Nachfolgerteilbaum wird linksrotiert und dann wird der eigentliche Baum rechstrotiert. Danach hat die Wurzel des Baumes einen Nachfolger zu viel, also muss dieser in den rechten Teilbaum eingefügt werden.

23
Q

Wie läuft eine Rechtslinksrotation in einem AVL-Baum ab?

A

Der linke Nachfolgerteilbaum wird rechtsrotiert und dann wird der eigentliche Baum linksrotiert. Danach hat die Wurzel des Baumes einen Nachfolger zu viel, also muss dieser in den linken Teilbaum eingefügt werden.

24
Q

Wann ist eine Eulertour in einem Graphen möglich?

A

Wenn maximal zwei Knoten eines Graphen einen ungeraden Grad haben.

25
Q

Was sind Vor- und Nachteile einer Graphenmodellierung mit Adjazenzlisten?

A

+ Sie belegen nur soviel Speicherplatz wie nötig
- Beim Suchen muss man ggf. erst eine lange Kartenliste durchlaufen
+ Der Graph kann dynamisch ergänzt werden

26
Q

Was sind Vor- und Nachteile einer Graphenmodellierung mit Adjazenzmatrizen?

A

+ Es lässt sich schnell prüfen, ob eine Kante vorhanden ist

  • Sie benötigen immer gleich viel und vergleichsweise viel Speicherplatz
  • Der Graph kann nicht dynamisch erweitert werden
27
Q

Wann bietet sich eine Adjazenzliste an?

A

Bei dünnen Graphen mit wenigen Kanten

28
Q

Wann bietet sich eine Adjazenzmatrix an?

A

Bei dichten Graphen mit vielen Kanten

29
Q

Wie läuft die Tiefensuche in einem Graphen ab?

A
  1. werden alle Markierungen aufgehoben, als
  2. wird der besuchte Knoten markiert und als
  3. wird der ganze Vorgang mit allen Nachbarknoten wiederholt, falls diese nicht markiert sind
30
Q

Wie läuft die Breitensuche in einem Graphen ab?

A
  1. werden alle Markierungen aufgehoben, als
  2. wird der besuchte Knoten markiert, als
  3. wird der besuchte Knoten in eine Liste s eingefügt, als
  4. wird solange s nicht leer ist der vorderste Knoten aus s genommen und dessen, falls sie noch nicht markiert sind, Nachbarknoten markiert und an s angehangen
31
Q

Wann lohnt sich eine Tiefensuche in einem Graphen?

A

Wenn der zu findende Knoten weit von dem Startknoten entfernt zu erwarten ist.

32
Q

Wann lohnt sich eine Breitensuche in einem Graphen?

A

Wenn der zu findende Knoten nah an dem Startknoten zu erwarten ist.

33
Q

Wie läuft die Suche nach einem Weg von einem zu einem anderen Knoten ab, mithilfe der Tiefensuche und des Backtrackings ab?

A

private boolean sucheWeg(Vertex start, Vertex ziel, List pWeg)
{
//Vertices überschreiben, Startknoten der Wegliste hinzufügen und markieren, Wegliste Access geben
Vertex s = g.getVertex(start.getID());
Vertex z = g.getVertex(ziel.getID());
pWeg.append(s);
s.setMark(true);
pWeg.toFirst();

//Überprüfen, ob der Zielknoten schon gefunden wurde 
 if(!s.getID().equals(z.getID())){ 
//Falls nicht: Nachbarn des Startknoten in eine Nachabrliste packen und dieser Access geben 
 List n = g.getNeighbours(s); 
 n.toFirst(); 
//Jeden Nachbarn aus der Liste abklappern und ab dort mit der Methode weitersuchen, falls derjenige nicht markiert ist 
 while(n.hasAccess()){ 
 if(!n.getContent().isMarked()){ 
 return sucheWeg(n.getContent(), z, pWeg); 
 } 
 n.next(); 
 } 

//Backtracke, nachdem alle Nachabarn durchsucht wurden
pWeg.toLast();
pWeg.remove();
return false;
}

//Füge den Weg der globalen Wegliste hinzu und breche den Vorgang 
 this.weg.concat(pWeg); 
 return true; 
 }
34
Q

Was ist die Grundidee vom Dijkstra-Algorithmus?

A

Man verfolgt immer den kürzesten Weg zum nächsten Knotenpunkt und geht dann von dort aus weiter.

35
Q

Wie läuft der Dijkstra-Algorithmus ab?

A
  1. werden alle Knoten in eine Liste eingefügt, als
  2. wird allen Knoten, außer dem Startknoten, der Wert unendlich zugewiesen, als
  3. erhält der Startknoten den Wert 0, als
  4. wird der Knoten K mit der geringsten Entfernung vom Startknoten aus der Liste entfernt, als
  5. werden die Nachbarknoten betrachtet und dessen Entfernungen zu der von dem derzeit besuchten Knoten K Entfernung zum Startpunkt addiert. Falls diese Summe kleiner als die bisherige Entfernung ist, wird diese als neue Entfernung dessen Nachbarknoten gesetzt und als
  6. wird das ganze bei Schritt 4 wiederholt, bis der Zielknoten entfernt werden soll
36
Q

Was ist ein gerichteter Graph?

A

Die Richtung der Kanten ist vorgegeben.
Wenn man in beide Richtungen gehen möchte, sind zwei Kanten nötig.

37
Q

Was ist ein ungerrichteter Graph

A

Die Richtung der Kanten ist nicht vorgegeben, man kann also auf eine Kante in beide Richtungen gehen. Den einzelnen Kanten können Gewichte zugeschrieben werden.

38
Q

Wann ist ein ungerichteter Graph zusammenhängend?

A

Wenn jeder Knoten erreichbar ist, sonst gibt es einzelne Knotengruppen

39
Q

Wann ist ein gerichteter Graph zusammenhängend?

A
  • Er ist schwach zusammenhängend, wenn er als ungerichteter Graph zusammenhängend wäre.
  • Er ist von einem Knoten v aus stark zusammenhängend, wenn es vom Knoten v aus einen gerichteten Weg zu allen anderen Knoten gibt.
  • Er ist stark zusammenhängend, wenn es von jedem Knoten aus einen gerichteten Weg zu jeden anderen Knoten gibt.
  • Er ist nicht zusammenhängend, wenn es einzelne Knotengruppen gibt.