10. Hausübung Algorithmen und Datenstrukturen

Ähnliche Dokumente
Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Binäre Bäume Darstellung und Traversierung

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B4.1 Definitionen und Eigenschaften. B4.2 Traversierung. B4.

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Vorlesung Datenstrukturen

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Software Entwicklung 1

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren

2. Hausübung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

2.4 Durchlaufen von Bäumen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Übungsblatt 11. Thema: Algorithmen und Datenstrukturen: Bäume

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Verkettete Datenstrukturen: Bäume

Übung: Algorithmen und Datenstrukturen SS 2007

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Algorithmen, Datenstrukturen und Programmieren II SS 2001

Kapitel 12: Induktive

3. Hausübung Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen SS07

Allgemeine Informatik 2 im SS 2007 Programmierprojekt

Algorithmen und Datenstrukturen 1

Motivation Binäre Suchbäume

Algorithmische Graphentheorie

Datenstruktur Baum Software Entwicklung 1

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

ADS: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

368 4 Algorithmen und Datenstrukturen

Ein fundamentales mathematisches Beweisprinzip p ist die vollständige Induktion: Sei p : Falls

2 Repräsentation, Struktur und Interpretation von einfachen Rechenvorschriften

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Datenstrukturen und Algorithmen (SS 2013)

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer)

Übung Datenstrukturen. Bäume

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

WS 2013/14. Diskrete Strukturen

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume

Algorithmen und Datenstrukturen

Tutorium Algorithmen & Datenstrukturen

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Übung Algorithmen und Datenstrukturen

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Übung zur Vorlesung Algorithmische Geometrie

Kap. 4.2: Binäre Suchbäume

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

Automatisches Zeichnen von Graphen

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Informatik II Bäume zum effizienten Information Retrieval

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

Kapitel 2: Zeichnen von Bäumen Beispiel: Baumzeichnung

Bäume, Anwendung und Begriffe

5 Bäume. 5.1 Suchbäume. ein geordneter binärer Wurzelbaum. geordnete Schlüsselwertmenge. heißt (schwach) sortiert, g.d.w. gilt:

Antwort: h = 5.70 bit Erklärung: Wahrscheinlichkeit p = 1/52, Informationsgehalt h = ld(1/p) => h = ld(52) = 5.70 bit

Einführung in die Informatik 2

Einführung in die Informatik 2 9. Übung

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

7. Sortieren Lernziele. 7. Sortieren

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Vorlesung 15a. Quellencodieren und Entropie

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe

Software Entwicklung 1

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Tutoraufgabe 1 (Programmieren in Prolog):

Übung 3 Musterlösung

Datenstrukturen. einfach verkettete Liste

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Boolsche Algebra 3.3 Induktion und Rekursion

Algorithmen und Datenstrukturen 1-5. Seminar -

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Institut für Programmierung und Reaktive Systeme 22. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

13. Binäre Suchbäume

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Algorithmen und Datenstrukturen

Informatik II Übung 7. Gruppe 2 Carina Fuss

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Logik für Informatiker

Transkript:

Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 10. Hausübung Algorithmen und Datenstrukturen Sommersemester 2009 Abgabetermin: Montag, 22.06.2009, 10:00 Uhr 15.06.2009 1 Anzahl Knoten in Bäumen mit Verweigungsgrad k Bäume mit Verweigungsgrad k: Sei k > 2 eine natürliche Zahl und S eine abzählbare Menge von Schlüsselwerten. Die Menge kb S der Bäume (mit Verzweigungsgrad k) übersist wie folgt definiert: (B) Jeder Schlüssel s S ist ein Baum T der Höhe h(t) 1 mit Wurzel s äußerer Knoten oder auch Blatt). (s ist ein (R) Sind T 1,..., T k Bäume der Höhen h 1,..., h k und istl S ein Schlüssel, so ist T (l, T 1,..., T k ) ein Baum der Höhe h(t) 1+ max{h(t 1 ),...,h(t k )} mit Wurzell (l ist ein innerer Knoten und direkter Vorgänger der Wurzelknoten von T 1,..., T k ). (A) Nichts sonst ist ein Baum. Beispiele für Bäume mit Verzweigungsgrad 2 sind A, (E, A, (D, B, C)) und (E, (D, B, C), (D, B, C)). Analog zu Bäumen aus Termen (siehe Folie 6-5), lassen sich Bäume graphisch darstellen: Als Tiefe eines Knotensνin einem Baum T bezeichnet man die Anzahl von übergeordneten Knoten vonν, d.h. die Anzahl von Vorgängern. Ein Baum T heißt vollständig, falls alle Blätter in T die gleiche Tiefe haben. Im obigen Beispiel hat jeder mit B beschriftete Knoten die Tiefe 2 und jeder mit D beschriftete Knoten die Tiefe 1. Der erste und der letzte Baum sind vollständig. Seien beliebige natürliche Zahlen h>0, k>2 gegeben. a) Wie viele Blätter hat ein vollständiger Baum der Höhe h mit Verzweigungsgrad k? b) Wie viele innere Knoten hat ein vollständiger Baum der Höhe h mit Verzweigungsgrad k? 1

c) Wie viele Knoten (innere und äußere) hat ein beliebiger Baum der Höhe h mit Verzweigungsgrad k maximal? Beweisen Sie die von Ihnen aufgestellten Behauptungen. Traversierung von Baümen: Betrachten Sie folgenden Baum mit Verzweigungsgrad 3: (1,(2,A,B,C),(2,(3,E,F,(4,G,H,I)),B,C),(2,A,(3,E,F,G),C)) Bezeichne für jeden Baum der Höhe h>1 mit Wurzel W L den linken Unterbaum, M den mittleren Unterbaum und R den rechten Unterbaum. a) Geben Sie in Analogie zur Preorder-Traversierung aus der Vorlesung die Ausgabe der Baumtraversierung gemäß der Reihenfolge W L M R an. b) Geben Sie in Analogie zur Inorder-Traversierung aus der Vorlesung die Ausgabe der Baumtraversierung gemäß der Reihenfolge L M W R an. c) Geben Sie in Analogie zur Postorder-Traversierung aus der Vorlesung die Ausgabe der Baumtraversierung gemäß der Reihenfolge L M R W an. (6 Punkte) 2 Binäre Bäume zur Auswertung arithmethischer Ausdrücke Binäre Bäume können auch zur Dartellung von vollständig geklammerten arithmetischen Ausdrücken verwendet werden wie in folgendem Beispiel veranschaulicht: ((7 9) (3+2)) * * + 7 9 3 2 (5 (3+8)) * 5 + 3 8 Hierbei handelt es sich um Binärbäume mit zwei Knotentypen: Operator: Ein arithmetischer Operator; in dieser Übung beschränken wir uns auf die Operatoren Multiplikation (*) und Addition (+). 2

Operand: Ein Zahlenwert; in unserem Fall sollen nur ganzzahlige Werte (Integers) betrachtet werden. Die Auswertung eines arithmetischen Ausdrucks in Baumform ist rekursiv definiert: Der Wert eines Operanden-Knotens entspricht dem Zahlenwert der in diesem Knoten gespeicherten Zahl (Beispiel: 7 für den am weitesten links stehenden Blatt-Knoten in der Abbildung oben). Der Wert eines Operator-Knotens entspricht dem Wert seines linken Teilbaumes verknüpft mit dem Wert seines rechten Teilbaumes über den Operator, der in diesem Knoten gespeichert ist (Beispiel: 7 9=63 für den am weitesten links stehenden Operator-Knoten in der Abbildung oben). Man kann sich leicht veranschaulichen, dass bei der Auswertung eines Ausdrucks die Werte in einer Art bottom-up -Prozedur von den Blättern nach oben propagiert werden, bis schliesslich im Wurzelknoten der Wert des gesamten Ausdrucks steht. Datenstruktur: Programmieren Sie eine Klasse ArithmeticTree, um die oben beschriebene Datenstruktur eines Binärbaumes zur Repräsentation arithmetischer Ausdrücke abzubilden. Der ArithmeticTree soll hierbei Knoten des Typs ArithmeticTreeNode besitzen. In diesen Knoten sollen entweder ein Operator oder ein Operand gespeichert werden. Programmieren Sie hierzu zwei Konstruktoren 1. ArithmeticTreeNode(String operator) sowie 2. ArithmeticTreeNode(Integer operand) In ersterem Fall soll ein Operator-Knoten erzeugt werden, in letzterem ein Operanden- Knoten. Alle übrigen Funktionen sind analog zur Definition eines binären Baums in Java von Folie 6-10. Die Klasse ArithmeticTreeTest.java von der Vorlesungsseite enhält Code, der einen kleinen Beispielbaum in dieser Datenstruktur erzeugt. Die KlasseArithmeticTree selbst soll einen Konstruktur haben, der einen leeren Baum erzeugt (ArithmeticTree()) sowie einen Konstruktor, der einen arithmetischen Baum mit einem gegebenen Wurzelknoten erzeugt (ArithmeticTree(ArithmeticTreeNode root)). Ausgabe in Infix / Postfix Notation, Auswertung des Ausdrucks: Fügen Sie der Klasse ArithmeticTree folgende Funktionen hinzu: (6 Punkte) Integer evaluate(): Auswertung des arithmetischen Ausdrucks, der in diesem Baum abgespeichert ist. Der Rückgabewert soll dem Wert des arithmetischen Ausdrucks entsprechen. 3

void printinfix(): Bildschirmausgabe des arithmetischen Ausdrucks, der in diesem Baum gespeichert ist, in vollständig geklammerter Infix-Notation (wie oben in der Abbildung). Die Reihenfolge der Ausgabe soll hierbei jeweils (operand1 operator operand2) sein. void printpostfix(): Bildschirmausgabe des arithmetischen Ausdrucks in Postfix- Notation (siehe Hausübung 6 für die Definition der Postfix-Notation). Die Ausführung der Klasse ArithmeticTreeTest von der Vorlesungsseite sollte eine Ausgabe in folgendem Format erzeugen: 2 2 5 4 * + * (2*(2+(5*4))) 44 ZUSATZ: Parsen von Schreiben Sie eine KlassePostfixParser, die arithmetische Ausdrücke in Postfix-Notation parst und in einem arithmetischen Binärbaum abspeichert. Die Klasse TreeCalculator.java von der Vorlesungsseite enthält ein Gerüst, um die Postfix-Ausdrücke von Hausübung 6 einzulesen und diese in Postfix- und Infix- Notation auszugeben sowie ihren Wert anzugeben. Sie sollte folgende Ausgabe erzeugen (beispielhaft für die ersten beiden Ausdrücke): Parsing expression 1 5 5 + (5+5) 10 Parsing expression 2 7 3 5 6 * + * (7*(3+(5*6))) 231 4

Auf Fehlerbehandlung kann in allen Teilaufgaben verzichtet werden, d.h. Sie brauchen nicht zu prüfen, ob ihre Datenstruktur einen gültigen arithmetischen Ausdruck enthält oder nicht. Hinweis: Die Zusatz-Programmieraufgabe ist keine verpflichtende Aufgabe, durch ihre Bearbeitung können allerdings fehlende Punkte bei anderen Aufgaben von diesem Blatt ausgeglichen werden. Insgesamt können auf diesem Aufgabenblatt 36 Punkte erreicht werden; wie Sich diese Punkte zusammensetzen, bleibt Ihnen überlassen. Viel Spaß und viel Erfolg! 5