Tutoraufgabe 1 (Implementierung eines ADTs):
|
|
|
- Linda Wagner
- vor 7 Jahren
- Abrufe
Transkript
1 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT Union-Find wie folgt: Wertebereich: Sei Element ein Datentyp, der eine ganze Zahl in seinem Feld key enthält, d. h. e.key ist vom Typ int für e vom Typ Element. Der Wertebereich des ADT Union-Find enthält für alle n alle Partitionen von e,..., e n mit e i.key = i für alle i,..., n. D. h. der Wertebereich enthält für alle n und k n alle Mengen T,..., T k mit T i e,..., e n, e i.key = i für alle i n, T i für alle i k, T i T j = für alle i < j k und k T i = e,..., e n. i= Eine Menge in einer Partition wird durch eins ihrer Elemente, ihren eindeutigen Repräsentanten, identifiziert. Operationen: Der Konstruktor UnionFind(int n) erstellt die Partition e,..., e n von e,..., e n mit e i.key = i für alle i n. Vorbedingung: n. Element find(element e) gibt den Repräsentanten derjenigen Menge T j aus der Partition zurück, die e enthält. Vorbedingung: e.key n. void union(element e, Element e) vereinigt in der Partition die Mengen mit den Repräsentanten e und e. Vorbedingung: Die Partition enthält Mengen mit Repräsentanten e und e. (Um diese Datenstruktur sinnvoll verwenden zu können, benötigen wir noch eine Methode, die für ein i n das in der Datenstruktur verwendete Element e mit e.key = i zurückgibt; um die Aufgabe nicht zu komplex werden zu lassen, vernachlässigen wir diese Methode in der Schnittstelle.) Beispiel: Wir initialisieren eine Union-Find Datenstruktur UnionFind uf = UnionFind(5) und erhalten Führen wir nun uf.union(e, e) aus, erhalten wir e e e e wobei uf.find(e) == uf.find(e) == e. Führen wir zudem uf.union(e5, e) aus, erhalten wir wobei uf.find(e5) == e. e e e e e5 5 e e e e5 5 e5 5 e a) Implementieren Sie die Union-Find Datenstruktur unter Nutzung genau einer Instanz einer wie in der Vorlesung vorgestellten doppelt verketteten Liste (List). Es dürfen jedoch beliebig viele primitive (elementare) Datentypen verwendet werden. Tipp: Benutzen Sie zum Trennen der Mengen in einer Partition ein Element mit dem Wert 0. b) Implementieren Sie die Union-Find Datenstruktur unter Nutzung genau einer Instanz t eines (nicht reduzierten) doppelt verketteten Baumes (Tree), welcher wie der in der Vorlesung vorgestellte Baum definiert ist, nur dass jedes Element (Knoten) e zusätzlich einen Vorgänger e.father hat (mit t.root.father == null und e.father!= null für e!= t.root). Sie können die folgenden Operationen für Tree verwenden:
2 Tutoriumslösung - Übung (Abgabe.05.0) void addchild(element e, int key) fügt dem gegebenen Element (Knoten) e ein Kind mit Wert key hinzu. Vorbedingung: e ist ein Knoten im Baum. void removechild(element e, Element e) entfernt das Kind e von e. Vorbedingung: e ist ein Knoten im Baum, e ist ein Kind von e. void appendchild(element e, Element e) schneidet e von seinem Vater ab und fügt es anschließend e als Kind hinzu. Vorbedingung: e und e befinden sich im Baum und e ist kein Vorgänger von e (befindet sich nicht auf dem Pfad von der Wurzel zu e). Es dürfen jedoch beliebig viele primitive (elementare) Datentypen verwendet werden. Tipp: Benutzen Sie zum Trennen der Mengen in einer Partition ein Element mit dem Wert 0. Lösung: a) Die Liste fängt mit einem Element mit Schlüssel 0 an. Danach stehen die Elemente der Teilmengen, getrennt durch jeweils ein Element mit Schlüssel 0. Die Teilmengen werden repräsentiert durch das erste Element in dem entsprechenden Block in der Liste. class UnionFind // Attribute List content; // Operationen UnionFind(int n) content = List(); // konstruiert eine leere Liste content.insert(0); for(int i = ; i <= n; i++) content.insert(i); content.insert(0); Element find(element e) Element representative = e; while(content.predecessor(representative).key!= 0) representative = content.predecessor(representative); return representative; void union(element e, Element e) if(e == e) return; // die Teilmengen sind identisch // finde den Separator nach der. Teilmenge Element post = content.successor(e); while(post.key!= 0) post = content.successor(post); //finde den Separator vor der. Teilmenge Element pre = content.predecessor(e); // finde den Separator nach der. Teilmenge Element post = content.successor(e); while(post.key!= 0)
3 Tutoriumslösung - Übung (Abgabe.05.0) post = content.successor(post); // nehme die. Teilmenge (e bis post) aus der Liste pre.next = post.next; if (post.next!= null) post.next.prev = pre; else tail = pre; // fuege die. Teilmenge (e bis post) hinter der. Teilmenge (post) ein post.next = post.next; if(post.next!= null) post.next.prev = post; else tail = post; post.next = e; e.prev = post; // entferne den Separator zwischen den beiden Teilmengen content.remove(post); b) Der Baum hat eine Wurzel mit Schlüssel 0. Die Teilmengen sind die Kinder der Wurzel. class UnionFind // Attribute Tree content; // Operationen UnionFind(int n) // konstruiere einen Baum mit einem Knoten (=root) mit dem Wert (key) 0 content = Tree(0); // fuege fuer jedes <=i<=n ein Kind an for(int i = ; i <= n; i++) content.addchild(content.root, i); Element find(element e) Element representative = e; while(representative.father.key!= 0) representative = representative.father; return representative; void union(element e, Element e) if(e == e) return; // die Teilmengen sind identisch // entferne den. Repraesentanten von der Wurzel // und fuege ihn dem. Repraesentanten als Kind hinzu appendchild(e, e);
4 Tutoriumslösung - Übung (Abgabe.05.0) Tutoraufgabe (ADT einer Implementierung): Gegeben sei die folgende Klasse in der Programmiersprache Java: public class A private int [] pos ; private int [] neg ; public A() this. pos = new int [ ]; this. neg = new int [ ]; public boolean contains ( int i) if (i < 0) final int j = -i - ; return ( this. neg [j / ] & ( << (j % )))!= 0; else return ( this. pos [i / ] & ( << (i % )))!= 0; public void add ( int i) if (i < 0) final int j = -i - ; this. neg [j / ] = ( << (j % )); else this. pos [i / ] = ( << (i % )); public void remove ( int i) if (i < 0) final int j = -i - ; this. neg [j / ] &= ( -( << (j % )) - ); else this. pos [i / ] &= ( -( << (i % )) - ); Geben Sie eine möglichst allgemeine Spezifikation (Wertebereich und Signatur) für den abstrakten Datentyp an, der durch diese Klasse implementiert wird. Dabei ist der Wertebereich des Datentyps int die Menge I =, +,...,. Lösung: Ein Objekt vom Typ A repräsentiert eine Menge ganzer Zahlen aus I. Der Wertebereich des ADTs, den A implementiert, ist also I. Dieser ADT bietet die folgenden Operationen an: Der Konstruktor A() erstellt die leere Menge. boolean contains(int i) gibt true zurück, falls die Zahl i in der Menge enthalten ist. Ansonsten gibt es false zurück. void add(int i) fügt die Zahl i zur Menge hinzu. void remove(int i) löscht die Zahl i aus der Menge.
5 Tutoriumslösung - Übung (Abgabe.05.0) Tutoraufgabe 5 (ADT verwenden): Gegeben sei die folgende Spezifikation des abstrakten Datentyps BinaryTree für binäre Bäume: Wertebereich: Spezifiziert durch alle möglichen Belegungen der Variablen int value, BinaryTree leftchild und BinaryTree rightchild Operationen: int value() gibt den Wert von value zurück. BinaryTree left() gibt den Wert von leftchild zurück. BinaryTree right() gibt den Wert von rightchild zurück. Ein Pfad in einem Binärbaum b null vom Typ BinaryTree ist eine Sequenz e,..., e n von BinaryTree Objekten mit n, e = b, e i+ left(e i ), right(e i ) für alle i n und left(e n ) = right(e n ) = null. Entwerfen Sie a) einen rekursiven Algorithmus bool duplicate(binarytree b, int v, bool found), b) einen iterativen Algorithmus bool duplicate(binarytree b, int v), der überprüft, ob es im Binärbaum b einen Pfad gibt, auf dem mindestens zwei Objekte den Wert v haben. Verwenden Sie Stapel(Stacks) für den iterativen Algorithmus. Beispiel: btree duplicate(btree,) = true duplicate(btree,) = true duplicate(btree,) = false Lösung: a) boolean duplicate(binarytree b, int v, boolean found) boolean equals = (b.value() == v); if (equals && found) return true; // first instance already found found = found equals; if (b.left()!= null) if (duplicate(b.left(),v,found)) return true; if (b.right()!= null) return duplicate(b.right(),v,found); return false; Die rekursive Variante traversiert den Baum und hält den aktuellen Suchstatus im dritten Parameter fest. 5
6 Tutoriumslösung - Übung (Abgabe.05.0) b) boolean duplicate(binarytree b, int v) Stack firstfound, firstnotfound; // Keep track of found and other instances firstnotfound.push(b); // initialize stack bool found; BinaryTree current; while (!firstnotfound.isempty()!firstfound.isempty()) // as long as there are nodes left if (!firstfound.isempty) // give priority to subtrees where the element has been found current = firstfound.pop(); if (current.value() == v) return true; found = true; else // otherwise try to find first occurence current = firstnotfound.pop(); found = (current.value() == v); // push children to correct stack if (current.left()!= null) if (found) firstfound.push(current.left()); else firstnotfound.push(current.left()); if (current.right()!= null) if (found) firstfound.push(current.right()); else firstnotfound.push(current.right()); return false; Die iterative Variante behält Stacks: Einen für die Knoten, in denen das Element noch nicht gefunden wurde, und einen für die Knoten, in denen das Element schon einmal gefunden wurde. Der letztere wird bevorzugt und die beinhalteten Teilbäume traversiert. Genau wie für den ersten Stack gilt dabei: Wenn Kinder vorhanden sind, werden diese auf den jeweils korrekten Stack geschoben. Anschließend wird der nächste Knoten vom Stack geholt und überprüft. 6
Tutoraufgabe 1 (Implementierung eines ADTs):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS14 F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe 1 (Implementierung eines ADTs): Wir spezifizieren den ADT Union-Find wie folgt: Wertebereich:
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe ( Bäume): a) Löschen Sie den Wert aus dem folgenden Baum und geben Sie den dabei
f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
Tutoraufgabe 1 (2 3 4 Bäume):
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.0.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden aus
Präsenzübung Datenstrukturen und Algorithmen SS 2014
Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik
Geordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.
4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.
Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen
2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,
Übung zur Vorlesung Programmierung
RWTH Aachen Lehrgebiet Theoretische Informatik Frohn Reidl Rossmanith Sánchez Ströder WS 013/14 Übungsblatt 4 18.11.013 Übung zur Vorlesung Programmierung Aufgabe T8 Ein Stack ist eine Datenstruktur, die
Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139
Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)
16. Dynamische Datenstrukturen
Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange
Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen
Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet
13. Dynamische Datenstrukturen
Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
1 Abstrakte Datentypen
1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;
13. Bäume: effektives Suchen und Sortieren
13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:
13. Bäume: effektives Suchen und Sortieren
Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:
7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure
7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht
2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung
Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung
Anwendungsbeispiel MinHeap
Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)
ALP II Dynamische Datenmengen Datenabstraktion (Teil 2) O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 49 Einfach verkettete Listen O1 O2 O3 50 Einführung Einfach verkettete Listen sind die einfachsten
1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen
1 Datenstrukturen 1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Abstrakte Datentypen Spezifizieren Form und Funktionalität der zu verarbeitenden Daten
Abgabe: (vor 12 Uhr)
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Übungsblatt 7 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste
Software Entwicklung 1
Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Die Definition wichtiger Begriffe im Zusammenhand mit Bäumen zu kennen. Markierte Bäumen, insbesondere Suchbäume,
Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B3.1 Einführung. B3.2 Verkettete Liste. B3.3 Bäume
Algorithmen und Datenstrukturen 22. März 2018 B3. Verkettete Listen und Bäume Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume B3.1 Einführung Marcel Lüthi and Gabriele Röger B3.2 Verkettete
Datenstrukturen und Algorithmen. Vorlesung 8
Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B3. Verkettete Listen und Bäume Marcel Lüthi and Gabriele Röger Universität Basel 22. März 2018 Einführung Abstrakter Datentyp / Datenstruktur Abstrakter Datentyp Eine Menge
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Kapitel 12: Induktive
Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter
Probeklausur zur Vorlesung
Dr. Jochen Hoenicke Alexander Nutz Probeklausur zur Vorlesung Einführung in die Informatik Sommersemester 2014 Die Klausur besteht aus diesem Deckblatt und elf Blättern mit den Aufgaben, sowie einem Blatt
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
Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
elementare Datenstrukturen
elementare Datenstrukturen Wie die Daten das Laufen lernten Andreas Ferber [email protected] elementare Datenstrukturen p./40 KISS elementare Datenstrukturen p./40 KISS (Keep It Simple, Stupid) Immer die einfachste
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion
Algorithmen und Datenstrukturen Musterlösung 5
Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1
Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können
Prof. Dr. Uwe Schmidt. 30. Januar 2017
Prof. Dr. Uwe Schmidt 30. Januar 2017 Aufgaben zur Klausur Algorithmen und Datenstrukturen im WS 2016/17 ( B Inf, B TInf, B MInf, B CGT, B WInf, B Ecom, B ITE) Zeit: 75 Minuten erlaubte Hilfsmittel: keine
9. Natürliche Suchbäume
Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr
Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.
Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung
! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -
! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck
Fallstudie: Online-Statistik
Fallstudie: Online-Statistik Ziel: Klasse / Objekt, welches Daten konsumiert und zu jeder Zeit Statistiken, z.b. Mittelwert, Varianz, Median (etc.) ausgeben kann Statistics s = new Statistics(maxSize);...
Programmieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
Übung 3 Musterlösung
Prof aa Dr Ir Joost-Pieter Katoen Sebastian Junges, Benjamin Kaminski, David Korzeniewski, Tim Quatmann Hinweise: Übung 3 Musterlösung Die Lösungen müssen bis Donnerstag, den 03 Mai um 16:00 Uhr in den
Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 132
Aufgabenstellung Gehen Sie bei der Bearbeitung der folgenden Teilaufgabenstellungen von den Beispiel-Implementierungen der Klassen ListNodeSL und LinkedList für einfach verkettete Listen aus, wie sie in
Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
Semestralklausur Informatik I - Programmierung
RHEINISCH- WESTFÄLISCHE TECHNISCHE HOCHSCHULE AACHEN LEHR- UND FORSCHUNGSGEBIET INFORMATIK II RWTH Aachen D-52056 Aachen GERMANY http://www-i2.informatik.rwth-aachen.de/lufgi2 Prof. Dr. Jürgen Giesl LuFG
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen
1. Rekursive Algorithmen 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ ] ( ) Infix-Operator Methodenaufruf new
Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:
Übung 4: Die generische Klasse AvlBaum in Java 1
Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (
5.3 Doppelt verkettete Listen
5.3 Doppelt verkettete Listen Einfach verkettete Listen unterstützen das Einfügen und Löschen am Anfang in konstanter Zeit; für das Einfügen und Löschen am Ende benötigen sie jedoch lineare Laufzeit Doppelt
Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Informatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 216 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda Vorstellung des 6. Übungsblatts. Hashing Binäre Suchbäume AVL-Bäume 2 Aufgabe: Hashing mit
Datenstrukturen. einfach verkettete Liste
einfach verkettete Liste speichert Daten in einer linearen Liste, in der jedes Element auf das nächste Element zeigt Jeder Knoten der Liste enthält beliebige Daten und einen Zeiger auf den nächsten Knoten
3. Übungsblatt zu Algorithmen I im SoSe 2017
Karlsruher Institut für Technologie Prof. Dr. Jörn Müller-Quade Institut für Theoretische Informatik Björn Kaidel, Sebastian Schlag, Sascha Witt 3. Übungsblatt zu Algorithmen I im SoSe 2017 http://crypto.iti.kit.edu/index.php?id=799
Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
Informatik II Vorlesung am D-BAUG der ETH Zürich
Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:
