Algorithmen und Datenstrukturen

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
Polynomial Root Isolation
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
Suche in Texten (Stringsuche )
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
<d,a,s, ,i,s,t, ,e,i,n,e, ,L,i,s,t,e>
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. 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 (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (15 Hashverfahren: Verkettung der Überläufer) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Seminar parallele Programmierung SS 2003
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Externe Datenstruktur lineare Liste
Vortrag: Ingo Gensch, Mathias Reich am:
Hauptseminar Automaten und Formale Sprachen
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Das wars!.
Kakuro Regeln und Strategien
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
Berechnen von Momenten und Querkräften (Voraussetzung: Auflagerkraftberechnung) Das statische System ENDE.
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Übung Datenbanksysteme II Index- strukturen
HORIZONT 1 XINFO ® Das IT - Informationssystem Assembler HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 /
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Programmieren in C Sortieren, Suchen
Das Traveling Salesman Problem (TSP)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Binärbäume.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens

Suchalgorithmen Definition “Suchen”: Unter Suchen versteht man das Auffinden eines bestimmten Datums in einer gegebenen Datenmenge anhand eines Suchkriteriums, des sogenannten Suchschlüssels.

Suchalgorithmen Für die Wahl eines bestimmten Suchalgorithmus ist es wichtig zu wissen, ob der zu durchsuchende Datenbestand bereits sortiert vorliegt oder nicht. Weiterhin ist es wichtig zu wissen, ob die zu durchsuchenden Schlüsselwerte mehrfach in verschiedenen Datensätzen vorkommen dürfen oder ob sie eindeutig im gesamten Datenbestand sind.

Sequentielles Suchen sequentiell = aufeinanderfolgend Verfahren: Gesamter Datenbestand wird nacheinander mit dem Suchschlüssel verglichen bis entweder der Vergleich erfolgreich war oder alle Datensätze verarbeitet wurden. Geeignet für unsortierte und sortierte Datenbestände.

Sequentielle Suche Beispiel 3 15 7 99 87 54 50 94 55 89 4 23 1 2 19 3 15 7 99 87 54 50 94 55 89 4 23 1 2 19 Wenn “54” gesucht wird, dann müssen 6 Vergleiche durchgeführt werden. Wenn “19” gesucht wird, dann müssen 15 Vergleiche durchgeführt werden. Wenn “20” gesucht wird, müssen ebenfalls 15 Vergleiche durchgeführt werden, anschließend steht fest, dass “20” nicht im Datenbestand enthalten ist.

Sequentielles Suchen Nachteile Vorteile sehr zeitaufwendig eignet sich nicht für große Datenbestände Vorteile einfach zu realisieren ( Programmierung) eignet sich für kleine Datenbestände eignet sich auch für unsortierte Datenbestände

Sequentielles Suchen Aufwand Der Aufwand beim sequentiellen Suchen ist abhängig von der Anzahl der Datensätze. worst case: bei n Datensätzen müssen n Vergleiche durchgeführt werden (gesuchter Schlüssel im letzten Datensatz oder gar nicht vorhanden)

Binäre Suche nur geeignet für sortierte Datenbestände Schlüsselwerte müssen eindeutig sein (dürfen also nicht mehrfach im Datenbestand vorkommen) Teile-und-herrsche-Prinzip Verfahren: Vergleiche das mittlere Element des Datenbestands mit dem Suchschlüssel. Wenn Übereinstimmung dann fertig. Wenn Suchschlüssel größer, dann Suche in rechter Hälfte fortsetzen. ( mittleres Element der rechten Hälfte) Wenn Suchschlüssel kleiner, dann Suche in linker Hälfte fortsetzen. ( mittleres Element der linken Hälfte)

Binäre Suche Beispiel: 3 5 9 17 22 30 32 36 42 43 49 53 55 61 66 3 5 9 17 22 30 32 36 42 43 49 53 55 61 66 Suchschlüssel: 30 [3..66] Vergleiche mit 36: 30<36  linke Hälfte [3..32] Vergleiche mit 17: 30>17  rechte Hälfte [22..32] Vergleiche mit 30: 30=30  gefunden!

Binäre Suche Vorteile: Nachteile: zeitsparender gegenüber der seq. Suche weniger Vergleiche nötig geeignet für große Datenbestände Nachteile: erfordert sortierten Datenbestand eignet sich nicht, wenn Datenbestand in verketteter Liste vorliegt, da Bestimmung des Mittelelments zu aufwendig ist

Binäre Suche Bei einem Datenbestand von 1 000 000 Datensätzen werden maximal 20 rekursive Aufrufe benötigt, bis feststeht ob – und wenn ja – an welcher Stelle ein bestimmtes Element steht.

Interpolationssuche Stellt Verbesserung der binären Suche dar. Versucht zu „erraten“, wo sich der gesuchte Schlüssel im betrachteten Intervall befinden könnte, anstatt immer nur mit dem mittleren Element zu vergleichen. Vergleichbar mit der Suche in einem dicken Telefonbuch: Beginnt der Name mit „B“, sucht man weiter vorne, beginnt er mit „W“, sucht man weiter hinten.

Interpolationssuche Bei der binären Suche wurde die Mitte bestimmt, um dort den nächsten Vergleich durchzuführen: m = (l + r) / 2 = l + ½ (r - l) Bei der Interpolationssuche ersetzt man nun den Faktor ½ durch eine geeignete Schätzung für die wahrscheinliche (oder erwartete) Position des Suchschlüssels.

Interpolationssuche Voraussetzung: key - data[left] mitte = left + ——————————————————————————— * (right - left) data[right] - data[left] Voraussetzung: die Schlüsselwerte im Intervall data[left], ... , data[right] sind Zahlenwerte und einigermaßen gleichverteilt mitte wird bei der Berechnung korrekt gerundet

Interpolationssuche Beispiel 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (absolute Gleichverteilung: jeder Wert ist genau einmal vorhanden) Suchschlüssel key=5 1. Durchgang: left=0, right=14 Die Berechnung ergibt: mitte=4 D.h. bereits der erste Vergleich trifft ins Schwarze!

Interpolationssuche Beispiel 2 1 4 5 6 7 8 10 11 13 14 16 18 20 21 22 (weitgehende Gleichverteilung: zwischen dem kleinsten und dem größten Wert gibt es nur wenige Lücken) Suchschlüssel key=6 1. Durchgang: left=0, right=14 Die Berechnung ergibt: mitte=3 D.h. auch hier trifft der erste Vergleich!

Interpolationssuche Beispiel 3 1 4 5 6 7 8 10 11 13 14 16 18 20 21 22 Suchschlüssel key=18 1. Durchgang: left=0, right=14 Die Berechnung ergibt: mitte=11 D.h. auch hier trifft der erste Vergleich!

Interpolationssuche Vorteile: Nachteile: I.d.R. weniger Vergleiche nötig als bei binärer Suche Nachteile: setzt gleichmäßig verteilte Schlüsselwerte voraus (ist in der Praxis nicht unbedingt gegeben) Berechnung von „mitte“ ist komplexer

Interpolationssuche Der Quellcode der Interpolationssuche entspricht dem der Binären Suchen mit der einzigen Änderung, dass die Berechnung vom “mitte” entsprechend geändert wird.