DSA-Klausurvorbereitung

Werbung
Aufgabe 1 — Allgemeine Fragen
a) Beschreiben Sie, was man unter einer Datenstruktur versteht.
Ihre Lösung:
Eine Datenstruktur ist eine bestimmte Art, Daten zu verwalten und miteinander zu verknüpfen, um in geeigneter Weise auf diese zugreifen und diese
manipulieren zu können.
Datenstrukturen sind immer mit bestimmten Operationen verknüpft, um genau
diesen Zugriff und diese Manipulation zu ermöglichen.
b) Beschreiben Sie, was man unter einem Algorithmus versteht.
Ihre Lösung:
Ein Algorithmus ist eine präzise (in einer festgelegten Sprache abgefasste) endliche
Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer
elementarer (Verarbeitungs-)Schritte.
c) Gegeben seien zwei Funktionen f : N → N und g : N → N. Beschreiben Sie,
was f ∈ O(g) bedeutet.
Ihre Lösung:
Mathematische Definition: f ∈ O(g) ⇔ ∃c, n0 ∀n ≥ n0 : f (n) ≤ c + g(n)
f wächst asymptotisch nicht schneller als g.
DSA - 1/23
Aufgabe 2 — Suchalgorithmen
Gegeben sei folgendes Struktogramm:
Funktion zur Suche in einem Feld
Funktionsname: suche
Parameter: feld: Array aus Objekten vom Typ int; element : int
Rückgabe: Position in feld, an der element gefunden wurde, -1 sonst
feld = null
ja
nein
pos := 0;
solange pos < feld.length
feld[pos] = element
ja
return pos
nein
pos := pos + 1
return -1
a) Geben Sie eine statische Java-Methode suche an, die zu dem gegebenen
Struktogramm äquivalent ist.
Ihre Lösung:
1 public static int suche(int[] feld , int element) {
2
if ( feld == null) {
3
} else {
4
int pos = 0;
5
while (pos < feld.length) {
6
if ( feld [pos] == element) {
7
return pos;
8
} else {
9
pos++;
10
}
11
}
12
}
13
return −1;
14 }
DSA - 2/23
b) Wie wird der oben beschriebene Suchalgorithmus genannt?
Ihre Lösung:
Lineare Suche oder sequentielle Suche
c) Was ist die best-case- und die worst-case-Laufzeit des Algorithmus? Geben
Sie jeweils ein Szenario an, wann diese Fälle eintreten.
Ihre Lösung:
best-case: O(1), wenn feld(0) == element
worst-case: O(n), wenn element nicht in feld enthalten ist
d) Ein anderes, wesentlich effizienteres Verfahren zur Suche in einem Feld ist
die sogenannte binäre Suche. Beschreiben Sie, wie diese funktioniert.
Ihre Lösung:
1. Ist das übergebene Feld leer, so ist das gesuchte Element nicht enthalten
2. Prüfe, ob Element in der Mitte des Feldes mit dem gesuchten Element
übereinstimmt
3. Stimmt es nicht überein, teile das Feld in zwei Teile
4. Ist das gesuchte Element größer, so rufe den Algorithmus rekursiv mit dem
rechten Teilfeld auf
5. Ist das gesuchte Element kleiner, so rufe den Algorithmus rekursiv mit dem
rechten Teilfeld auf
e) Welche Voraussetzungen müssen erfüllt sein, damit man die binäre Suche
anwenden kann?
Ihre Lösung:
• Das Feld muss sortiert sein
• Auf das Feld muss wahlfrei zugegriffen werden können
DSA - 3/23
Aufgabe 3 — Listen
Gegeben sei folgendes Java-Interface für einen Stack:
1 public interface Stack<T> {
2
public void push(T obj) throws Exception;
3
public T pop() throws Exception;
4
public T top() throws Exception;
5
public boolean isEmpty();
6 }
a) Beschreiben Sie, wie die Methoden push, pop und top arbeiten.
Ihre Lösung:
push: legt obj als neues oberstes Element auf dem Stack ab
pop: nimmt das oberste Element vom Stack ab und gibt es als Rückgabewert zurück
top: liefert das oberste Element zurück, belässt es aber auf dem Stack
b) Im Zusammenhang mit Stacks spricht man häufig auch von LIFO. Beschreiben
Sie, was LIFO bedeutet.
Ihre Lösung:
LIFO = Last In First Out; das Element, das zuletzt dem Stack hinzugefügt wurde
wird als erstes entnommen.
c) Eine andere Datenstruktur, die in der Vorlesung behandelt wurde arbeitet
nach dem FIFO-Prinzip. Welche ist das?
Ihre Lösung:
Die Queue oder Warteschlange
d) Viele verkettete Datenstrukturen implementieren die Iterable-Schnittstelle.
Welche Methoden werden darin definiert und was ist ein Iterator in Java?
Ihre Lösung:
Die Iterable-Schnittstelle definiert lediglich die Methode iterator(), die einen
Iterator für die gegebene Datenstruktur zurückliefert.
Ein Iterator ist ein abstrakter Zeiger auf die Elemente der Datenstruktur. Er bietet
die öffentlichen Methoden hasNext() (zur Überprüfung, ob er auf dem letzten
Element der Datenstruktur steht), next() (zur Übergabe des aktuellen Objekts und
zur Vorrückung des Zeigers) und remove() (zur Entfernung des zuletzt gelesenen
Objekts aus der Datenstruktur) an.
DSA - 4/23
Aufgabe 4 — Sortieren
Gegeben sei folgendes Null-basiertes Array A:
0
9
3
1
8
7
5
4
2
6
0
1
2
3
4
5
6
7
8
9
a) Sortieren Sie das Array A mittels Bubblesort. Geben Sie die Belegung des
Arrays nach jedem Durchlauf an.
Ihre Lösung:
0
9
3
1
8
7
5
4
2
6
0
3
1
8
7
5
4
2
6
9
0
1
3
7
5
4
2
6
8
9
0
1
3
5
4
2
6
7
8
9
0
1
3
4
2
5
6
7
8
9
0
1
3
2
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
b) Bubblesort ist ein sogenanntes stabiles Sortierverfahren. Erklären Sie was das
bedeutet.
Ihre Lösung:
Ein stabiles Sortierverfahren behält die Reihenfolge der Datensätze mit gleichem
Sortierschlüssel bei.
DSA - 5/23
c) Bubblesort wird in der Regel als in-place-Algorithmus implementiert. Erklären
Sie was das bedeutet. Welche Platzkomplexität hat Bubblesort demnach?
Ihre Lösung:
Ein in-place-Algorithmus benötigt, zusätzlich zu dem für die Speicherung der zu
bearbeitenden Daten benötigten Speicherplatz, nur eine konstante Speichermenge.
Daher ist die Platzkomplexität von Bubblesort O(1).
d) Was ist die best-case- und die worst-case-Laufzeit von Bubblesort? Geben
Sie jeweils ein Szenario an, wann diese Fälle eintreten.
Ihre Lösung:
best-case: O(n), wenn das Feld bereits sortiert ist
worst-case: O(n2 ), wenn das Feld absteigend sortiert ist
e) Ein Sortieralgorithmus, der nach dem Divide-and-Conquer-Prinzip vorgeht
ist Quicksort. Beschreiben Sie welche Rolle das sogenannte Pivot-Element
dabei spielt und erklären Sie, wie dieses Element beschaffen sein sollte.
Ihre Lösung:
Das Pivot-Element wird zur Aufteilung (Divide) des Felds genommen. Alle Elemente, die kleiner (oder gleich) dem Pivot-Element sind werden in einem Array
zusammengefasst und alle Elemente, die größer sind in einem anderen.
Diese beiden Teilarrays sollten in etwa gleichgroß sein, das Pivot-Element sollte
nach Möglichkeit also jeweils in der Mitte der zu sortierenden Elemente liegen.
f) Was ist die best-case- und die worst-case-Laufzeit von Quicksort? Geben Sie
jeweils ein Szenario an, wann diese Fälle eintreten.
Ihre Lösung:
best-case: O(n ∗ log(n)), wenn das Pivot-Element das Feld in zwei gleichgroße Teile
teilt
worst-case: O(n2 ), wenn das Pivot-Element das größte respektive kleinste Element
im Feld ist
DSA - 6/23
g) Aus dem unsortierten Array A soll ein Heap aufgebaut werden. Geben Sie
sowohl den Baum ohne Heap-Eigenschaft an, als auch alle Zwischenschritte
nach jeder Einsickerphase.
Ihre Lösung:
Baum ohne Heap-Eigenschaften:
0
9
3
1
4
8
2
7
5
6
„Einsickern“ von 8:
0
9
3
1
4
6
2
7
5
8
„Einsickern“ von 9:
0
1
3
2
4
6
9
8
DSA - 7/23
7
5
Aufgabe 5 — Bäume
Gegeben sei der folgende geordnete Baum B1 :
20
10
15
3
8
1
7
17
19
16
a) Erzeugen Sie mittels Binarisierung aus dem gegebenen geordneten Baum B1
einen Binärbaum B2 .
Ihre Lösung:
20
10
3
1
15
8
7
17
16
19
b) Erklären Sie, was man unter einem binären Suchbaum versteht. Handelt es
sich bei dem Binärbaum B2 aus Aufgabenteil a) um einen Suchbaum?
Ihre Lösung:
In einem Suchbaum wird jedem Knoten ein Schlüssel zugeordnet. Der linke Teilbaum
eines Knotens enthält nur Schlüssel, die kleiner (oder gleich) dem des Knotens sind
und der rechte Teilbaum enthalten nur Schlüssel, die größer (oder gleich) dem des
Knotens sind.
Der Baum aus Aufgabenteil a) ist ein Suchbaum, da jeder Knoten (maximal) zwei
Kinder hat und er die Suchbaumeigenschaften besitzt.
DSA - 8/23
c) Geben Sie in Pseudocode ein Verfahren an, mit dem sich die in B2 enthaltenen
Elemente absteigend sortiert ausgeben lassen. Die Laufzeit des Verfahrens
soll in der Komplexitätsklasse O(|V |) (mit V = Knoten des Baums) liegen.
Ihre Lösung:
Baumsortierung:
Daten : Suchbaum B2
Ergebnis : Ausgabe der Knotenwerte in absteigender Sortierung
Beginn
wenn B2 ist nicht leer dann
rekursiver Aufruf von Baumsortierung mit rechtem Unterbaum;
Ausgabe von Knotenwert der Wurzel;
rekursiver Aufruf von Baumsortierung mit linkem Unterbaum;
Ende
Ende
Die in B1 gespeicherten Werte werden nun in einem 2 − 3 − 4-Baum B3 gespeichert:
3
1
7
10
8
15
19
16
17
20
d) Fügen Sie den Wert 18 in B3 ein. Gehen Sie dabei nach dem BottomUp-Verfahren vor. Der entstehende Baum wird im Folgenden als B4 bezeichnet.
Ihre Lösung:
10
3
1
16
7
8
15
19
17 18
DSA - 9/23
20
e) Wandeln Sie B4 in einen äquivalenten Rot-Schwarz-Baum B5 um.
Ihre Lösung:
10
3
19
1
8
7
16
20
15
18
17
f) Wandeln Sie B5 in einen AVL-Baum B6 um. Geben Sie für jeden Knoten die
AVL-Balance an.
Ihre Lösung:
100
3−1
180
10
81
70
19−1
160
150
170
200
g) Erklären Sie anhand von B5 und B6 , warum AVL-Bäume „nicht ganz ausgeglichen“ sind, Rot-Schwarz-Bäume hingegen als „vollständig ausgeglichen“
bezeichnet werden.
Ihre Lösung:
Bei einem AVL-Baum darf sich die Tiefe der beiden Unterbäume in jedem Knoten
um maximal 1 unterscheiden. Dies bedeutet aber, dass der Baum nicht vollständig
ausbalanciert sein muss.
Bei einem Rot-Schwarz-Baum hingegen hat jeder Weg von der Wurzel bis zu einem
Blatt die exakt gleiche Anzahl an schwarzen Knoten.
DSA - 10/23
Die in B6 gespeicherten Werte werden nun in einem B-Baum B7 gespeichert:
16
3
1
8
7
18
10
15
17
19 20
h) Bestimmen Sie die Ordnung m von B7 .
Ihre Lösung:
m=1
i) Entfernen Sie den Wert 18 aus B7 .
Ihre Lösung:
16
3
1
8
7
19
10
15
DSA - 11/23
17
20
Aufgabe 6 — Graphen
Durchlaufen Sie die ausgehenden Kanten eines Knotens in folgender Reihenfolge
(Uhrzeigersinn):
1
4
α
2
3
a) Führen Sie auf dem folgenden Graphen G1 , beginnend beim grau hinterlegten
Knoten ”K”, eine Tiefensuche (rekursive Variante) durch. Geben Sie an, in
welcher Reihenfolge die Knoten besucht werden.
A
D
F
R
O
N
Z
K
E
U
S
Ihre Lösung:
K-O-N -R-A-D-Z-U -S-E
DSA - 12/23
Folgende Knotenliste sei für den Graphen G2 gegeben:
6, 16, 5, 2, 3, 4, 5, 6, 2, 1, 6, 2, 1, 4, 2, 1, 3, 2, 1, 6, 3, 1, 2, 5
b) Geben Sie die Kantenliste für den Graph G2 an.
Ihre Lösung:
6, 16, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 2, 1, 2, 6, 3, 1, 3, 4, 4, 1, 4, 3, 5, 1, 5, 6, 6, 1, 6, 2, 6, 5
c) Geben Sie an, ob G2 gerichtet und / oder gewichtet ist.
Ihre Lösung:
G2 ist ungerichtet, da es paarweise zwischen zwei Knoten jeweils zwei oder keine
Kante gibt.
G2 ist ungewichtet, da alle Kanten ein uniformes Kostenmaß haben.
d) Geben Sie eine grafische Repräsentation von G2 an.
Ihre Lösung:
6
5
1
4
2
3
e) Besitzt G2 einen Eulerweg? Falls ja, geben Sie diesen an, falls nein, begründen
Sie warum nicht.
Ihre Lösung:
G2 besitzt einen Eulerweg, da G2 genau zwei Knoten mit einer ungeraden Anzahl
an ausgehenden Kanten besitzt, z.B.
1, 2 – 2, 6 – 6, 1 – 1, 3 – 3, 4 – 4, 1 – 1, 5 – 5, 6
DSA - 13/23
Folgende Adjazenzmatrix sei für den Graphen G3 gegeben (ein Kostenmaß ∞
bedeutet, dass hier keine Kante existiert):


∞ 3 ∞ ∞ ∞
 1 ∞ 3 2 ∞


 2 ∞ −2 ∞ ∞


∞ ∞ ∞ ∞ 1 
2 ∞ ∞ ∞ ∞
f) Geben Sie an, ob G3 gerichtet und / oder gewichtet ist.
Ihre Lösung:
G3 ist gerichtet, da es paarweise zwischen zwei Knoten nicht immer zwei oder keine
Kante gibt.
G3 ist gewichtet, da für jede Kanten ein Kostenmaß angegeben ist.
g) Geben Sie eine grafische Repräsentation von G3 an.
Ihre Lösung:
3
2
−2
3
3
1
2
2
4
1
2
1
5
h) Lässt sich der Dijkstra-Algorithmus zur Berechnung eines kürzesten Wegs
durch den Graphen G3 (beginnend bei dem Knoten 1) anwenden. Falls ja,
wenden Sie Dijkstra auf G3 an (geben Sie auch alle Zwischenschritte an), falls
nein, begründen Sie warum nicht.
Ihre Lösung:
Da der Dijkstra-Algorithmus ein Greedy-Algorithmus ist, muss das Optimalitätsprinzip gelten. Dies ist bei negativen Kantengewichten allerdings nicht gegeben.
Daher würde Dijkstra nicht den kürzesten Weg finden.
DSA - 14/23
i) Lässt sich der Bellman-Ford-Algorithmus zur Berechnung eines kürzesten
Wegs durch den Graphen G3 (beginnend bei dem Knoten 1) anwenden. Falls
ja, wenden Sie Bellman-Ford auf G3 an (geben Sie auch alle Zwischenschritte
an), falls nein, begründen Sie warum nicht.
Ihre Lösung:
∞
2
∞
−2
3
2
3
3
∞
0
2
∞
0
3
1
1
2
∞
6
6
−2
3
2
−2
3
3
0
3
2
5
0
3
1
2
4
1
2
1
2
1
∞
6
6
6
−2
3
2
3
0
∞
1
∞
3
2
2
1
2
2
−2
3
−2
3
3
3
2
4
0
3
1
2
4
1
2
1
2
5
1
5
DSA - 15/23
Gegeben sei folgender ungerichteter Graph G4 :
1
1
2
3
4
2
1
5
2
3
4
2
6
3
5
j) Wenden Sie den Kruskal-Algorithmus zur Berechnung eines minimalen Spannbaum auf den Graphen G4 an. Geben Sie den entstehenden Spannbaum
grafisch an und berechnen Sie sein Kantengewicht.
Ihre Lösung:
((1, 2), 1) + ((3, 4), 1) + ((1, 4), 2)+
((2, 3), 2) − ((3, 6), 2) + ((1, 3), 3)−
((3, 5), 3) + ((2, 5), 4) − ((4, 6), 5)−
1
1
2
4
2
1
6
3
2
3
Kantengewicht Kw = 1 + 2 + 1 + 3 + 2 = 9
DSA - 16/23
5
Aufgabe 7 — Hashing
In dem neuen Verwaltungssystem der Universität sollen die Datensätze der Studenten in einer Hashtafel verwaltet werden. Als Hashkey soll jeweils die Matrikelnummer
m (m ∈ N+ ) verwendet werden. In der initialen (leeren) Hashtafel (implementiert
als Null-basiertes Array) stehen 11 Plätze zur Verfügung. Um die Hashfunktion
möglichst einfach zu gestalten wird vorgeschlagen nur die letzte Stelle zu betrachten
und darauf das Divisionsverfahren mit p = 11 anzuwenden.
a) Bewerten Sie diese Hashfunktion unter den Gesichtspunkten Surjektivität
und Gleichverteiltheit. Ist die Tabellengröße sinnvoll gewählt?
Ihre Lösung:
Die Hashfunktion verspricht zwar gleichverteilt zu sein (wenn man davon ausgeht,
dass die Matrikelnummern gleichmäßig vergeben werden), aber es ist nicht surjektiv,
da x mod 11 < 10 ∀x ∈ {0, . . . , 9}.
p ist eine Primzahl, wodurch möglichst wenig Kollisionen auftreten sollten, aber
da die Anzahl der Studenten voraussichtlich sehr viel größer ist als 11, wird es
dennoch häufig zu Kollisionen kommen.
In die obige Hashtafel sollen nun die ersten Studenten eingetragen werden:
1. Adam (m = 543)
2. Bettina (m = 123)
3. Christoph (m = 444)
4. Doris (m = 963)
5. Erich (m = 567)
6. Franziska (m = 824)
b) Fügen Sie die sechs Studenten in die leere Hashtafel ein. Verwenden Sie die
oben beschriebene Hashfunktion. Führen Sie ein offenes Hashing durch und
verwenden Sie quadratisches Sondieren (mit c = 1) als Kollisionsstrategie.
Ihre Lösung:
0
1
2
3
4
5
6
7
8
9
10
Franziska (4)
Adam (3)
Bettina (3)
Christoph (4)
Doris (3)
Erich (7)
DSA - 17/23
Da die Studentenzahl stetig zunimmt hat die Verwaltung entschieden, dass man
besser ein dynamisches Hashverfahren verwenden sollte. Als Bitvektor soll die
Matrikelnummer als Binärzahl verwendet werden.
1. Adam (v = 1000011111)
2. Bettina (v = 0001111011)
3. Christoph (v = 0110111100)
4. Doris (v = 1111000011)
5. Erich (v = 1000110111)
6. Franziska (v = 1100111000)
c) Fügen Sie die sechs Studenten erneut in die leere Hashtafel ein. Verwenden
Sie dynamisches Hashing. Geben Sie alle Zwischenschritte an, wenn ein Split
nötig ist und geben Sie jeweils die globale und lokale Tiefe an.
Ihre Lösung:
Adam
Bettina
𝑑𝑙 = 0
Bettina
Christoph
𝑑𝑙 = 1
Adam
Doris
𝑑𝑙 = 1
Bettina
Christoph
𝑑𝑙 = 1
Adam
Erich
𝑑𝑙 = 2
Doris
Franziska
𝑑𝑙 = 2
𝑑𝑔 = 0
0
1
𝑑𝑔 = 1
00
01
10
11
𝑑𝑔 = 2
DSA - 18/23
Aufgabe 8 — Pattern Matching
Gegeben sei folgendes Pattern P = abac sowie der String S = dababac.
a) Wenden Sie den primitiven Brute-Force-Algorithmus zur Pattern-Suche auf
P und S an.
Ihre Lösung:
𝑑
𝑎
𝑏
𝑎
𝑏
𝑎
𝑎
𝑏
𝑎
𝑐
𝑎
𝑏
𝑎
𝑐
𝑎
𝑏
𝑎
𝑐
𝑎
𝑏
𝑎
𝑐
𝑐
b) Welchen worst-case-Aufwand hat der naive Brute-Force-Suchalgorithmus für
ein Pattern der Länge m und einen Text der Länge n?
Ihre Lösung:
Der Algorithmus prüft im worst-case an jeder Stelle des Strings, ob das Pattern
hier beginnt. Daher ist die worst-case-Komplexität O(m ∗ n).
c) Beschreiben Sie, wie Algorithmen, wie beispielsweise Knuth-Morris-Pratt, die
Textsuche beschleunigen.
Ihre Lösung:
Durch eine vorgelagerte Patternanalyse (∈ O(m)) kann das Pattern bei einem
Missmatch im besten Fall gleich um mehrere Stellen verschoben werden. Die
Zeichen des Suchstrings müssen nicht mehrfach gelesen werden. Daher ergibt sich
eine Laufzeit von O(m + n).
DSA - 19/23
Aufgabe 9 — Reguläre Sprachen
Die reguläre Sprache L1 enthält alle Wörter w, die über einem gewöhnlichen
Ternärsystem (ein Stellwertsystem zur Basis 3 mit den Ziffern 0, 1 und 2) ohne
führende Nullen eine durch 9 teilbare positive Zahl z (z ∈ N+ ) darstellen.
a) Geben Sie einen regulären Ausdruck RegEx1 an, der die Sprache L1 spezifiziert.
Ihre Lösung:
RegEx1 : ˆ(1|2)[012] ∗ 00$
b) Geben Sie einen zu RegEx1 äquivalenten ϵ-NEA EA1 an.
Ihre Lösung:
𝜀
𝜀
𝑞0
𝜀
𝑞2
1
𝑞4
𝜀
𝜀
𝑞3
2
𝑞5
0
𝑞12
𝜀
𝑞8
𝜀
𝑞1
𝑞10
𝑞6
𝜀
𝑞7
𝜀
𝜀
𝜀
𝑞11
𝜀
𝑞9
1
𝑞14
𝜀
𝑞13
2
𝜀
𝜀
DSA - 20/23
𝜀
𝑞15
𝑞16
𝜀
𝑞17
0
𝑞18
0
𝑞19
𝜀
𝑞20
Gegeben sei folgender endlicher Automat EA2 :
𝑞0
0|1|2
1
𝑞2
0
𝑞3
2
0
𝑞4
𝜀
𝑞1
c) Ist EA2 deterministisch? Geben Sie alle Faktoren an, die bei einem DEA
erfüllt sein müssen, und bestimmen Sie ob diese auf EA2 zutreffen.
Ihre Lösung:
• Ein Startzustand: EA2 hat zwei Startzustände
• Keine ϵ-Kanten: EA2 hat eine ϵ-Kante
• Je Zustand höchstens eine ausgehende Kante ∀σ ∈ Σ : EA2 hat in Zustand
q2 zwei mit 0 beschriftete ausgehende Kanten
• Je Zustand mindestens eine ausgehende Kante ∀σ ∈ Σ : EA2 hat in Zustand
q3 keine mit 1 oder 2 beschriftete ausgehende Kante
⇒ Je Zustand genau eine ausgehende Kante ∀σ ∈ Σ
d) Geben Sie einen zu EA2 äquivalenten DEA EA3 an.
Ihre Lösung:
{q0 , q1 }
{q2 }
{q2 , q3 }
{q2 , q3 , q4 }
0
—
{q0 , q1 }
{q2 , q3 , q4 }
{q2 , q3 , q4 }
1
{q2 }
{q2 }
{q2 }
{q2 }
1|2
𝑞𝑠
1|2
𝑞2
0
𝑞23
0
1|2
0
1|2
𝑞𝑓
𝑞𝑒
0|1|2
0
DSA - 21/23
2
{q2 }
{q2 }
{q2 }
{q2 }
Aufgabe 10 — Petrinetze
Gegeben sei das folgende Petrinetz P N1 :
𝒕𝟏
𝒔𝟏
𝒔𝟐
𝒕𝟐
𝒔𝟑
𝒔𝟒
𝒕𝟑
a) Diskutieren Sie anhand von P N1 die Begriffe „aktivierte Transition“, „tote
Transition“, „lebendige Transition“, „lebendiges Petrinetze“ und „verklemmungsfreies Petrinetz“.
Ihre Lösung:
Eine Transition t ist aktiviert, wenn alle vorgelagerten Plätze ausreichend Marken
enthalten und t schalten kann (z.B. t1 ).
Eine Transition t ist tot, wenn t bei keiner erreichbaren Markierung aktiviert ist
(keine tote Transition in P N1 ).
Eine Transition t ist lebendig, wenn aus jeder erreichbaren Markierung in endlich
vielen Schritten eine Folgemarkierung erreicht werden kann, die t aktiviert (keine
lebendige Transition in P N1 ).
Ein Petrinetz ist lebendig, wenn alle Transitionen bei der gegebenen Anfangsmarkierung lebendig sind (trifft nicht auf P N1 zu).
Ein Petrinetz ist verklemmungsfrei, wenn für jede gültige Markierung mindestens
eine Transition aktiviert ist (trifft nicht auf P N1 zu).
DSA - 22/23
Aufgabe 11 — Entwurfsmuster für Algorithmen
a) Beschreiben Sie, was man unter einem Greedy-Algorithmus versteht.
Ihre Lösung:
Greedy-Algorithmen (gierige Algorithmen) zeichnen sich dadurch aus, dass sie
immer denjenigen Folgezustand auswählen, der zum Zeitpunkt der Wahl den
größten Gewinn bzw. das beste Ergebnis verspricht (Optimalitätsprinzip muss
gelten).
b) Beschreiben Sie, was man unter einem Divide-and-Conquer-Algorithmus
versteht.
Ihre Lösung:
Divide-and-Conquer-Algorithmen führen ein zu lösendes Problem auf ein identisches
Problem mit kleinerer Eingabemenge zurück. Die Lösung wird anschließend aus
den Teillösungen zusammengesetzt.
c) Beschreiben Sie, was man unter einem Backtracking-Algorithmus versteht.
Ihre Lösung:
Backtracking-Algorithmen bauen aus Teillösungen schrittweise eine Gesamtlösung
auf. Führt eine verfolgte Lösungsstrategie zu keiner Lösung, so wird der letzte
Schritt (die letzten Schritte) rückgängig gemacht und es wird ein alternativer
Lösungsweg gesucht.
d) Beschreiben Sie, was man unter dynamischer Programmierung versteht.
Ihre Lösung:
Bei der dynamischen Programmierung werden kleinere Teilprobleme zuerst gelöst
(und abgespeichert), um aus diesen größere Teillösungen zusammenzusetzen.
e) Beschreiben Sie, was man unter evolutionären Algorithmen versteht.
Ihre Lösung:
Ausgehend von zufälligen Initiallösungen werden mittels Kreuzung, Mutation und
dem survival of the fittest-Prinzip nach erreichen eines Schwellwerts eine Lösung
präsentiert.
DSA - 23/23
Herunterladen