Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Informatik 11 Kapitel 2 - Rekursive Datenstrukturen"

Transkript

1 Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77

2 Inhaltsverzeichnis I 1 Datenstruktur Schlange Warteschlange als Feld Warteschlange als Liste Die Methode einfuegen() Die Methode informationenausgeben() Die Methode entfernen() 2 Trennung von Struktur und Inhalt 3 Modellierungsaufgabe 4 Datenstruktur Liste 5 Entwurfsmuster Kompositum 6 Datenstruktur Stapel 7 Datenstruktur Schlange 8 Die rekursive Datenstruktur Baum Folie 2/77

3 Inhaltsverzeichnis II Suchen in Binärbäumen Einfügen in Binärbäume Baum und Kompositum Baumdurchlauf Exkurs 1 - Knoten löschen Exkurs 2 - B-Baum 9 Die Datenstruktur Graph Eigenschaften von Graphen Adjazenzmatrix Breitensuche Tiefensuche Adjazenzliste Dijkstra-Alorithmus Folie 3/77

4 2.1 Datenstruktur Schlange Folie 4/77

5 2.1.1 Warteschlange als Feld Übung Warteschlange mit Datenstruktur Feld Implementiere eine Warteschlange mit Hilfe der Datenstruktur Feld, die die abgebildeten Attribute und Methoden besitzt. Folie 5/77

6 Nachteile dieser Implementierung Die Warteschlange besitzt immer eine maximale Anzahl an Elementen (selbst bei sehr hoher Feldgröße). Im Feld gibt es fast immer freie Plätze (Verschwendung von Speicherplatz). Beim Entfernen von Elementen müssen die übrigen Elemente aufrücken (sehr umständlich). Folie 6/77

7 2.1.2 Warteschlange als Liste Objektdiagramm einer Warteschlange Folie 7/77

8 Klassendiagramm der Warteschlange Folie 8/77

9 Erweitertes Klassendiagramm der Warteschlange Folie 9/77

10 2.1.3 Die Methode einfuegen() Folie 10/77

11 Folie 11/77

12 Folie 12/77

13 2.1.4 Die Methode informationenausgeben() Folie 13/77

14 2.1.5 Die Methode entfernen() Folie 14/77

15 Folie 15/77

16 Folie 16/77

17 Kundenwarteschlange Plane eine Warteschlange Kunden. An welchen Stellen unserer Implementierung müssen wir Änderungen vornehmen? Probleme bei dieser Art der Implementierung Die Klasse Patient hat zwei Aufgaben: (A) Verwaltung der Daten (Patientenname) (B) Verwaltung der Referenzen auf die Nachfolger Dies stört bei der Wiederverwendung der WARTESCHLANGE für andere Zwecke (z.b. Druckaufträge). Lösung/Ziel ist es, die Aufgabe (B) in eine eigene Klasse KNOTEN auszulagern. Folie 17/77

18 2.2 Trennung von Struktur und Inhalt Objektdiagramm der Warteschlange Folie 18/77

19 2.2 Trennung von Struktur und Inhalt Klassendiagramm der Warteschlange Folie 19/77

20 2.2 Trennung von Struktur und Inhalt Probleme bei dieser Art der Implementierung Die Klassen WARTESCHLANGE und KNOTEN müssen immer noch wissen, welche Elemente (der Typ der Elemente) sie verwalten. Folie 20/77

21 2.2 Trennung von Struktur und Inhalt Klassendiagramm der Warteschlange Folie 21/77

22 Warteschlange mit Java API import java.util. LinkedList; public class WARTESCHLANGE { private LinkedList <DATENELEMENT > Warteschlange; public WARTESCHLANGE() { Warteschlange = new LinkedList <DATENELEMENT >(); } public void einfuegen( DATENELEMENT neuesdatenelement) { Warteschlange.add( neuesdatenelement); } public DATENELEMENT entfernen() { return Warteschlange. remove(); } public void informationenausgeben() { for(int i = 0; i< Warteschlange.size(); i++) { System.out. print( Warteschlange.get(i). informationenausgeben() + " " ); } System.out. println(); } } Folie 22/77

23 2.3 Modellierungsaufgabe 1 1 Quelle: Abitur Informatik Bayern 2011 Folie 23/77

24 2.3 Modellierungsaufgabe 2 2 Quelle: Abitur Informatik Bayern 2011 Folie 24/77

25 2.3 Modellierungsaufgabe Folie 25/77

26 Erweiterte Anforderungen an die Datenstruktur Wir wollen unsere Datenstruktur erweitern: Elemente sollen an bestimmten Stellen der Warteschlange angefügt und entfernt werden könnten. Dies gilt auch für ganz vorne. Die Warteschlange soll Informationen darüber ausgeben, wie viele Knoten sie beinhaltet. Es soll überprüft werden können, ob sich ein Datenelement in der Warteschlange befindet. Folie 26/77

27 2.4 Datenstruktur Liste Liste Da diese Anforderungen über die an eine Warteschlange hinausgehen, bezeichnen wir die Datenstruktur als einfach verkettete Liste. Folie 27/77

28 2.4 Datenstruktur Liste Operationen auf Zeichenketten Um Zeichenketten (und andere Objekte) miteinander vergleichen zu können gibt es verschiedene Methoden: equals(vergleichswert):boolean: Gibt true zurück, falls Zeichenketten identisch, sonst false (Beispiel: variable.equals( Test );) compareto(vergleichswert):int: Gibt eine ganze Zahl zurück. Dabei entspricht bei [StringA] compareto [StringB]: =0: Beide Strings sind identisch. <0: [StringA] kommt lexikographisch vor [StringB]. >0: [StringB] kommt lexikographisch vor [StringA]. Folie 28/77

29 2.5 Entwurfsmuster Kompositum In fast allen Methoden der Klasse KNOTEN wird eine Fallunterscheidung bezüglich des Nachfolgers (für letzten Knoten) benötigt. Um diese zu umgehen, hat es sich bewährt, eine eigene Klasse ABSCHLUSS zu definieren, die kein Datenelement referenziert, sondern nur das Ende der Liste verwaltet. ABSCHLUSS und KNOTEN sind Unterklassen der Klasse LISTENELEMENT, welche nur die Signaturen der Methoden beinhaltet. Folie 29/77

30 2.5 Entwurfsmuster Kompositum Entwurfsmuster Kompositum Kompositum ist ein Entwurfsmuster (engl. Design Pattern) in der Softwareentwicklung. Diese Entwurfsmuster sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme. In allgemeiner Form sieht dieses Entwurfsmuster so aus: Folie 30/77

31 Folie 31/77

32 2.6 Datenstruktur Stapel Prinzip: Last in First out LiFo (oder wer zuletzt kommt, darf als erster gehen ) Folie 32/77

33 2.6 Datenstruktur Stapel Definition: Eine Datenstruktur heißt Stapel, wenn Elemente nur an einem Ende, der Stapelspitze (top), hinzugefügt oder entfernt werden können. Für Stapel sind die folgenden Operationen definiert: Erzeugen eines leeren Stapels (init) Hinzufügen eines Elements (push) Prüfung, ob ein gegebener Stapel leer ist (isempty) Inspizieren der Stapelspitze (top) Entfernen der Stapelspitze (pop) Folie 33/77

34 2.6 Datenstruktur Stapel Anwendungen: Auswerten von Rechenausdrücken, syntaktische Analyse von Programmen, Bau von Übersetzern, Undo, Aufrufen von Unterprogrammen, Tiefensuche in Graphen,... Folie 34/77

35 2.7 Datenstruktur Schlange Prinzip: First in First out, FiFo (oder wer zuerst kommt, mahlt zuerst ) Folie 35/77

36 Datenstruktur Schlange Definition: Eine Datenstruktur heißt Schlange, wenn Elemente nur an einem Ende (dem Ende der Schlange) angefügt und nur am anderen Ende (dem Kopf der Schlange) entfernt werden können. Für Schlangen sind die folgenden fünf Operationen definiert: Erzeugen einer neuen leeren Schlange (init) Hintenanfügen eines Elements an eine gegebene Schlange (enqueue oder enter bzw. put) Prüfung, ob die Schlange leer ist (isempty) Inspizieren des Schlangenkopfes (front) Entfernen des Schlangenkopfes (dequeue oder remove bzw. get) Folie 36/77

37 Datenstruktur Schlange Anwendungen: Druckaufträge (Druckerwarteschlange), Verwaltung von Prozessaufrufen im Betriebssystem, Hardwareschnittstellen zur seriellen Ein-/Ausgabe (Pufferspeicher z.b. Tastatur),... Folie 37/77

38 2.8 Die rekursive Datenstruktur Baum Folie 38/77

39 2.8 Die rekursive Datenstruktur Baum Folie 38/77

40 2.8 Die rekursive Datenstruktur Baum Folie 38/77

41 2.8 Die rekursive Datenstruktur Baum Baum Aus einer einfach verketteten Liste entsteht ein Baum, indem die Knoten jeweils mehrere Nachfolger haben können und zusätzlich gilt: Genau ein Knoten wird nicht von einem anderen Knoten referenziert. Diesen nennt man Wurzel des Baumes. Alle anderen Knoten werden genau einmal referenziert. Man unterscheidet zwischen inneren Knoten und Blättern. Jeder Knoten lässt sich von der Wurzel aus auf genau einem Weg (über Kanten) erreichen. Ein spezieller Baum ist der Binärbaum. Dieser besitzt Knoten mit höchstens zwei Nachfolgern. Folie 39/77

42 2.8 Die rekursive Datenstruktur Baum Folie 40/77

43 2.8 Die rekursive Datenstruktur Baum Folie 41/77

44 2.8 Die rekursive Datenstruktur Baum Folie 42/77

45 2.8.1 Suchen in Binärbäumen Klasse BINBAUM public DATENELEMENT suchen( String wert) { if(wurzel!= null) return Wurzel.suchen(wert); else return null; } Klasse KNOTEN public DATENELEMENT suchen( String wert) { if( Daten. schluesselistgleich( wert)) return Daten; else if( Daten. schluesselistgroesserals( wert)) { if( LinkerNachfolger!= null) return LinkerNachfolger. suchen( wert); else return null; } else { if( RechterNachfolger!= null) return RechterNachfolger. suchen( wert); else return null; } } Folie 43/77

46 2.8.2 Einfügen in Binärbäume Klasse BINBAUM public void einfuegen( DATENELEMENT daten) { if(wurzel!= null) Wurzel.einfuegen(daten); else Wurzel = new KNOTEN(daten); } Klasse KNOTEN public void einfuegen( DATENELEMENT daten) { if( Daten. istgleich( daten)) {} else if( Daten. istgroesserals( daten)) { if( LinkerNachfolger!= null) LinkerNachfolger. einfuegen( daten); else LinkerNachfolger = new KNOTEN( daten); } else { if( RechterNachfolger!= null) RechterNachfolger. einfuegen( daten); else RechterNachfolger = new KNOTEN( daten); } } Folie 44/77

47 2.8.3 Baum und Kompositum Folie 45/77

48 2.8.3 Baum und Kompositum Folie 46/77

49 2.8.3 Baum und Kompositum Folie 47/77

50 2.8.3 KlasseBaum BINBAUM und Kompositum public DATENELEMENT suchen( String wert) { return Wurzel.suchen(wert); } Klasse KNOTEN public DATENELEMENT suchen( String wert) { if(daten.schluesselistgleich(wert)) return Daten; else if(daten.schluesselistgroesserals(wert)) return LinkerNachfolger. suchen( wert); else return RechterNachfolger. suchen( wert); } Klasse ABSCHLUSS public DATENELEMENT suchen( String wert) { return null; } Folie 48/77

51 2.8.3 KlasseBaum BINBAUM und Kompositum public void einfuegen( DATENELEMENT daten) { Wurzel = Wurzel.einfuegen(daten); } Klasse KNOTEN public void einfuegen( DATENELEMENT daten) { if(daten.istgleich(daten)) {} else if(daten.istgroesserals(daten)) LinkerNachfolger = LinkerNachfolger. einfuegen( daten); else RechterNachfolger = RechterNachfolger. einfuegen( daten); } Klasse ABSCHLUSS public BAUMELEMENT einfuegen( DATENELEMENT daten) { return new KNOTEN( daten); } Folie 49/77

52 2.8.4 Baumdurchlauf Folie 50/77

53 2.8.4 Baumdurchlauf Definition Wenn man alle Elemente eines Baumes ausgeben möchte, muss man sich Strategien überlegen, in welcher Reihenfolge der Baum durchlaufen wird. Der Zugriff auf die einzelnen Knoten eines Baumes ist nur über die Wurzel möglich. Deshalb sind Algorithmen notwendig, die beim Durchlaufen eines Baumes jeden Knoten genau einmal besuchen und Informationen über dessen Datenelement ausgeben. Folgende drei (rekursive) Algorithmen leisten das Gewünschte: Folie 51/77

54 2.8.4 Baumdurchlauf inoder Baumdurchlauf inorder-durchlauf (Reihenfolge: L K R ) Beauftrage den linken Teilbaum des Knotens k mit inorder-durchlauf Besuche den Knoten k selbst Beauftrage den rechten Teilbaum des Knotens k mit inorder-durchlauf Beispiel: Folie 52/77

55 2.8.4 KlasseBaumdurchlauf BINBAUM (Implementierung) public void inorderausgeben() { Wurzel.inorderAusgeben(); } Klasse KNOTEN public void inorderausgeben() { LinkerNachfolger.inorderAusgeben(); Daten.informationAusgeben(); RechterNachfolger.inorderAusgeben(); } Klasse ABSCHLUSS public void inorderausgeben() Folie 53/77 { }

56 2.8.4 Baumdurchlauf preorder Baumdurchlauf preorder-durchlauf (Reihenfolge: K L R) Besuche den Knoten k selbst Beauftrage den linken Teilbaum des Knotens k mit preorder-durchlauf Beauftrage den rechten Teilbaum des Knotens k mit preorder-durchlauf Beispiel: Folie 54/77

57 2.8.4 Baumdurchlauf postorder Baumdurchlauf postorder-durchlauf (Reihenfolge: L R K ) Beauftrage den linken Teilbaum des Knotens k mit postorder-durchlauf Beauftrage den rechten Teilbaum des Knotens k mit postorder-durchlauf Besuche den Knoten k selbst Beispiel: Folie 55/77

58 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 1 Es gibt drei Fälle, die beim Löschen eines Datenelements eintreten können: Das DATENELEMENT wird von einem Knoten k referenziert, der keine Kinder hat (Nur Abschlüsse als Nachfolger): k wird gelöscht, ein beliebiger Nachfolger (ABSCHLUSS) wird zurückgegeben. Folie 56/77

59 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 2 Das DATENELEMENT wird von einem Knoten k referenziert, der ein Kind hat: k wird durch das Kind ersetzt. Folie 57/77

60 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 3 Das DATENELEMENT wird von einem Knoten k referenziert, der zwei Kinder hat: Dann bleibt Knoten k erhalten. Das DATENELEMENT in k wird durch das kleinste DATENELEMENT des rechten Teilbaums (bzw. größte DATENELEMENT des linken Teilbaums) von k ersetzt. Jedes dieser beiden DATENELEMENTe wird von einem Knoten referenziert, der höchstens ein Kind besitzt und daher wie in Fall 1 oder 2 entfernt werden kann. Folie 58/77

61 2.8.6 Exkurs 2 - B-Baum 3 3 Quelle: Haui/My Images: https://commons.wikimedia.org/wiki/file:b-tree-aggregated-example.png Folie 59/77

62 2.9 Die Datenstruktur Graph Folie 60/77

63 2.9.1 Eigenschaften von Graphen Unterschied Baum - Graph Ein Knoten in einem Baum hat höchstens einen Vorgänger - in einem Graphen kann er mehr als einen haben. In einem Baum gibt es keine Zyklen (Pfad, bei dem der Start- und Zielknoten identisch sind). Ein Baum ist ein spezieller Graph. Folie 61/77

64 2.9.1 Eigenschaften von Graphen Definition Ein Graph G = (V,E) besteht aus einer nichtleeren Menge von Knoten V und einer endlichen Menge von Kanten E. Eine Kante verbindet zwei Knoten. Folie 62/77

65 2.9.1 Eigenschaften von Graphen Definition Gerichtung Bei gerichteten Graphen gibt es eine eindeutige Richtung der Kante von einem Startknoten zu einem Zielknoten. Bei ungerichteten Graphen gilt die Verbindung für beide Richtungen. Folie 63/77

66 2.9.1 Eigenschaften von Graphen Definition Gewichtung Bei einem gewichteten Graph wird jeder Kante ein Wert zugeordnet Bei einem ungewichteten Graph besitzen die Kanten keine Werte. Folie 64/77

67 2.9.1 Eigenschaften von Graphen Definition Zusammenhängend 1 Ungerichteter Graph: Ein ungerichteter Graph ist zusammenhängend, wenn von jedem Knoten zu jeden anderen Knoten mindestens ein Pfad existiert. Dieser Graph ist zusammenhängend. Ohne Kante zwischen A und D ist er nicht zusammenhängend! Folie 65/77

68 2.9.1 Eigenschaften von Graphen Definition Zusammenhängend 2 Gerichteter Graph: Ein gerichteter Graph ist (stark) zusammenhängend, falls es von jedem Knoten aus einen gerichteten Weg zu jeden anderen Knoten im Graph gibt. Dieser Graph ist (stark) zusammenhängend. Ohne Kante zwischen E und C ist er nicht (stark) zusammenhängend! Da dieser Graph aber als ungerichteter Graph zusammenhängend wäre, ist er (schwach) zusammenhängend. Folie 66/77

69 2.9.1 Eigenschaften von Graphen Teiler Ein Graph hat die Zahlenwerte 1 bis 9 als Knoten. Über die Beziehung ist echter Teiler von sind diese gerichtet miteinander verbunden. 1 Wie viele Kanten gibt es? Zeichne den Graphen 2 Welcher Knoten muss entfernt werden, damit der Graph nicht mehr zusammenhängend ist? 3 Wie ändert sich der Graph, wenn die Beziehung ist Teiler von lautet? Folie 67/77

70 2.9.1 Eigenschaften von Graphen Klassendiagramm Folie 68/77

71 2.9.2 Adjazenzmatrix Definition Für die weitere Betrachtung von Algorithmen auf der Datenstruktur Graph bietet sich die einfachere Umsetzung mittels Adjazenzmaritx an. Dabei werden die Kanteninformationen in der GRAPH-Klasse belassen und nur die Knoten-Informationen in der Klasse KNOTEN ausgelagert. In Java kann man die Kanteninformationen über ein zweidimensionales Feld definieren. Folie 69/77

72 2.9.2 Adjazenzmatrix Folie 70/77 von nach A B C D E F G A B C 10 8 D 2 E 5 6 F G

73 2.9.2 Adjazenzmatrix von nach A B C D E F A 9 3 B 5 C 4 D 8 E 1 5 F 2 Folie 71/77

74 2.9.2 Adjazenzmatrix Klassendiagramm Folie 72/77

75 2.9.2 Adjazenzmatrix Folie 73/77

76 2.9.3 Breitensuche Siehe Folien - Breitensuche Warteschlange.pdf Folie 74/77

77 2.9.4 Tiefenensuche Siehe Folien - Tiefensuche Rekursiver Aufruf.pdf und Tiefensuche Stack.pdf Folie 75/77

78 2.9.5 Adjazenzliste Folie 76/77

79 2.9.6 Dijkstra-Alorithmus Siehe Folien - Dijkstra Prioritätswarteschlange.pdf Folie 77/77

Bäume als spezielle Graphen

Bäume als spezielle Graphen M. Jakob Gymnasium Pegnitz 9. November 015 Inhaltsverzeichnis Die rekursive Datenstruktur Baum Listen umstrukturieren Deklaration und Initialisierung Deklaration Suchen Einfügen Baum in perfekter Komposition

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Kapitel 12: Induktive

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

Mehr

8 Baum in perfekter Komposition

8 Baum in perfekter Komposition 8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde

Mehr

ALP II Dynamische Datenmengen Datenabstraktion

ALP II Dynamische Datenmengen Datenabstraktion ALP II Dynamische Datenmengen Datenabstraktion O1 O2 O3 O4 SS 2012 Prof Dr Margarita Esponda M Esponda-Argüero 1 Dynamische Datenmengen Dynamische Datenmengen können durch verschiedene Datenstrukturen

Mehr

Struktur am Beispiel einer Liste

Struktur am Beispiel einer Liste Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

ALP II Dynamische Datenmengen Datenabstraktion (Teil 2)

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

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Listen & Bäume Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 SvenKosub@uni-konstanzde Sprechstunde: Freitag, 14:00-15:00 Uhr, onv Sommersemester

Mehr

Binärbäume. Prof. Dr. E. Ehses, 2014 1

Binärbäume. Prof. Dr. E. Ehses, 2014 1 Binärbäume Grundbegriffe der Graphentheorie Bäume und Ihre Anwendungen Unterschiedliche Darstellungen von Bäumen und Binärbäumen Binärbäume in Java Rekursive Traversierung von Binärbäumen Ebenenweise Traversierung

Mehr

Stapel (Stack, Keller)

Stapel (Stack, Keller) Stapel (Stack, Keller) Eine wichtige Datenstruktur ist der Stapel. Das Prinzip, dass das zuletzt eingefügte Element als erstes wieder entfernt werden muss, bezeichnet man als LIFO-Prinzip (last-in, first-out).

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

! 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 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz http://www.inf.uni-konstanz.de/algo/lehre/ss08/info2 Sommersemester 2008 Sven Kosub

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

13. Bäume: effektives Suchen und Sortieren

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

Datenstrukturen. einfach verkettete Liste

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

Mehr

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Graphen 9/1 Begriffsdefinitionen Ein Graph besteht aus Knoten und Kanten. Ein Knoten(Ecke) ist ein benanntes Objekt. Eine Kante verbindet zwei Knoten. Kanten haben ein Gewicht

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

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

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Datenstrukturen: Anordnung von Daten, z.b. als Liste (d.h. in bestimmter Reihenfolge) Beispiel: alphabetisch sortiertes Wörterbuch... Ei - Eibe - Eidotter... als Baum (d.h.

Mehr

public interface Stack { public void push(e e); public E pop();

public interface Stack<E> { public void push(e e); public E pop(); ADS Zusammenfassung René Bernhardsgrütter 02.04.2012 1 Generics Gewähren Typsicherheit und können für verschiedene Datentypen ohne Casts verwendet werden. Beim Erstellen der Klasse werden Platzhalter für

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

3 Dynamische Datenstrukturen

3 Dynamische Datenstrukturen 3 Dynamische Datenstrukturen Beispiele für dynamische Datenstrukturen sind Lineare Listen Schlangen Stapel Bäume Prof. Dr. Dietmar Seipel 128 Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester

Mehr

Vorlesung Datenstrukturen

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

11. Elementare Datenstrukturen

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

Mehr

Programmieren 2 Übung Semesterwoche 2

Programmieren 2 Übung Semesterwoche 2 Programmieren 2 Übung Semesterwoche 2 1. Stack (LIFO: Last-In--First-Out) Implementieren und testen Sie eine Klasse Stack, so dass beliebig viele Objekte eines vorgegebenen Datentyps (z. B. String) auf

Mehr

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren

Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Algorithmen und Datenstrukturen Kapitel 4 Neue Datenstrukturen, besseres (?) Sortieren Frank Heitmann heitmann@informatik.uni-hamburg.de 4. November 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays)

1. Aufgabe (6 Punkte): Java-Programmierung (Arrays) Der folgende Mitschrieb wurde von Prof. Alexa am 16.07.2008 als Probeklausur in der MPGI2 Vorlesung gezeigt und wurde auf http://www.basicinside.de/2008/node/94 veröffentlicht. Die Abschrift ist unter

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

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

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Verkettete Datenstrukturen: Bäume

Verkettete Datenstrukturen: Bäume Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Einfach verkettete Liste

Einfach verkettete Liste 5. Listen Verkettete Listen Einfach verkettete Liste Für jedes einzelne Element der Liste wird ein Hilfsobjekt erzeugt. Jedes Hilfsobjekt enthält zwei Instanzvariablen: den zu speichernden Wert bzw. einen

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste

Stand der Vorlesung. Vergleich verkettete Liste und sequentielle Liste Stand der Vorlesung Kapitel 5 Elementare Datenstrukturen Felder: Folge gleichartiger Elemente Repräsentiert als statische Liste, sequentiell verwaltete Elemente Feste Länge, statische Struktur Direkter

Mehr

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56 Graphalgorithmen I Simon Regnet Universität Erlangen May 16, 2008 Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, 2008 1 / 56 Inhalt 1 Motivation 2 Terminologie 3 Datenstrukturen 4 Suche

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

I Die rekursive Datenstruktur Liste

I Die rekursive Datenstruktur Liste I Die rekursive Datenstruktur Liste 1 Einführung der Datenstruktur Schlange Aus dem Vorjahr ist das Feld vertraut als eine Datenstruktur, mit der mehrere gleichartige Objekte verwaltet werden können. In

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind. 3.5 Gerichteter Pfad Definition 291 Eine Folge (u 0, u 1,..., u n ) mit u i V für i = 0,..., n heißt gerichteter Pfad, wenn ( i {0,..., n 1} ) [ (u i, u i+1 ) A]. Ein gerichteter Pfad heißt einfach, falls

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

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

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen Der Tragödie IV. Theyl Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

1. Grundlegende Konzepte in Java (6 Punkte)

1. Grundlegende Konzepte in Java (6 Punkte) 1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Innere Klassen Innere Klassen Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen. Literatur: Java Tutorial & Arnold, K., Gosling, J. und Holmes,D... Page 1 Innere Klassen Der erste

Mehr

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

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen.

HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen. HTTP://WWW.WIKIPAINTINGS.ORG/EN/FRIEDENSREICH-HUNDERTWASSER/YOU-ARE-A-GUEST-OF-NATURE-BEHAVE Abstrakte Datentypen OOPM, Ralf Lämmel (C) Ralf Lämmel, OOPM, Universität Koblenz-Landau 562 Motivation abstrakter

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen Gliederung 5. Compiler 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

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

Mehr

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen Inhalte Informatik I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen II.0 Grundlegende Programmstrukturen und Algorithmen Sortier- und Suchalgorithmen auf Arrays

Mehr

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Bäume. 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Bäume 2006 Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1 Inhalt Grundbegriffe: Baum, Binärbaum Binäre Suchbäume (Definition) Typische Aufgaben Suchaufwand Löschen allgemein, Methode Schlüsseltransfer

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 11. Dynamische Datenstrukturen 11.1 Lineare Liste Eine lineare Liste (auch einfach verkettete Liste ) ist eine Art Array mit flexibler Länge.

Mehr

Curriculum des Wahlfaches Informatik für das Gymnasium Dialog

Curriculum des Wahlfaches Informatik für das Gymnasium Dialog 10.Klasse: Themenschwerpunkt I: Datenbanken Datenbanken o Einsatzbereiche von Datenbanken o Verwaltung von großen Datenmengen o Probleme aus dem Alltag in Datenbanken abbilden o Relationale Datenbanksysteme

Mehr

Kodieren Von Graphen

Kodieren Von Graphen Kodieren Von Graphen Allgemeine Anwendungen: Routenplaner Netzpläne Elektrische Schaltungen Gebäudeerkennung aus Luftaufnahmen Definitionen:? Graph Ein Graph G besteht aus einem geordneten Paar G = (V,E)

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 3 Einführung in das objektorientierte Programmier-Paradigma 3 Einführung in das objektorientierte Programmier-Paradigma 3.1.1 Top-down structured design 3.1.2 Data-driven design 3.1.3 Object-oriented design

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr