• Keine Ergebnisse gefunden

186.813 Algorithmen und Datenstrukturen 1 VU 6.0 2. ¨Ubungstest SS 2016 2. Juni 2016

N/A
N/A
Protected

Academic year: 2021

Aktie "186.813 Algorithmen und Datenstrukturen 1 VU 6.0 2. ¨Ubungstest SS 2016 2. Juni 2016"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universit¨at Wien

Institut f¨ur Computergraphik und Algorithmen Algorithms and Complexity Group

186.813 Algorithmen und Datenstrukturen 1 VU 6.0 2. ¨ Ubungstest SS 2016

2. Juni 2016

Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:

Nachname: Vorname:

Matrikelnummer: Unterschrift:

Legen Sie w¨ahrend der Pr¨ufung Ihren Ausweis f¨ur Studierende vor sich auf das Pult.

Sie d¨urfen die L¨osungen nur auf die Angabebl¨atter schreiben, die Sie von der Aufsicht erhalten. Es ist nicht zul¨assig, eventuell mitgebrachtes eigenes Papier zu verwenden.

Benutzen Sie bitte dokumentenechte Schreibger¨ate (keine Bleistifte!).

Die Verwendung von Taschenrechnern, Mobiltelefonen, Tablets, Digitalkameras, Skrip- ten, B¨uchern, Mitschriften, Ausarbeitungen oder vergleichbaren Hilfsmitteln ist un- zul¨assig.

A1: A2: A3: Summe:

Erreichbare Punkte: 16 22 12 50

Erreichte Punkte:

Viel Erfolg!

(2)

Aufgabe A1: Hashtabellen (16 Punkte) F¨ugen Sie die folgenden Zahlen in die jeweiligen Hashtabellen ein, indem Sie die ange- gebenen Hashfunktionen und Strategien f¨ur die Kollisionsbehandlung benutzen.

a) (4 Punkte)

Einzuf¨ugende Zahl: 26

Kollisionsbehandlung: Double Hashingohne die Verbesserung nach Brent Hashfunktionen:

h1(k) = kmod 11 h2(k) = (kmod 8) + 1

Hashtabelle:

0 1 2 3 4 5 6 7 8 9 10

33 37 17 84 30

b) (4 Punkte)

Einzuf¨ugende Zahl: 26

Kollisionsbehandlung: Double Hashingmit der Verbesserung nach Brent Wird ein bereits vorhandenes Element verschoben, so muss die neue Position dieses Elementes eindeutig gekennzeichnet werden.

Hashfunktionen:

h1(k) = kmod 11 h2(k) = (kmod 5) + 1

Hashtabelle:

0 1 2 3 4 5 6 7 8 9 10

33 37 17 84 30

(3)

c) (8 Punkte)

Gegeben sind im Folgenden mehrere Hashverfahren. Geben Sie zu jedem an, ob es gut funktionieren w¨urde, oder ob es zu Problemen kommen k¨onnte. Begr¨unden Sie ihre Antworten.

I) (2 Punkte)

Multiplikationsmethode Tabellengr¨oße m = 210 Faktor A = π2

II) (2 Punkte)

Multiplikationsmethode Tabellengr¨oße m = 13 Faktor A = 2

III) (2 Punkte)

Divisions-Rest-Methode Tabellengr¨oße m = 25 h(k) = (k+ 1) mod m IV) (2 Punkte)

Divisions-Rest-Methode mit Double Hashing Tabellengr¨oße m = 27

h1(k) =k mod 23 h2(k) = (k mod 6) + 1

(4)

Aufgabe A2: B¨aume (22 Punkte)

a) (12 Punkte)

Gegeben sei der Wurzelknoten root eines (vermeintlichen) B-Baumes. Schreiben Sie eine rekursive Funktionint checkBTree(node, leftBound, rightBound)in detailliertem Pseudocode, die ¨uberpr¨uft ob der Baum tats¨achlich ein g¨ultiger B-Baum ist. Die Funktion soll die H¨ohe des Baumes zur¨uckgeben oder −1 falls es sich um keinen g¨ultigen B-Baum handelt.

Sie k¨onnen davon ausgehen, dass jeder Knoten f¨ur sich genommen ein korrekter Knoten ist, d.h. die Anzahl der Schl¨ussel/Kinder, sowie die Ordnung der Schl¨ussel innerhalb eines Knotens ist korrekt.

Die Parameter der Funktion sind wie folgt definiert:

• node ist ein Knoten des B-Baumes,

• leftBound und rightBound geben das geschlossene Intervall an, in dem sich die Schl¨ussel des ¨ubergebenen Knotens befinden d¨urfen.

Die Datenstruktur eines B-Baum-Knotensr ist wie folgt definiert:

• r.key[x], 1≤x — Ein Array das die Schl¨ussel des Knotens speichert.

• r.child[x], 0 ≤x— Ein Array das Verweise auf die Kindknoten speichert.

• Bl¨atter sind Knoten mit r.key.size() == r.child.size() == 0.

Arrays erlauben Ihnen ausschließlich die folgenden Operationen:

• a[x] — Indexzugriff auf das Element an Position x des Arraysa.

• a.size()— Gibt die Anzahl an gespeicherten Elementen im Arrayazur¨uck.

Sie k¨onnen davon ausgehen, dass der B-Baum paarweise verschiede- ne ganzzahlige Schl¨ussel aus [0,100] speichert. Die Funktion wird mit checkBTree(root, 0, 100) aufgerufen.

(5)
(6)

b) (10 Punkte) Gegeben sei folgender AVL-Baum:

50 25

13

7 18

37

75 62

56

90

Teilen Sie alle noch nicht vorhandenen ganzen Zahlen aus dem Intervall [0,100]

in Teilintervalle auf, sodass jede Zahl aus demselben Teilintervall an der gleichen Position in dem gegebenen Baum eingef¨ugt werden w¨urde. Tragen Sie nun die- se Intervalle zusammen mit der entsprechenden Einf¨ugestelle sowie die Art der Reorganisation, welche nach dem Einf¨ugen einer Zahl in einem solchen Intervall ausgef¨uhrt werden muss, in die folgende Tabelle ein. Die erste Zeile in der Tabelle ist bereits exemplarisch ausgef¨ullt.

Intervall Einf¨ugestelle Art der Reorganisation

keine einfache Rotation doppelte Rotation

0–6 links von 7 X

(7)
(8)

Aufgabe A3: Greedy Algorithmen (12 Punkte) a) (6 Punkte)

Geben Sie zu jedem der folgenden drei gewichteten Graphen an, wieviele minimale Spannb¨aume der Graph hat.

1

2

3

4 5

4

Anzahl:

1

4

3

4 2

4

Anzahl:

1 2 3

4 5

6 Anzahl:

b) (6 Punkte)

Betrachten Sie das sogenanntek-Minimum Spanning Tree (k-MST) Problem, wel- ches wie folgt definiert ist.

Eine Instanz desk-MST Problems ist gegeben durch einen kantengewichteten zu- sammenh¨angenden Graph G = (V, E) mit Kantengewichten c(e) : E → R und eine nat¨urliche Zahl k mit k > 2. Gesucht ist ein zusammenh¨angender Teilbaum von Gmit genau k Knoten und minimalem Kantengewicht.

Was w¨urde passieren, wenn Sie die bekannten Algorithmen von Prim bzw. Kruskal auf das Problem anwenden und beide Algorithmen nachk−1 hinzugef¨ugten Kanten abbrechen? Zeigen Sie, dass beide Algorithmen das falsche bzw. kein optimales Ergebnis liefern, indem Sie die folgenden Gegenbeispiele vervollst¨andigen.

I) (3 Punkte)

Geben Sie f¨ur den folgenden Graphen Kantengewichte an, sodass der modifi- zierte Algorithmus von Kruskal f¨urk = 4 ein falsches Ergebnis liefert.

II) (3 Punkte) Geben Sie f¨ur den folgenden Graphen Kantengewichte und einen Startknoten an, sodass der modifizierte Algorithmus von Prim f¨ur k = 4 beginnend mit dem angegebenen Startknoten ein falsches Ergebnis liefert.

(9)

Referenzen

ÄHNLICHE DOKUMENTE

Bei einem Fehler (falsches oder fehlendes Kreuz) wird noch 1 Punkt vergeben, bei zwei oder mehr Fehlern werden 0 Punkte f¨ ur diese Aufgabe vergeben.. Wenn es einen

Bei einem Fehler (falsches oder fehlendes Kreuz) wird noch 1 Punkt vergeben, bei zwei oder mehr Fehlern werden 0 Punkte f¨ ur diese Aufgabe vergeben.. In einem Maximierungsproblem

• Schreiben Sie detaillierten Pseudocode f¨ur eine effiziente rekursive Proze- dur, die die H¨ohe x.heigth und die Balancierung x.bal jedes Knotens x eines nat¨urlichen

Kann die folgende Liste L einer Reihenfolge von Kanten entsprechen, die von Prim’s (egal welcher Startknoten) bzw.. Welche Knoten enth¨ alt die Menge X am Ende?. b)

• (4 Punkte) Geben Sie die Laufzeit von Sortieren durch Fachverteilung in Abh¨ angig- keit von n und l f¨ ur den besten und schlechtesten Fall in Θ-Notation an und begr¨ unden Sie

Schreiben Sie in detailliertem Pseudocode eine Methode checkBalance(root), die f¨ ur einen Baum mit Wurzelknoten root uberpr¨ ¨ uft, ob es sich um einen g¨ ultigen AVL-Baum

Wenden Sie Sortiere(A, n) auf diese Folge an und schreiben Sie dabei den Zustand der Eingabefolge zu Beginn jedes Durchlaufs der wiederhole-Schleife auf.. Beschreiben Sie

Aufgabe 2.A: Approximationsalgorithmen (20 Punkte) Bei der Best-Fit-Heuristik f¨ ur das Bin-Packing-Problem wird jeder Gegenstand nicht in die ehestm¨ ogliche Kiste gelegt sondern