Aufgaben - TuH2

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Loading
Link zur Hauptseite: Teile_und_Herrsche_2


Inhaltsverzeichnis

Aufgaben zur Binären Suche

Aufgabe (a) - Durchrechnen

Gegeben sei folgende Liste:

(2 3 5 8 9 11 13 20 32 33 38)

Gesucht ist das Element 13


Verdeutlichen sie sich die Arbeitsweise der binären Suche. Zeichnen sie den Suchbaum!

Aufgabe (b) - Empirische Analyse

Die modifizierte Variante der binären Suche in Scheme bietet mit ihrem Zähler die Möglichkeit für eine empirische Analyse. Führen Sie eine empirische Aufwandsanalyse durch. Um ausreichend Testfälle zu produzieren, stehen die Prozeduren zzls für die Generierung einer Zufallszahlenliste, sowie mv-mergesort (Bekannt aus Teile und Herrsche 1) zum Sortieren der generierten Liste zur Verfügung.

Führen Sie die empirische Aufwandsanalyse außerdem mit der Sequenziellen Suche durch, um einen qualitativen Vergleich anstellen zu können.

Der Scheme-Interpreter versteht das Sprachelement random zunächst noch nicht. Eine hier "versteckte" Prozedur definiert eine "Glücksrad-Fabrik", die im Folgenden verwendet wird, um einen Zufallszahlen-Generator (random) zu erzeugen.

Hilfsprozeduren

Der Scheme-Interpreter versteht das Sprachelement random zunächst noch nicht. Eine hier "versteckte" Prozedur definiert eine "Glücksrad-Fabrik", die im Folgenden verwendet wird, um einen Zufallszahlen-Generator (random) zu erzeugen.

Hinweis 2:
Wie in der Vorlesung "Probabilistische Algorithmen" im Kapitel Probabilistische_Algorithmen_2#.28Pseudo.29Zufallszahlen zu 
erfahren ist, ist die Bereitstellung von Zufallszahlen keinesfalls Trivial. Die Random-Prozedur stellt deshalb bei jedem Aufruf die gleichen 
"zufälligen" Zahlen her. In einer Lokalen DrScheme-Umgebung funktioniert dies besser. Für unsere Zwecke soll dies hier aber ausreichen

Nun können wir eine Hilfsprozedur zur Erzeugung von Zufallszahlenlisten definieren.


Vorgefertigte, unsortierte Listen


Diese Listen müssen für die Binäre Suche in Sortierter Form vorliegen. Zum Sortieren verwenden wir die Prozedur mv-mergesort welche in der Vorlesung Teile und Herrsche 1 behandelt wurde.

Die sortierten Listen

Überprüfe, ob die Liste korrekt Sortiert wurde.

Somit haben wir alle Werkzeuge zur Hand, um die Empirische Analyse durchzuführen und den Aufwand der Binären Suche mit dem der Sequenziellen Suche zu vergleichen

Beispielaufruf Binaersuche:

Beispielaufruf Sequenzielle Suche:

Von Interesse sind für die Analyse die Anzahl der Rekursionsschritte. Führen Sie nun die Aufwandsanalyse mit geeigneten Werten durch und fassen Sie Ihre Ergebnisse zusammen.

Aufgabe (c) - Modifikation der Binaeren Suche

Auf der Hauptseite wurde schon angemerkt, dass die Binäre Suche zwar im Prinzip Logarithmischen Aufwand besitzt, unsere Scheme-Implementation dies jedoch nicht erfüllt. Machen Sie sich klar, warum dies so ist. Betrachten Sie dazu auch den Quellcode der Prozedur teillisten2

Überlegen Sie sich eine Lösung für dieses Problem. Wie könnte man die Binäre Suche umgestalten? Ziehen Sie die Möglichkeiten von Vectoren in Scheme in Betracht. Scheme stellt unter anderem diese Sprachelemente zur Benutzung von Vectoren bereit:

vector: Definiert einen Vektor

vector?: Überprüft, ob es sich um einen Vektor handelt

vector-length: gibt die Länge des Vektors zurück

vector-ref: gibt das Element an einer bestimmten Stelle zurück

vector->list: Wandelt einen Vektor in eine Liste um

list->vektor: Wandelt eine Liste in einen Vektor um

Genauere Erklärungen und ein paar mehr Sprachelemente finden Sie z.B. HIER


Versuchen Sie nun eine verbesserte Binäre Suche zu Implementieren. Sie können dafür dieses Run-Element verwenden:

Eine mögliche Lösung finden Sie auf der Lösungsseite

Aufgaben zum Karatsuba Algorithmus

Aufgabe (a)

Multiplizieren sie folgende Werte mit Hilfe Karatsubas Verfahren.

Strassen-Algorithmus

Aufgabe (a)

Berechnen Sie folgendes Produkt mit Hilfe des Strassenalgorithmus. Verwenden Sie ein Computer-Algebra-System.


Stellen Sie dabei auch speziell die Schritte heraus, in denen das Teilen und das Herrschen in diesem Algorithmus zum tragen kommt.


Lösungen

Damits nicht gleich ins Auge fällt haben wir die Lösungen auf eine seperate Seite gepackt! Die findet ihr hier: Lösungen - TuH2L

Persönliche Werkzeuge