Algorithmen und Datenstrukturen 1 SS 2002

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Claudio Moraga; Gisbert Dittrich
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
Durchlaufen eines Binärbaumes
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortieren mit Binären Bäumen
Baumstrukturen Richard Göbel.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 2: Datenstrukturen
Rekursion Richard Göbel.
2. Die rekursive Datenstruktur Baum 2
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Diskrete Mathematik II
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005
Ch. Turnheer/ M. Vilanova 2002
Binäre Bäume Louis Moret und Reto Huber, 5. 11
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Graphen und Bäume.
Algorithmen und Datenstrukturen Übungsmodul 8
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Algorithmen und Datenstrukturen SS 2005
Algorithmen und Datenstrukturen Übungsmodul 1
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Algorithmen und Datenstrukturen 1 SS 2002
9.3 Suchbäume = Repräsentation linear geordneter Mengen durch Bäume (applikativ) bzw. baumartige Geflechte (imperativ) Garantierte Komplexität ist durchweg.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Baum, Binärer Suchbaum I
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Binärbäume.
Klausur „Diskrete Mathematik II“
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas Hilpold Institut für Wirtschaftsinformatik Software Engineering JKU Linz Termin 8 – Bäume

Übersicht Lösung Übung 6 Themenbereiche heute Bäume Binärbaume einfache Algorithmen auf Bäume rekursiv und iterativ Übungsbesprechung Übung 8

Lösung Ü6 User: integer erwartet, String eingegeben Device: Hardware Fehler: Printer ausgeschaltet, Festplatte defekt, Web-page kurzfristig nicht erreichbar Physical: Disk full, Mem full Code errors: Eine Methode wird inkorrekt ausgeführt, ungültiger Array index

Rückblick letztes Mal rekursive Algorithmen ruft sich selbst auf enthalt rek. und nicht-rek. Zweige rekursive Algorithmen auf Listen Liste -> einfache rek. Datenstruktur Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i =

Bäume Allgemeines rekursive Datenstruktur Definition (vereinfacht): Eine Baumstruktur T ist entweder die leere Struktur ein Knoten mit einer endlichen Zahl verknüpfter Baumstrukturen T (Teilbäume) Level (Stufe) 0 1 Wurzel Stufe 1 2 3 innerer Knoten Stufe 2 4 5 6 Grad d Baumes = 3 (max Nachfolger eines inneren Knotens) 7 8 Stufe 3 = max 9 Blatt (ohne Nachfolger) oder Endelement Höhe = max Stufe + 1 = 4

x ist Vorgänger von y (ascendent) y ist Nachfolger von x (descentant) Bäume Allgemeines (2) allgemeiner Baum Bäume vom Grad 2 heißen binär; Binärbaum (binary tree) Ternärbaum (Grad = 3) Grad = max Anzahl der Nachfolger eines Knotens im Baum Level (Stufe) 0 1 Wurzel Stufe 1 2 3 x ist Vorgänger von y (ascendent) Stufe 2 4 5 6 y ist Nachfolger von x (descentant) 7 8 Stufe 3 9

Binärbaum Allgemeines Bäume vom Grad 2 heißen binär; Binärbaum (binary tree) Beispiele: Stammbaum (Vater/Mutter), Turniere (2 Spieler, 1 Gewinner steigt auf), arithmetischer Ausdruck ((1+2)*(2+4); jeder Operator 2 Operanden) type BinaryTree = { refType Node = { int value Node left Node right } Level (Stufe) 0 1 Wurzel Stufe 1 2 3 Stufe 2 4 5 6 7 8 Stufe 3

Binärer Suchbaum Begriff Ein binärer Suchbaum ist ein binärer Baum, in dem die Knoten so geordnet sind, daß wenn Value der Informationsteil eines Knotens ist, die Informationsteile aller linken Abkömmlinge “kleiner” und die aller rechten Abkömmlinge “größer” als value sind. weitere Übung Level (Stufe) 0 3 Wurzel type BinaryTree = { refType Node = { int value Node left Node right } Node root; init() {root = null}; ... //Algorithmen Stufe 1 2 7 Stufe 2 1 5 9 8 10 Stufe 3

Binärer Suchbaum Suchen boolean search( int v) Idee: falls knotenwert == v -> gefunden falls v > value suche rechts, sonst links falls aktueller Knoten == null -> false 3 2 7 1 5 9 type BinaryTree = { refType Node = { int value Node left Node right } Node root; init() {root = null}; ... //Algorithmen 8 10

Binärer Suchbaum Suchen (rekursiv) boolean search( int v) Idee: falls knotenwert == v -> gefunden falls v > value suche rechts, sonst links falls aktueller Knoten == null -> false type BinaryTree = { ... boolean search (int v){ return searchR(root, v) }//insert boolean searchR(Node t, int v){ if (t == null) { return false } if (t^.v == v) { return true } if (v < t^.v) return searchR(t^.left, v) else return searchR(t^.right, v) }//searchR }//Tree 3 2 7 1 5 9 8 10

Binärer Suchbaum Suchen iterative Lösung für Suchen Lösung einfach, da nur ein Pfad zur Lösung beschritten werden muß! Solange cur != gesuchtes { wenn v > Cur, cur = rechter Nachfolger .... 3 2 7 1 5 9 8 10

Binärer Suchbaum Suchen type BinaryTree = { ... boolean search (int v){ Node n n = root while (n != null && n^.value != v){ if (v < n^.value) n = n^.left else n = n^.right } return n != null }//BinaryTree 3 2 7 1 5 9 8 10

Binärbaum Baumtraversierung Inorder (links, Knoten, rechts) Praeorder (Knoten, links, rechts) Postorder (links, rechts, Knoten) Level order (Ebenen) Inorder (a+b)*(d-(e*f)) Praeorder ? Postorder ? Level order ? * * + a b – d * e f a b + d e f * - * * + - a b d * e f + - / d * a b e f Man merkt sich bei Rekursionsschritt bisherige Knoten und wie weit diese bearbeitet wurden. -> Stack Kein Suchbaum!!

Binärer Suchbaum Iterative Algorithmen: Iterative Suche im Binärbaum -> einfach Im allgemeinen sind iterative Alg. auf Bäumen rel. kompliziert Beispiel: iterative Traversierung (praeorder) Problem: Im Unterschied zur Suche (1Pfad) muß man sich Knoten merken. Knoten / links / rechts > 3 2 1 5 7 3 Idee: Zunächst zu merkende Knoten auf einen Stack legen 2 7 1 5

Binärer Suchbaum Algorithmus (iterative Traversierung praeorder): Idee: schreibe Knoten merke rechten Nachfolger gehe zu linken Knoten falls null. hole zuletzt gemerkten Knoten und gehe zu rechtem Knoten type Tree { reftype Node {...}   preorderI(Node n){ Stack s; s.init() while (n <> null) { write(n^.v) if (n^.right != null) s.push(n^.right) if (n^.left != null) n = n^.left else n = s.pop() }//while }//preorderI 3 2 7 1 5

Binärer Suchbaum Algorithmus (iterative Traversierung praeorder): type Tree { reftype Node {...}   preorderI(Node n){ Stack s; s.init() while (n <> null) { write(n^.v) if (n^.right != null) s.push(n^.right) if (n^.left != null) n = n^.left else n = s.pop() }//while }//preorderI 3 2 7 1 5 9 8 10

Binärer Suchbaum einfacher Stack (Array): 1: push (3) 2: pop (): 3 3 4 type Stack { int[1:] stack int sp // stack pointer init() { sp = 0} boolean isEmpty(){ return (sp == 0) }//isEmtpy push (Node n){ sp = sp+1 stack[sp] = n }//push Node pop(){ if (!isEmtpy){ sp = sp-1 return stack[sp+1] } else return null; }//pop }//Stack 1: push (3) 2: pop (): 3 3 4 1

Zusammenfassung Baum ist eine rekursive Datenstruktur Begriffe: Grad, Höhe, Wurzel, Stufe, Blatt, Innerer Knoten Binärbaum binärer Suchbaum Search rekursiv / iterativ -> auch iterativ einfach (selten) Baumtraversierung binärer Bäume Iterative Lösung für praeorder Traversierung -> rel. kompliziert

Übung 8 ad 1) Binarytree rek. Algorithmen int size() { ... } // Anzahl d. Knoten boolean contains(int value){ ... } int height(){ ... } // Anzahl der Ebenen free(){ ... } ad 2) iteratives Einfügen in Binärbaum ad 3) Stammbaum areParents(char[] father, char[] mother) Hinweise: Zunächst Algorithmus für einfach Beispiele überlegen: zb. 1 Knoten, null, 2, 3 Knoten Rekursive Definition beachten !