• Keine Ergebnisse gefunden

186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. ¨Ubungstest SS 2011 10. Juni 2011

N/A
N/A
Protected

Academic year: 2022

Aktie "186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. ¨Ubungstest SS 2011 10. Juni 2011"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Technische Universit¨at Wien

Institut f¨ur Computergraphik und Algorithmen Arbeitsbereich f¨ur Algorithmen und Datenstrukturen

186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. ¨ Ubungstest SS 2011

10. Juni 2011

Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:

Nachname: Vorname:

Matrikelnummer: Studienkennzahl:

Anzahl abgegebener Zusatzbl¨atter:

Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.

Sie k¨onnen die L¨osungen entweder direkt auf die Angabebl¨atter oder auf Zusatzbl¨atter schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zul¨assig, eventuell mitgebrachtes eigenes Papier zu verwenden.

Die Verwendung von Taschenrechnern, Mobiltelefonen, Skripten, B¨uchern, Mitschriften, Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzul¨assig.

Die Arbeitszeit betr¨agt 55 Minuten.

A1: A2: A3: Summe:

Erreichbare Punkte: 18 16 16 50

Erreichte Punkte:

Viel Erfolg!

(2)

Aufgabe 1.A: Hashverfahren (18 Punkte)

a) (6 Punkte)

Gegeben seien zwei unterschiedliche Hashtabellen mit Tabellengr¨oße m = 7, die zur Kollisionsbehandlung Double Hashing verwenden. F¨ugen Sie die angegebenen Werte jeweils in die daf¨ur vorgesehenen Tabellen ein. Verwenden Sie hierf¨ur die folgenden Hashfunktionen:

h1(k) =k mod 7 h2(k) = (k mod 5) + 3

Wird ein bereits eingef¨ugtes Element verschoben, so muss die neue Position dieses Elementes eindeutig gekennzeichnet werden.

• F¨ugen Sie den Wert 7 mit der Verbesserung nach Brent ein.

0 1 2 3 4 5 6

21 3 4 5

• F¨ugen Sie den Wert 10 ohne der Verbesserung nach Brent ein.

0 1 2 3 4 5 6

3 6

b) (12 Punkte) Gegeben ist eine Hashtabelle in Form eines Feldes feld mit der fest- gelegten Gr¨oßem. Jedes Elementfeld[j], j = 0, . . . , m−1, besteht aus folgenden Komponenten:

• feld[j].schluessel enth¨alt den Schl¨ussel;

• feld[j].zustand enth¨alt einen der folgenden Werte:

– besetzt: feld[j] enth¨alt einen Schl¨ussel;

– frei: feld[j] ist frei und war nie besetzt;

– wiederfrei:feld[j] war schon besetzt, ist aber wieder frei.

Schreiben Sie eine Prozedurinsert(key) in Pseudocode, die den Schl¨ussel key an erstm¨oglicher Stelle in eine nichtleere Hashtabelle einf¨ugt. Folgende Punkte sind zu beachten:

• Zur Behandlung von Kollisionen ist Double Hashing ohne der Verbesserung nach Brent mit den Hashfunktionen

h1(k) =k mod m und h2(k) = (k mod (m−1)) + 1 zu verwenden.

• Ist der einzuf¨ugende Schl¨usselkey bereits in der Hashtabelle enthalten, so soll dieser nicht erneut eingef¨ugt werden.

• Sie k¨onnen davon ausgehen, dass die Hashtabelle noch nicht vollst¨andig bef¨ullt ist und ein freier Platz f¨ur den Schl¨ussel key gefunden werden kann.

• Auf Die Tabellengr¨oße m und das Feldfeld kann global zugegriffen werden.

(3)

Aufgabe 2.A: Graphen (16 Punkte) Gegeben ist der folgende gewichtete ungerichtete GraphG:

5 4 3

1

A

B C

G E

F

7

12

9

8 6

D H

2

11

10

a) (8 Punkte) Auf dem gegebenen Graphen G wird die aus dem Skriptum bekannte Tiefensuche durchgef¨uhrt. Welche der folgenden Listen von besuchten Knoten k¨onnen dabei in genau dieser Reihenfolge entstehen, wenn die Nachbarn eines Knotens in lexikographischer bzw. in beliebiger Reihenfolge abgearbeitet werden?

Kreuzen Sie Zutreffendes an.Hinweis: Jede Zeile wird nur dann gewertet wenn sie vollst¨andig richtig ist.

Reihenfolge lexikograph. beliebig keines A B C D E F G H

A D H E G B C F A G E F C B H D A B C F E G H D

b) (8 Punkte) F¨uhren Sie im GraphenGdie Algorithmen vonPrim und Kruskal zum Finden eines minimalen Spannbaums durch (die Kantengewichte stehen bei den Kanten) und tragen Sie die Kanten in der Reihenfolge, wie sie zu dem Spannbaum hinzugef¨ugt werden, in die unten angef¨uhrte Tabelle ein. Falls Sie einen Startknoten ben¨otigen, w¨ahlen SieD.Hinweis: Es werden nicht unbedingt alle Zeilen ben¨otigt.

Als Kantenbezeichnung k¨onnen Sie auch die Gewichte der Kanten eintragen.

Reihenfolge Kruskal Prim 1. Kante

2. Kante 3. Kante 4. Kante 5. Kante 6. Kante 7. Kante 8. Kante 9. Kante 10. Kante

(4)

Aufgabe 3.A: Optimierung (16 Punkte) Gegeben ist ein vollst¨andiger, ungerichteter

GraphG= (V, E):

5

2 4

1

3

4 2

1

5

3

6 7

8

9

10

Jeder Kante (u, v) ∈ E ist ein Gewicht weight(u,v) zugewiesen. Gegeben ist ferner folgender Algorithmus:

Was-bin-ich?

1: Input: Graph G= (V, E)

2: Output: KantenmengeF und

3: Output: Feld X[1. . .|V|]

4: F ={};

5: X[1. . .|V|] = (0,0, . . . ,0);

6: A(Node4, Node4, 1);

Prozedur

A(v, startnode, i)

1: X[v] =i;

2: i=i+ 1;

3: weightbest=∞;

4: nextnode=N U LL;

5: f¨ur Knoten w∈N(v){

6: falls X[w] == 0 ∧

weight(v,w) < weightbest dann {

7: nextnode=w;

8: weightbest=weight(v,w);

9: }

10: }

11: falls nextnode == N U LL dann {

12: F =F ∪(v, startnode);

13: } sonst {

14: F =F ∪(v, nextnode);

15: A(nextnode, startnode, i);

16: }

17: return;

• Welche Kanten liefert der Algorithmus Was-bin-ich? f¨ur den oben angef¨uhrten Graphen G in F zur¨uck? Markieren Sie diese Kanten im Graphen G. Geben Sie weiters das FeldX nach der Ausf¨uhrung des Algorithmus an.

• Beschreiben Sie in einer Phrase, was dieser Algorithmus allgemein f¨ur einen belie- bigen vollst¨andigen, ungerichteten Graphen macht und inF bzw. X zur¨uckliefert.

• Geben Sie f¨ur einen beliebigen vollst¨andigen, ungerichteten Graphen die genaue Anzahl der in F gespeicherten Kanten, in Abh¨angigkeit der Anzahl der Knoten

|V|, an.

• Auf welchem aus der Vorlesung bekannten Verfahren beruht der AlgorithmusWas- bin-ich?

(5)

Technische Universit¨at Wien

Institut f¨ur Computergraphik und Algorithmen Arbeitsbereich f¨ur Algorithmen und Datenstrukturen

186.172 Algorithmen und Datenstrukturen 1 VL 4.0 2. ¨ Ubungstest SS 2011

10. Juni 2011

Machen Sie die folgenden Angaben bitte in deutlicher Blockschrift:

Nachname: Vorname:

Matrikelnummer: Studienkennzahl:

Anzahl abgegebener Zusatzbl¨atter:

Legen Sie bitte Ihren Studentenausweis vor sich auf das Pult.

Sie k¨onnen die L¨osungen entweder direkt auf die Angabebl¨atter oder auf Zusatzbl¨atter schreiben, die Sie auf Wunsch von der Aufsicht erhalten. Es ist nicht zul¨assig, eventuell mitgebrachtes eigenes Papier zu verwenden.

Die Verwendung von Taschenrechnern, Mobiltelefonen, Skripten, B¨uchern, Mitschriften, Ausarbeitungen oder vergleichbaren Hilfsmitteln ist unzul¨assig.

Die Arbeitszeit betr¨agt 55 Minuten.

B1: B2: B3: Summe:

Erreichbare Punkte: 16 16 18 50

Erreichte Punkte:

Viel Gl¨uck!

(6)

Aufgabe 1.B: Optimierung (16 Punkte) Gegeben ist ein vollst¨andiger, ungerichteter

GraphG= (V, E):

4

2 10

1

3

1 2

4

5

3

6 7

8

9

5

Jeder Kante (u, v) ∈ E ist ein Gewicht weight(u,v) zugewiesen. Gegeben ist ferner folgender Algorithmus:

Was-bin-ich?

1: Input: Graph G= (V, E)

2: Output: KantenmengeF und

3: Output: Feld X[1. . .|V|]

4: F ={};

5: X[1. . .|V|] = (0,0, . . . ,0);

6: A(Node3, Node3, 1);

Prozedur

A(v, startnode, i)

1: X[v] =i;

2: i=i+ 1;

3: weightbest=∞;

4: nextnode=N U LL;

5: f¨ur Knoten w∈N(v){

6: falls X[w] == 0 ∧

weight(v,w) < weightbest dann {

7: nextnode=w;

8: weightbest=weight(v,w);

9: }

10: }

11: falls nextnode == N U LL dann {

12: F =F ∪(v, startnode);

13: } sonst {

14: F =F ∪(v, nextnode);

15: A(nextnode, startnode, i);

16: }

17: return;

• Welche Kanten liefert der Algorithmus Was-bin-ich? f¨ur den oben angef¨uhrten Graphen G in F zur¨uck? Markieren Sie diese Kanten im Graphen G. Geben Sie weiters das FeldX nach der Ausf¨uhrung des Algorithmus an.

• Beschreiben Sie in einer Phrase, was dieser Algorithmus allgemein f¨ur einen belie- bigen vollst¨andigen, ungerichteten Graphen macht und inF bzw. X zur¨uckliefert.

• Geben Sie f¨ur einen beliebigen vollst¨andigen, ungerichteten Graphen die genaue Anzahl der in F gespeicherten Kanten, in Abh¨angigkeit der Anzahl der Knoten

|V|, an.

• Auf welchem aus der Vorlesung bekannten Verfahren beruht der AlgorithmusWas- bin-ich?

(7)

Aufgabe 2.B: Graphen (16 Punkte) Gegeben ist der folgende gewichtete ungerichtete GraphG:

6 5 4

1

H

B C

G D

F

8

13

10

9 7

E A

2

12

11

a) (8 Punkte) Auf dem gegebenen Graphen G wird die aus dem Skriptum bekannte Tiefensuche durchgef¨uhrt. Welche der folgenden Listen von besuchten Knoten k¨onnen dabei in genau dieser Reihenfolge entstehen, wenn die Nachbarn eines Knotens in lexikographischer bzw. in beliebiger Reihenfolge abgearbeitet werden?

Kreuzen Sie Zutreffendes an.Hinweis: Jede Zeile wird nur dann gewertet wenn sie vollst¨andig richtig ist.

Reihenfolge lexikograph. beliebig keines A E B C D F G H

A F D G C H B E A F C B H G D E A F C D G B E H

b) (8 Punkte) F¨uhren Sie im GraphenGdie Algorithmen vonPrim und Kruskal zum Finden eines minimalen Spannbaums durch (die Kantengewichte stehen bei den Kanten) und tragen Sie die Kanten in der Reihenfolge, wie sie zu dem Spannbaum hinzugef¨ugt werden, in die unten angef¨uhrte Tabelle ein. Falls Sie einen Startknoten ben¨otigen, w¨ahlen SieA.Hinweis: Es werden nicht unbedingt alle Zeilen ben¨otigt.

Als Kantenbezeichnung k¨onnen Sie auch die Gewichte der Kanten eintragen.

Reihenfolge Prim Kruskal 1. Kante

2. Kante 3. Kante 4. Kante 5. Kante 6. Kante 7. Kante 8. Kante 9. Kante 10. Kante

(8)

Aufgabe 3.B: Hashverfahren (18 Punkte) a) (12 Punkte) Gegeben ist eine Hashtabelle in Form eines Feldes feld mit der fest- gelegten Gr¨oßem. Jedes Elementfeld[j], j = 0, . . . , m−1, besteht aus folgenden Komponenten:

• feld[j].schluessel enth¨alt den Schl¨ussel;

• feld[j].zustand enth¨alt einen der folgenden Werte:

– besetzt: feld[j] enth¨alt einen Schl¨ussel;

– frei: feld[j] ist frei und war nie besetzt;

– wiederfrei:feld[j] war schon besetzt, ist aber wieder frei.

Schreiben Sie eine Prozedurinsert(key) in Pseudocode, die den Schl¨ussel key an erstm¨oglicher Stelle in eine nichtleere Hashtabelle einf¨ugt. Folgende Punkte sind zu beachten:

• Zur Behandlung von Kollisionen ist Double Hashing ohne der Verbesserung nach Brent mit den Hashfunktionen

h1(k) =k mod m und h2(k) = (k mod (m−1)) + 1 zu verwenden.

• Ist der einzuf¨ugende Schl¨usselkey bereits in der Hashtabelle enthalten, so soll dieser nicht erneut eingef¨ugt werden.

• Sie k¨onnen davon ausgehen, dass die Hashtabelle noch nicht vollst¨andig bef¨ullt ist und ein freier Platz f¨ur den Schl¨ussel key gefunden werden kann.

• Auf Die Tabellengr¨oße m und das Feldfeld kann global zugegriffen werden.

b) (6 Punkte)

Gegeben seien zwei unterschiedliche Hashtabellen mit Tabellengr¨oße m = 7, die zur Kollisionsbehandlung Double Hashing verwenden. F¨ugen Sie die angegebenen Werte jeweils in die daf¨ur vorgesehenen Tabellen ein. Verwenden Sie hierf¨ur die folgenden Hashfunktionen:

h1(k) =k mod 7 h2(k) = (k mod 6) + 2

Wird ein bereits eingef¨ugtes Element verschoben, so muss die neue Position dieses Elementes eindeutig gekennzeichnet werden.

• F¨ugen Sie den Wert 6 ohneder Verbesserung nach Brent ein.

0 1 2 3 4 5 6

2 13

• F¨ugen Sie den Wert 7 mit der Verbesserung nach Brent ein.

0 1 2 3 4 5 6

21 3 4 6

Referenzen

ÄHNLICHE DOKUMENTE

• 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

a) (6 Punkte) Kreuzen Sie in der folgenden Tabelle die stabilen Sortierverfahren an und geben Sie die Best- und Worst-Case Laufzeit, in Abh¨angigkeit von der Anzahl der zu

• Wieviele Schl¨usselvergleiche und Schl¨usselbewegungen sind bei einer bereits aufsteigend sortierten Folge in Abh¨angigkeit der Anzahl n der zu sortierenden Schl¨ussel notwendig,

Aufgabe 1.A: Suchen und Graphen (20 Punkte) a) (12 Punkte) Schreiben Sie in detailliertem Pseudocode eine Funktion kreissuche(V, E ), die ¨uberpr¨uft, ob ein

Beachten Sie, dass zu einem Beweis auch die Angabe der notwendigen Konstanten (inkl.. Welche Darstellungsform f¨ur den Graphen ist aus Effizienzgr¨unden zu w¨ahlen: Adjazenzmatrix

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)

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

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