Algorithmen und Datenstrukturen Suchen
|
|
|
- David Berg
- vor 9 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen Suchen Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12
2 Lernziele der Vorlesung Algorithmen Sortieren, Suchen, Optimieren Datenstrukturen Repräsentation von Daten Listen, Stapel, Schlangen, Bäume Techniken zum Entwurf von Algorithmen Algorithmenmuster Greedy, Backtracking, Divide-and-Conquer Analyse von Algorithmen Korrektheit, Effizienz
3 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
4 Suchproblem Eingabe: Folge von Zahlen und Suchelement <a 1,a 2,...,a n > Ausgabe: Suche erfolgreich / nicht erfolgreich. Bei Erfolg: Index eines Elements der Folge a, dessen Wert mit dem Suchschlüssel übereinstimmt. Definition, wie mit mehreren Lösungen umgegangen wird. Eingabemenge als Feld oder verkettete Liste repräsentiert Suchverfahren lösen das durch die Eingabe-Ausgabe-Relation beschriebene Suchproblem.
5 Suchen grundlegende Operation auf Datenmengen Stichwort in einem Wörterbuch Telefonnummer in einem Verzeichnis elementare Suchverfahren Schlüssel sind Zahlen Suche ist erfolgreich oder erfolglos Erfolgreiche Suche liefert Position des gesuchten Element Verfahren basieren auf Vergleichsoperationen Daten sind linear als Feld oder Liste repräsentiert Feld: Zugriff auf Element über Index Liste: Zugriff auf Element über Referenz oder mitgeführten Index Hashverfahren und Baumstrukturen werden nicht berücksichtigt
6 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
7 Prinzip überprüfe sequentiell alle Elemente des Feldes (brute force search) int bruteforcesearch(int[] a, int k) { int i=0; if (a==null a.length==0) return -1; } while (i<a.length && a[i]!=k) i++; if (i<a.length) return i; else return -1; Zwei Abfragen pro Durchlauf Element gefunden Element nicht gefunden
8 Prinzip Sentinel-Methode füge das gesuchte Element an die erste oder letzte Stelle des Feldes ein, spart eine Abfrage pro Durchlauf int seqsearch(int[] a, int k) { a[0] = k; int i = a.length; } do i--; while (a[i]!=k); if (i!=0) return i; else return -1; Element gefunden Element nicht gefunden durchsuche a [1..n] nach k a[0] gehört nicht zur zu durchsuchenden Menge, wird mit k initialisiert (Stopper-Element) Eine Abfrage pro Durchlauf
9 Laufzeit bester Fall: O (1) schlechtester Fall: O (n) mittlerer Fall: 1 n n i=1 i= 1 n n (n+1) 2 = n+1 2 =O(n) Feld muss im Gegensatz zu allen weiteren Strategien nicht sortiert sein.
10 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
11 Prinzip Feld ist sortiert gesuchtes Element wird mit mittlerem Element des Feldes verglichen bei Ungleichheit wird nur die jeweils linke oder rechte Hälfte des Feldes rekursiv weiter betrachtet jeder Vergleich mit dem jeweils mittleren Element teilt den Suchraum in zwei Hälften, bis das Element gefunden wurde bis der verbleibende Suchraum sich nicht weiter unterteilen lässt
12 Prinzip Suche von k auf einem sortierten Feld a (keine Liste!) a[0] a[m] a[n] Vergleich: k==a[m] mit m = (0+n) / 2 Fall 1: k==a[m] fertig Fall 2: k < a[m] rekursive Suche von k in a[0..m-1] Fall 3: k > a[m] rekursive Suche von k in a[m+1..n]
13 Rekursive Implementierung int binsearch(int[] a, int l, int r, int k) { if (l>r) return -1; int m = (l+r)/2; int e = a[m]; } if (k==e) return m; if (k <e) return binsearch(a,l,m-1,k); if (k >e) return binsearch(a,m+1,r,k);
14 Iterative Implementierung int binsearch(int[] a, int k) { int l=0, r=a.length-1; } while (l<=r) { int m = (l+r)/2; int e = a[m]; if (k==e) return m; if (k <e) r=m-1; if (k >e) l=m+1; } return -1;
15 Laufzeit jeder Vergleich reduziert die zu durchsuchende Menge um Faktor 2 schlechtester Fall: O (log n) bester Fall: O (1)
16 Laufzeit mittlere Laufzeit Baumrepräsentation 1 Vergleich für 2 0 Elemente 2 Vergleiche für 2 1 Elemente 3 Vergleiche für 2 2 Elemente 4 Vergleiche für 2 3 Elemente Feldrepräsentation
17 Laufzeit mittlere Laufzeit Zahl der Elemente k 1 i=0 2i =2 k 1=n Zahl der Vergleiche k Zahl der Ebenen im Baum k 1 i=0 2i (i 1)= k i=1 2i 1 i=k 2 k 2 k +1 Vergleiche / Elemente log(n+1) (n+1) (n+1)+1 n log(n+1) 1 O(logn) Im Durchschnitt 1 Vergleich weniger als die Maximalzahl möglicher Vergleiche (intuitiv durch Baumrepräsentation klar)
18 Variante Fibonacci-Suche Vermeidung der Division bei der Aufteilung der Menge F 0 = F 1 = 1; F n = F n-1 + F n-2 (n 2) Verfahren finde F n-1 und F n-2 mit F n-1 + F n-2 = F n n vergleiche k mit a[ F n-2 ] Fallunterscheidung und Rekursion wie bei binärer Suche 1 F n-2 F n -1 F n-2-1 Elemente 1 Element F n-1-1 Elemente mittlerer Aufwand O (log n)
19 Implementierung int fibsearch(int[] a, int k) { int n=a.length-1; int fib2=1; fib1=1; fib=fib1+fib2; while (fib-1<n) { fib2=fib1; fib1=fib; fib=fib1+fib2; } } int offset=0; while (fib>1) { int i=min(offset+fib2,n); int e=a[i]; if (k==e) return i; if (k<e) { fib=fib2; fib1=fib1-fib2; fib2=fib-fib1; } if (k>e) { offset=i; fib=fib1; fib1=fib2; fib2=fib-fib1; } } return -1 linker Rand-1 finde Fibonacci-Zahl >=n fib1 und fib2 sind die Vorgänger von fib
20 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
21 Prinzip n sehr groß gegenüber dem zu suchenden Schlüssel k Verfahren j=1; while (k>a[j]) j=2*j; return binsearch(a,j/2,j,k); teste a[1], a[2], a[4],.., a[2 j ] Aufwand O(log k) Schritte in der while-schleife O(log j/2) = O(log k) Schritte für binäre Suche
22 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
23 Prinzip berücksichtige die zu erwartende Position des Schlüssels k im Feld a Feld a wird von Position l bis Position r durchsucht Annahme: Schlüsselwerte verhalten sich linear zwischen a[l] und a[r] Schätzung der Position t durch t=l+(r l) k a[l] a[r] a[l] Quotient liegt zwischen 0 (für k=a[l]) und 1 (für k=a[r]). Damit liegt t zwischen l und r. Annahme des linearen Verhaltens stimmt oft nicht mit dem realen Verhalten überein
24 Implementierung int interpsearch(int[] a, int k) { int l=0, r=a.length-1; } while (l<=r) { int m = l+(l-r)*(k-a[l])/(a[r]-a[l]); int e = a[m]; if (k==e) return m; if (k <e) r=m-1; if (k >e) l=m+1; } return -1; Wir vergessen natürlich nicht, a[r]-a[l]==0 irgendwo zu behandeln.
25 Diskussion mittlere Laufzeit: O( log (log n) ) sehr langsames Wachstum: log (10 9 ) 30, log (log (10 9 )) 5 effizient bei großen Feldern und linearem Verhalten der Schlüssel Implementierung im Vergleich zur binären Suche lediglich bei der Berechnung des mittleren Elements aufwendiger
26 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
27 Naiver Ansatz finde das i-kleinste Element eines unsortierten Feldes a Ansatz j=0; while (j<i) { min=kleinsteselement(a); entferne(a,min); j++;} return min; Aufwand: O(i n) für i=n/2 (Median) ist der Aufwand O(n 2 ) Sortieren und direkter Zugriff auf a [ i ] wäre schneller in O(n log n)
28 Verwendung eines Heaps min-heap (analog zu max-heap) binärer Baum, wobei Wert eines Knotens kleiner als die Werte der beiden Nachfolgeknoten ist Wurzel enthält kleinstes Element Aufbau in O(n), Aktualisierung in O(log n) i-kleinstes Element mit Hilfe eines Heaps generiereheap(a); j=0; while (j<i) { entferne(a,a[0]); rekonstruiereheap(a); j++; } return a[0]; Aufwand O(n + i log n) mittlerer, schlechtester Fall O (n log n) O (n) O (i) O (log n)
29 Teile-und-Herrsche-Ansatz Aufteilung von a bezüglich Pivotelement p l r a[ l..r-1 ] p Divide-Schritt (wie Quick-Sort) O(n) l m r a[.. ] < p p a [.. ] > p Pivot-Element ist an Position m m-l+1 == i fertig (p ist i-kleinstes Element) m-l+1 > i rekursiver Divide-Schritt auf a[l.. m-1] m-l+1 < i rekursiver Divide-Schritt auf a[m+1.. r] Rekursionstiefe O (log n) bis O(n) Divide-Schritt wird nur auf n, n/2, n/4, angewendet
30 Implementierung int findmini (int[] a, int l, int r, int i) { } int m = quicksortdivide(a, l, r); if ( m==i ) return a[i]; if ( m >i ) return findmini (a,l,m-1,i); if ( m <i ) return findmini (a,m+1,r,i); quicksortdivide liefert die Position m des Pivotelements
31 Laufzeit Teile-und-Herrsche-Ansatz Analog zu Quick-Sort bester Fall: Pivotelement teilt Menge in zwei gleichgroße Mengen T(n) = T(n/2) + n (Quick-Sort: T(n) = 2 T(n/2) + n) Fall 3 des Master-Theorems: Die Hälfte der Menge kann jeweils verworfen werden. T(n) Θ(f(n)) falls f(n) Ω n log a+ǫ b ǫ>0 af n b cf(n) 0<c<1 a=1, b=2, f(n)=n, log b a=log 2 1=0 f(n) Ω n log n 2 c n T(n) Θ(n) 2 n c= 1 2
32 Laufzeit schlechtester Fall: T(n) = T(n-1) + O(n) T(n) O(n 2 ) mittlerer Fall: O(n) spezielle Strategien zum Finden des Pivotelements randomisiert (wähle ein zufälliges Element) Median (wähle in konstanter Zeit mittleres Element aus 3 oder 5 Elementen)
33 Überblick Einführung Sequentielle / lineare Suche Binäre Suche Exponentielle Suche Interpolationssuche i-kleinstes Element Selbstanordnende Listen
34 Prinzip ordne häufig gesuchte Elemente an den Anfang des Feldes / der Liste verwende sequentielle Suche nur vorteilhaft, wenn einige Elemente signifikant häufiger gesucht werden als andere werden alle Elemente gleich häufig gesucht, ist das Verfahren schlechter als die sequentielle Suche (sequentielle Suche plus Umordnung der Elemente)
35 Strategien MF-Regel (move to front) gesuchtes Element wird Kopf der Liste / erstes Element des Feldes T-Regel (transpose) gesuchtes Element wird mit unmittelbarem Vorgänger vertauscht FC-Regel (frequency count) zähle Suchanfragen pro Element ordne gesuchtes Element so ein, dass die Zählerwerte in der Liste / im Feld absteigend sortiert sind
36 Zusammenfassung Sequentielle / lineare Suche Feld muss nicht sortiert sein, Laufzeit O(n) Binäre Suche Feld muss sortiert sein, Laufzeit O(log n) Fibonacci-Suche vermeidet Division, Laufzeit O(log n) Exponentielle Suche sinnvoll, wenn Schlüssel k klein gegenüber Anzahl der Elemente n Feld ist sortiert, Laufzeit O(log k) Interpolationssuche Feld ist sortiert, vermutet lineares Verhalten der Schlüsselwerte Laufzeit O (1), wenn die Vermutung stimmt, sonst O (log (log (n)) i-kleinstes Element naiv O(n 2 ), min-heap O (n log n), basierend auf Quick-Sort bei guter Pivotisierung O (n)
37 Nächstes Thema Algorithmen / Datenstrukturen Hashverfahren
Teil 6: Algorithmen und Datenstrukturen 6.3 Suchalgorithmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt
Grundzüge der Informatik 1 Teil 6: Algorithmen und Datenstrukturen 6.3 Suchalgorithmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt Agenda Grundlegendes zu Suchalgorithmen Kennenlernen der
Informatik I 4. Kapitel Suchen in sequentiellen Listen
Informatik I 4. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 21. Mai 2008 1 / 55 2 / 55 Szenario Suchen in Daten gehört zu den wichtigsten Operationen etwa Suchen nach: Stichworten in
Algorithmen und Datenstrukturen Laufzeitabschätzung
Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg
Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern
Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern [email protected] 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische
Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben
Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge
Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array
Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele
Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle
122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.
Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.
Einführung Elementare Datenstrukturen (Folie 38, Seite 23 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen
ADS: Algorithmen und Datenstrukturen
.. ADS: Algorithmen und Datenstrukturen Zweite Vorlesung Uwe Quasthoff Abteilung Automatische Sprachverarbeitung Institut für Informatik Universität Leipzig 19. Oktober 2011 Einfache Suchverfahren Lineare
Einführung in die Informatik I Kapitel II.1: Suchen
1 Einführung in die Informatik I Kapitel II.1: Suchen Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 2. Vorlesung Prof. Dr. Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] Einfache Suchverfahren Lineare Listen Sequentielle Suche
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
2. Einfache Suchverfahren
Lineare Listen Sequentielle Suche Binäre Suche. Einfache Suchverfahren Weitere Suchverfahren auf sortierten Feldern - Fibonacci-Suche - Sprungsuche - Exponentielle Suche - Interpolationssuche Auswahlproblem
Suchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
Kapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 9, Donnerstag 18. Dezember 2014 (Teile und Herrsche, Mastertheorem) Junior-Prof. Dr.
3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.
Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf
4 Effizienz und Komplexität 3.1 1
4 Effizienz und Komplexität 3.1 1 Effizienz (efficiency): auf den Ressourcen-Verbrauch bezogene Programmeigenschaft: hohe Effizienz bedeutet geringen Aufwand an Ressourcen. Typische Beispiele: Speichereffizienz
A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.
Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort
Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:
Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls
Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte
Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 0 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Fortgeschrittene Datenstrukturen Such-Algorithmen
12. Rekursion Grundlagen der Programmierung 1 (Java)
12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung
1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element
JAVA - Suchen - Sortieren
Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik
Abschnitt: Algorithmendesign und Laufzeitanalyse
Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger
Fibonacci-Suche. Informatik I. Fibonacci-Suche. Fibonacci-Suche. Einführung. Rainer Schrader. 24. Mai 2005
Fibonacci-Suche Informatik I Einführung Rainer Schrader Zentrum für Angewandte Informatik Köln 4. Mai 005 Grundidee wie bei der Binärsuche, aber andere Aufteilung Fibonacci-Zahlen: F 0 = 0 F 1 = 1 F m
Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
Heapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
Programmiertechnik II
Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen
Algorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
Lernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 [email protected] 1 Kapitel 2 Algorithmische [email protected] 2 2. Algorithmische 1) Iterative Algorithmen 2) Rekursive Algorithmen
Auswählen nach Rang (Selektion)
Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen
7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Kapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3
581 21. Greedy Algorithmen Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3 Aktivitäten Auswahl 582 Koordination von Aktivitäten, die gemeinsame Resource exklusiv
Grundlagen der Informatik
Jörn Fischer [email protected] Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken
Projekt Systementwicklung
Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit
(27 - Selbstanordnende lineare Listen)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 - Selbstanordnende lineare Listen) Prof. Dr. Susanne Albers Problemstellung Gegeben sei eine Menge von Objekten (Schlüsseln), auf die mit zeitlich
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
2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :
2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine
Datenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 [email protected] 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
Sortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: [email protected] Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
Interne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
Übung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
Ein sortiertes Feld kann in O(log n) durchsucht werden, z.b. mit Binärsuche. Der Algorithmus 1 gibt den Pseudocode der binären Suche an.
2.5 Suchen Eine Menge S will nach einem Element durchsucht werden. Die Menge S ist statisch und S = n. S ist Teilmenge eines Universums auf dem eine lineare Ordnung definiert ist und soll so gespeichert
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur
Sortierverfahren. Sortierverfahren für eindimensionale Arrays
Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige
186.172 Algorithmen und Datenstrukturen 1 VL 4.0 1. Übungstest WS 2010/11 26. November 2010
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 1. Übungstest WS 2010/11 26.
Algorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik [email protected] Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu
Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)
Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge
T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)
Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und
Geometrie II. Deniz Neufeld Deniz Neufeld Geometrie II / 39
Geometrie II Deniz Neufeld 20.06.2016 Deniz Neufeld Geometrie II 20.06.2016 1 / 39 Ziel Umgehen mit großen, mehrdimensionalen Datenmengen Bereichssuche Nearest-Neighbour-Search Mehrdimensionale Datenverarbeitung
Algorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
Abschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.
Suchen und Sortieren
Ideen und Konzepte der Informatik [Ordnung ist das halbe Leben] Kurt Mehlhorn (viele Folien von Kostas Panagiotou) Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Gerechtigkeit?
6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.
Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort
Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem
Suchen und Sortieren
Ideen und Konzepte der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn (viele Folien von Kostas Panagiotou) Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?
8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
Algorithmen und Datenstrukturen 1-1. Seminar -
Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik
Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert
4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand
2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017
2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel
Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Klausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Untere Schranken für Sortieren Sortieren mit linearem Aufwand Mediane und Ranggrössen 2 Wie schnell können wir sortieren?
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung
Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO
Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:
Algorithmische Methoden zur Netzwerkanalyse
Algorithmische Methoden zur Netzwerkanalyse Juniorprof. Dr. Henning Meyerhenke Institut für Theoretische Informatik 1 KIT Henning Universität desmeyerhenke, Landes Baden-Württemberg Institutund für Theoretische
8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
Algorithmen und Datenstrukturen I Grundlagen
Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift
