• Keine Ergebnisse gefunden

Testaufgaben zum Fach Algorithmen und Datenstrukturen

N/A
N/A
Protected

Academic year: 2021

Aktie "Testaufgaben zum Fach Algorithmen und Datenstrukturen"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Testaufgaben zum Fach Algorithmen und Datenstrukturen

1. Aufgabe: Sortieren und Suchen

a) Ist die folgende Behauptung richtig oder falsch ?

"Die Laufzeit des rekursiven 2-Wege-Merge-Sort ist unabhängig von den Werten der Schlüssel in der Eingabedatei." Begründen Sie Ihre Antwort.

b) Modifizieren Sie das hier abgedruckte Verfahren "Radix Exchange" aus der Vorlesung, so daß es eine absteigend sortierte Liste liefert und geben Sie eine verbale Erläuterung und Begründung Ihrer Änderungen an.

unsigned Z(unsigned k, int i) { return (k >> i) & 0x0001;}

void RadixSort (int *A, int left, int right, int b) { int i, j;

int item;

if ((left<right) && (b>=0))

{ i = left; j = right;

while (i != j) {

while (Z(A[i],b)==0 && (i<j)) i++;

while (Z(A[j],b)!=0 && (j>i)) j--;

item = A[i];

A[i] = A[j];

A[j] = item;

}

if (Z(A[right],b) == 0) j++;

RadixSort (A,left, j-1,b-1);

RadixSort (A,j, right,b-1);

} }

c) Das folgende Programm zum binären Suchen enthält Fehler. Geben Sie an, warum es falsch ist.

int Search (int *A, int n, int x) { int i, j, k;

i=1; j=n; k=1;

while (i<j) {

k = (i + j) / 2;

if (A[k]<x) i = k+1;

else j = k;

};

return(k);

}

(2)

2. Aufgabe: Vergleich binärer Bäume

Schreiben Sie eine Funktion compareTrees , die feststellt, ob zwei Bäume T1 und T2 iden- tisch sind, d.h. die gleiche Knotenstruktur besitzen und in den Knoten identische Schlüssel haben. Es soll die Klasse Tree aus den Übungen zugrunde gelegt werden.

Der Prototyp habe die Form: bool compareTrees (Node *root1, Node *root);

Der Aufruf habe die Form: test = compareTrees(T1.root, T2.root);

3. Aufgabe: In-Order-Durchlauf

a) Sind zwei binäre Suchbäume, bei denen der Durchlauf in symmetrischer Reihenfolge die selbe Schlüsselfolge ergibt, identisch ? Begründen Sie Ihre Antwort !

b) Sind zwei vollständige binäre Suchbäume, bei denen der Durchlauf in symmetrischer Reihenfolge die selbe Schlüsselfolge ergibt, identisch ? Begründen Sie Ihre Antwort !

4. Aufgabe: AVL-Bäumen

a) Wieviele innere Knoten hat ein AVL-Baum der Höhe 12 mindestens ? b) Wieviele innere Knoten hat ein AVL-Baum der Höhe h=12 höchstens ?

Führen Sie mit dem unten gezeigten AVL-Baum nacheinander die folgenden Operationen durch. Kommentieren Sie Ihr Vorgehen, so daß es nachvollziebar wird und geben Sie die Zwischenzustände (vor dem Ausgleich) an:

1. Einfügen eines Knotens mit dem Schlüssel 292 2. Löschen des Knotens 5

3. Löschen des Knotens 116 4. Löschen des Knotens 328

328 59

5 174

116

665

403 777

3 295 888

290 300

(3)

5. Aufgabe: B-Bäume

Es ist der folgende B-Baum der Ordnung m=4 gegeben:

54

50 72 86

27 40 42 51 56 77 88

Löschen Sie daraus nacheinander die Schlüssel 56, 86, 54, 72 , das Ergebnis einer Lösch- operation ist dabei stets zum Ausgangspunkt für die nächste zu nehmen.

(4)

6. Aufgabe: Hashing

a) Umrechnung nichtnumerischer Schlüssel

Nach dem in der Vorlesung behandelten Verfahren sind alphanumerische Schlüssel in nu- merische Werte umzurechnen. Zugrunde liegt das folgende, 62 Zeichen umfassende Alpha- bet::

A, B, ... , Z, a, b, ... , z, 0, 1, ... , 9

Wie lautet Ihre Benutzerkennung (nicht Ihr Paßwort) an der FH Regensburg ? : _________

Bestimmen Sie zu dem Schlüssel, der aus den ersten 4 Zeichen Ihrer Benutzerkennung ge- bildet wird, den numerischen Schlüssel.

b) Double Hashing

Die Buchstaben des Textes

T E S T A U F G A B E

sollen einzeln in der Reihenfolge, in der sie im Text vorkommen, in eine Hash-Tabelle einge- ordnet werden. Dazu gehen wir von der folgenden Zuordnung der Buchstaben zu numeri- schen Schlüsseln aus:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Verwenden Sie dazu das Double Hashing-Verfahren mit den folgenden Hash-Funktionen Ho(k) = k mod 17

Hi (k) = (Ho(k) + i * H'(k) ) mod 17 für i = 1, 2, 3, ...

Dabei ist H'(k) eine weitere Hash-Funktion, mit der die Schrittweite zum Sondieren in Abhängigkeit vom Schlüssel k selbst bestimmt wird. Wir verwenden

H'(k) = 8 - (k mod 8)

Markieren Sie die Indexpositionen, an denen eine Kollision aufgetreten ist. Wieviele Kollisionen treten dabei insgesamt auf ?

Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

HashTabelle

Einfüge-Schritt Nr.

Anzahl der Kollisionen: _____________

Referenzen

ÄHNLICHE DOKUMENTE

daß eine Zählweise existierte, bei der für die Zahlen über 10 statt mit. 11, 12 weiterzuzählen wieder mit

- Falls kleiner, rechte Teilliste um 1 Position nach rechts verschieben, neues Element auf nun freie Position setzen, wiederholen des Einfügens mit linker Teilliste.. -

Nein ! Beim symmetrischen Durchlauf erhält man die Schlüsselmenge immer als auf- steigend sortierte Folge. Mit der gleichen Schlüsselmenge kann man aber viele ver- schiedene

Da argumentiert werden kann (wie in einigen Beschwerden geschehen), dass die Offenbarung von D1 möglicherweise nicht für die Schlussfolgerung ausreicht, dass Pappe in der

[r]

[r]