Sortierte Folgen 250



Ähnliche Dokumente
Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

Erinnerung VL

Algorithmen I. Sebastian Schlag Institut für Theoretische Informatik Web:

Algorithmen und Datenstrukturen Suchbaum

13. Binäre Suchbäume

Grundlagen der Programmierung 2. Bäume

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

Datenstrukturen & Algorithmen

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume

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

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Suchbäume balancieren

Vorkurs Informatik WiSe 15/16

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Datenstrukturen und Algorithmen

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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Algorithmen und Datenstrukturen Balancierte Suchbäume

Kapitel 5: Dynamisches Programmieren Gliederung

Abschnitt: Algorithmendesign und Laufzeitanalyse

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

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

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Professionelle Seminare im Bereich MS-Office

Nachtrag zu binären Suchbäumen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

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

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Algorithmen und Datenstrukturen

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

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

Vorlesung Datenstrukturen

Programmiertechnik II

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Informatik II, SS 2018

Algorithmen und Datenstrukturen

Informatik II, SS 2014

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

4 Greedy-Algorithmen (gierige Algorithmen)

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

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

Aufgabe 6 Excel 2013 (Fortgeschrittene) Musterlösung

Suchen und Sortieren Sortieren. Heaps

Teile und Herrsche Teil 2

Übung 9 - Lösungsvorschlag

Jan Parthey, Christin Seifert. 22. Mai 2003

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Programmieren I. Kapitel 7. Sortieren und Suchen

Kapitel MK:IV. IV. Modellieren mit Constraints

Primarschule Birmensdorf PIA Anleitungen Word. Bevor du mit Schreiben beginnen kannst, musst du dein Word- Dokument einrichten.

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Tutorium Algorithmen & Datenstrukturen

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

SEMINAR Modifikation für die Nutzung des Community Builders

teischl.com Software Design & Services e.u. office@teischl.com

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

Über Arrays und verkettete Listen Listen in Delphi

Die Online-Meetings bei den Anonymen Alkoholikern. zum Thema. Online - Meetings. Eine neue Form der Selbsthilfe?

Was meinen die Leute eigentlich mit: Grexit?

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Wir machen neue Politik für Baden-Württemberg

1 topologisches Sortieren

Algorithmen & Datenstrukturen 1. Klausur

Wir gehen aus von euklidischen Anschauungsraum bzw. von der euklidischen Zeichenebene. Parallele Geraden schneiden einander nicht.

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

Leichte-Sprache-Bilder

1 Einleitung. Lernziele. Diagramme zur Visualisierung von Daten erstellen. Diagramme formatieren Lerndauer. 4 Minuten.

Übung zu Algorithmen I 31. Mai 2017

Alignment-Verfahren zum Vergleich biologischer Sequenzen

Step by Step Webserver unter Windows Server von Christian Bartl

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

GSD-Radionik iradionics Android-App

Kleines Handbuch zur Fotogalerie der Pixel AG

WS 2009/10. Diskrete Strukturen

Einstellen der Makrosicherheit in Microsoft Word

Programmiertechnik II

Hilfe zur Urlaubsplanung und Zeiterfassung

Grundlagen der Künstlichen Intelligenz

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

Österreichische Trachtenjugend

Benutzung des NAM. Starten Sie Ihren Browser und rufen Sie folgende Adresse auf:

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Künstliches binäres Neuron

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Bedienungsanleitung für den Online-Shop

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Was man mit dem Computer alles machen kann

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Anleitung: Wie unterschreibe ich die Petition im Internet?

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

Transkript:

Sortierte Folgen 250

Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme: Dummy-Element mit Schlüssel Achtung: In Abbildungen sieht wie 00 aus 251

Statisch: Sortiertes Feld mit binärer Suche // Find min{i 2 1..n + 1 : a[i] k} Function locate(a[1..n], k : Element) (`,r):= (0,n + 1) // Assume a[0]=, a[n + 1]= while ` + 1 < r do invariant 0 apple ` < r apple n + 1 and a[`] < k apple a[r] m:= b(r + `)/2c // ` < m < r if k apple a[m] then r:= m else `:= m return r Übung: Müssen die Sentinels / tatsächlich vorhanden sein? Übung: Variante von binärer Suche: bestimme `, r so dass a[`..r 1]=[k,...,k], a[` 1] < k und a[r] > k 252

Statisch: Sortiertes Feld mit binärer Suche // Find min{i 2 1..n + 1 : a[i] k} Function locate(a[1..n], k : Element) (`,r):= (0,n + 1) // Assume a[0]=, a[n + 1]= while ` + 1 < r do invariant 0 apple ` < r apple n + 1 and a[`] < k apple a[r] m:= b(r + `)/2c // ` < m < r if k apple a[m] then r:= m else `:= m return r Zeit: O(log n) Beweisidee: r ` halbiert sich in jedem Schritt 253

Binäre Suche Beispiel: k = 15 Function locate(a[1..n],k : Element) // min{i 2 1..n + 1 : a[i] k} (`,r):= (0,n + 1) // Assume a[0]=, a[n + 1]= while ` + 1 < r do invariant 0 apple ` < r apple n + 1 and a[`] < k apple a[r] m:= b(r + `)/2c // ` < m < r if k apple a[m] then r:= m else `:= m return r Indizes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Einträge: [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] 254

Dynamische Sortierte Folgen Grundoperationen insert, remove, update, locate O(log n) (M.locate(k):= min{e 2 M : e k}) 255

Mehr Operationen hmin,...,a,...,b,...,maxi min: Erstes Listenelement max: Letztes Listenelement Zeit O(1) Zeit O(1) rangesearch(a, b) result:= hi h:= locate(a) while h! e apple b do result.pushback(h! e) h:= h!next return result // O(log n + result ) Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 256

Noch mehr Operationen I (re)build: Navigationsstruktur für sortierte Liste aufbauen O(n) I hw,..., xi.concat(hy,..., zi)=hw,..., x, y,..., zi O(log n) I hw,...,x,y,...,zi.split(y)=(hw,...,xi,hy,...,zi) O(log n) Zählen: rank, select, rangesize O(log n) Fingersuche: = Abstand zu Fingerinfo zusätzlicher Parameter für insert, remove, locate,... O(log n)! log Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 257

Abgrenzung Hash-Tabelle: nur insert, remove, find. Kein locate, rangequery Sortiertes Feld: nur bulk-updates. Aber: Hybrid-Datenstruktur oder log n M statische Datenstrukturen geometrisch wachsende Prioritätsliste: nur insert, deletemin, (decreasekey, remove). Dafür: schnelles merge Sortierte Folgen allgemein: die eierlegende Wollmilchdatenstruktur. Etwas langsamer als speziellere Datenstrukturen 258

Sortierte Folgen Anwendungen I Best-First Heuristiken I Alg. Geometrie: Sweepline-Datenstrukturen I Datenbankindex I... 259

Anwendungsbeispiel: Best Fit Bin Packing Procedure binpacking(s) B : SortedSequence // used bins sorted by free capacity foreach e 2 s by decreasing element size // sort if 9b 2 B : free(b) e then B.insert(new bin) locate b 2 B with smallest free(b) e insert e into bin b Zeit: O( s log s ) Qualität: gut. Details: nicht hier 260

Binäre Suchbäume Blätter: Elemente einer sortierten Folge. Innere Knoten v =(k,`,r), (Spalt-Schlüssel, linker Teilbaum, rechter Teilbaum). Invariante: über ` erreichbare Blätter haben Schlüssel apple k über r erreichbare Blätter haben Schlüssel > k 3 7 17 13 2 5 11 19 2 3 5 7 11 13 17 19 00 261

Varianten, Bemerkungen I Dummy-Element im Prinzip verzichtbar I Oft speichern auch innere Knoten Elemente I Suchbaum wird oft als Synomym für sortierte Folge verwendet. (Aber das vermischt (eine) Implementierung mit der Schnittstelle) 7 17 3 13 2 5 11 19 262

locate(k) Idee: Benutze Spaltschlüssel x als Wegweiser. Function locate(k, x) if x is a leaf then if k apple x then return x else return x!next if k apple x then return locate(k, x!left) else return locate(k, x!right) 3 7 15? < > 17 13 2 5 11 > 19 2 3 5 7 11 13 17 19 00 263

locate(k) anderesbeispiel Idee: Benutze Spaltschlüssel x als Wegweiser. Function locate(k, x) if x is a leaf then if k apple x then return x else return x!next if k apple x then return locate(k, x!left) else return locate(k, x!right) 3 7 18? < > 18 13 2 5 11 > 19 2 3 5 7 11 13 17 19 00 264

Invariante von locate(k) Function locate(k, x) if x is a leaf then if k apple x then return x else return x!next if k apple x then return locate(k, x!left) else return locate(k, x!right) <k <x x root >x >k Invariante: Sei X die Menge aller von x erreichbaren Listenelemente. Listenelemente links von X sind < k Listenelemente rechts von X sind > k 265

Ergebnisberechnung von locate(k) Function locate(k, x) if x is a leaf then if k apple x then return x else return x!next if k apple x then return locate(k, x!left) else return locate(k, x!right) <k x root >k Fall k = x: return x Fall k < x: return x Fall k > x: return x!next Bingo! links ist es auch nicht nächstes ist > k und k gibt es nicht 266

Laufzeit von locate(k) Function locate(k, x) if x is a leaf then if k apple x then return x else return x!next if k apple x then return locate(k, x!left) else return locate(k, x!right) 2 3 5 7 15? < 11 13 2 3 5 7 11 13 17 19 > 17 > 19 00 Laufzeit: O(Höhe). Bester Fall: perfekt balanciert, d. h. Tiefe = blog nc Schlechtester Fall: Höhe n 267

Naives Einfügen Zunächst wie locate(e). Sei e 0 gefundenes Element, u der Elterknoten insert e u k v u insert e u u k v e T e e T T e T e e k=key(e) 268

Beispiel insert 17 insert 13 insert 11 19 19 17 19 17 13 11 13 17 19 19 00 17 19 00 13 17 19 00 11 13 17 19 00 Problem: Der Baum wird beliebig unbalanciert. langsam 269