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

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

Datenstrukturen. einfach verkettete Liste

Klausur Informatik B April Teil I: Informatik 3

Vorlesung Datenstrukturen

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

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen

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

1 topologisches Sortieren

Datenstrukturen und Algorithmen

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Uninformierte Suche in Java Informierte Suchverfahren

13. Binäre Suchbäume

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Einstieg in die Informatik mit Java

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

Algorithmen und Datenstrukturen (AuD) Zusammenfassung

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule

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

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Suchen und Sortieren (Die klassischen Algorithmen)

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Beispiel zu Datenstrukturen

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

Datenstrukturen und Algorithmen

JAVA - Suchen - Sortieren

Tutorium Algorithmen & Datenstrukturen

Algorithmen - Eine Einführung

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Sortierverfahren für Felder (Listen)

Kapiteltests zum Leitprogramm Binäre Suchbäume

Informatik II, SS 2014

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

Binäre Bäume Darstellung und Traversierung

Schulinternes Curriculum im Fach Informatik

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Algorithmen und Datenstrukturen 1

Vorkurs Informatik WiSe 15/16

Algorithmen & Datenstrukturen 1. Klausur

Programmiertechnik II

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Graphen: Datenstrukturen und Algorithmen

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

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

Algorithmen und Datenstrukturen Suchbaum

10. Fortgeschrittene Programmiertechniken Fortgeschrittene Programmiertechniken

Klausur Algorithmen und Datenstrukturen

Kapitel 9 Suchalgorithmen

Kap. 4.2: Binäre Suchbäume

Informatik am GymSL - Schulinternes Curriculum. Fachbereich Informatik

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

Algorithmen und Datenstrukturen Balancierte Suchbäume

4 Greedy-Algorithmen (gierige Algorithmen)

Grundlagen der Programmierung

Algorithmen und Datenstrukturen Sortieren

Algorithmen zur Visualisierung von Graphen

Grundlagen der Programmierung

Datenstrukturen & Algorithmen

WS 2009/10. Diskrete Strukturen

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Informatik A Zusammenfassung

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

368 4 Algorithmen und Datenstrukturen

Klausur Informatik B. Teil 1: Informatik 3 Juli 2005

Programmiertechnik II

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

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

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

Baumsuche: Theorie und Anwendungen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Programmieren I. Kapitel 7. Sortieren und Suchen

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

Zeichnen von Graphen. graph drawing

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Algorithmen und Datenstrukturen

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Programmierung und Modellierung

Einführung in Heuristische Suche

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Vorname:... Matrikel-Nr.:... Unterschrift:...

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Projekte Sommersemester 2014

DATENSTRUKTUREN UND ALGORITHMEN

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen SS09

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Transkript:

Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009

Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume: Binärbäume, Suchbäume, AVL-Bäume, Prioritätswarteschlangen, Heap, Graphen ADTs in Java Tag 17 Sortieralgorithmen InsertionSort, BubbleSort, SelectionSort, ShellSort, MergeSort, QuickSort, Binary Tree Sort, HeapSort Untere Schranke für vergleichsbasierte Sortierverfahren, BucketSort, CountingSort, RadixSort Tag 18 Suchalgorithmen Binärsuche, Breitensuche, Tiefensuche, Backtracking Klausurvorbereitung Tag 19 Klausur Tag 20 Letzter Tag Weitere Projekte am Fachbereich, Klausurnachbesprechung, Grillen? 3

Suchalgorithmen Suchen und Sortieren sind zwei Grunddisziplinen der Informatik. Ein Suchverfahren ist ein Algorithmus, der dazu dient einem Suchraum nach einem Objekt oder einem Muster mit bestimmten Eigenschaften sucht. Man unterscheidet zwischen einfachen und heuristischen Suchalgorithmen. Einfache Suchalgorithmen benutzen einfache Methoden zum Durchsuchen des Suchraumes ohne Kenntnis in welcher Form die Daten vorliegen. Heuristische Verfahren akquieren Wissen über den Suchraum und verwenden dieses Wissen um Abschätzungen zum Ziel vorzunehmen und damit die Suche zu beschleunigen. 4

Binäre Suche Beispiel: Binäre Suche 2 4 5 5 7 9 10 13 17 17 17 21 23 45 49 55 62 69 72 80 92 Suche 69? Naive Suche, linear in O(n): 2 4 5 5 7 9 10 13 17 17 17 21 23 45 49 55 62 69 72 80 92 Binäre Suche, in O(log n): 2 4 5 5 7 9 10 13 17 17 17 21 23 45 49 55 62 69 72 80 92 5

Suchen in Bäumen und Graphen Es gibt in der Informatik zahlreiche Graphen-Algorithmen, die nach einem bestimmten Knoten suchen nach einer Menge bestimmter Knoten suchen nach einem minimalen Spannbaum suchen nach kürzesten Wegen von einem Knoten zu einem anderen suchen alle kürzesten Wege von einem Knoten zu allen anderen suchen alle kürzesten Wege von allen Knoten zu allen anderen suchen nach einer Rundreise über alle Knoten suchen nach einer günstigen Rundreise über alle Knoten suchen den maximalen Fluss in einem Graphen bestimmen uvm. Wir wollen uns heute auf zwei einfache, universelle Suchverfahren konzentrieren, um nach einem bestimmten Knoten in einem Baum oder Graphen zu suchen: Breitensuche Tiefensuche 6

Breitensuche in Bäumen Die Breitensuche sucht von der Wurzel aus in die Breite und expandiert somit Level für Level. Wird das gesuchte Element gefunden, so hört die Breitensuche erfolgreich auf. Wurden alle Elemente durchlaufen ohne das gesuchte Element zu finden, so befindet sich das gesuchte Element nicht im Baum. 7

Breitensuche in Graphen In Graphen funktioniert die Breitensuche äquivalent: a a b i m d b d c e c d f j f g h e g k n i j k l l m n o h l o p p 8

Tiefensuche in Bäumen Die Tiefensuche sucht von der Wurzel aus in die Tiefe, d.h. immer dem nächsten Kindknoten hinterher. Sollte es keine weiteren Kindknoten mehr geben, geht der Algorithmus wieder Schritt für Schritt zum jeweiligen Vorgänger zurück und versucht es dort erneut. Wird das gesuchte Element gefunden, so hört die Tiefensuche erfolgreich auf. Wurden alle Elemente durchlaufen ohne das gesuchte Element zu finden, so befindet sich das gesuchte Element nicht im Baum. 9

Tiefensuche: Traversierung Sucht die Tiefensuche nicht nach einem bestimmten Element, so wird der Baum komplett traversiert, d.h. alle Elemente werden einmal betrachtet. Dabei gibt es verschiedene Möglichkeiten: Preorder 1. Wert vom aktuellen Knoten 2. linker Teilbaum 3. rechter Teilbaum Inorder 1. linker Teilbaum 2. Wert vom aktuellen Knoten 3. rechter Teilbaum Postorder 1. linker Teilbaum 2. rechter Teilbaum 3. Wert vom aktuellen Knoten 1 5 10 2 6 2 9 4 9 3 4 7 10 1 4 7 10 1 3 7 8 5 8 9 3 6 8 2 5 6 10

Tiefensuche in Graphen In Graphen funktioniert die Tiefensuche äquivalent, hier wird stets der Nachfolgerknoten expandiert. In welcher Reihenfolge die Nachfolger eines Knotens bestimmt werden, hängt von der Repräsentation der Nachfolger ab, z.b. in der Reihenfolge ihres Eintrags in der Adjazenzliste. a a h j k b h b g i l d c f g h c f o m e i f j o l d e p n k p m n 11

Backtracking Backtracking (Rücksetzverfahren) ist eine Trial-and-Error-Methode um Probleme zu lösen. Wenn absehbar ist, dass aktuelle Teillösung nicht zu einer endgültigen Lösung führen kann, wird der letzte Schritt bzw. die letzten Schritte zurückgenommen, und es werden stattdessen alternative Wege probiert. Bekannte Probleme, die sich mit Backtracking lösen lassen, sind z.b.: 8-Damenproblem Springerproblem Rucksackproblem Solitär Sudoku Wegsuche 12

PAUSE 13