„Such-Algorithmen“ Zusammenfassung des Kapitels 11

Slides:



Advertisements
Ähnliche Präsentationen
Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Advertisements

Informatik II – Kapitel 11
M a r c – o l i v e r p a h l Informatik II – Kapitel 14 Hashing Zusammenfassung des Kapitel 14 Küchlin, Weber, Einführung in die Informatik, 2.Auflage.
Einführung in die Programmierung Zusammenfassung
Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03
Zusammenfassung des Kapitels 8
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Anwendungen von Stapeln und Schlangen
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
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.
M a r c – o l i v e r p a h l Informatik II – Kapitel 18 Übersetzung Zusammenfassung des Kapitel 18 Küchlin, Weber, Vorversion Einführung in die Informatik,
Informatik II – Kapitel 13

Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 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
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Struktogramme IF-ELSE FOR – Schleife
Rekursion Richard Göbel.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
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.
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 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Informatik 1 Übung 4.
Christian Mansky Design - Fallstudien Christian Mansky
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
2.4 Rekursion Klassifikation und Beispiele
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Suchen und Sortieren.
JAVA lernen: Methoden.
Rekursion – Speicherverwaltung
Methoden - rekursiv.
Raphael Fischer Informatik II - Übung 05 Raphael Fischer
Grundkurs Informatik mit Java
 Präsentation transkript:

„Such-Algorithmen“ Zusammenfassung des Kapitels 11 Küchlin, Weber, Einführung in die Informatik, 3.Auflage Marc-Oliver Pahl, 10.6.2004 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 3-540-20958-1

suchePosition( F, a ): Initialisiere: Trivialfall: Reduktion: Was wollen wir tun? Wir wollen eine Funktion suchePosition( F, a ) realisieren, die dem folgenden Algorithmenschema genügt: suchePosition( F, a ): // Vorbedingung: F ist eine Folge, a ein Element // Nachbed.: Rückgabe = (Position von a in F) | (-1 wenn a  F) Initialisiere: res = -1; S = Mg. Aller Suchpos. In F; Trivialfall: if (S == ) return res; Reduktion: Wähle nächste Suchposition p; Entferne p aus S; Rekursion: if (F[p] == a) return res=p; else weiter bei ii.; W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -2- Springer-Verlag, ISBN 3-540-20958-1

Lineare Suche (greedy) public static int linearSearch( Object[] f, Object a){ for ( int i=0; i<f.length; i++) if (f[i].equals(a) ) return i; return -1; } public static int linearSearch( Object[ ] f, Object a){ int i=0; while ( i<f.length && !(f[i].equals(a)) ) i++; if (f[i].equals(a)) return i; else return -1; } W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -3- Springer-Verlag, ISBN 3-540-20958-1

Lineare Suche (greedy) mit Sentinel (Waechter) public static int linearSearch( Object[ ] f, Object a){ int i=0; „f=f + a;“ while ( !(f[i].equals(a)) ) i++; if (i =< f.length) return i; else return -1; } Sentinel a public static int linearSearch( Object[ ] f, Object a){ int i=0; while ( i<f.length && !(f[i].equals(a)) ) i++; if (f[i].equals(a)) return i; else return -1; } Laufzeit in O(n) (linear) W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -4- Springer-Verlag, ISBN 3-540-20958-1

Divide & Conquer binaere Suche Binäre Suche nach dem Divide & Conquer Prinzip macht nur Sinn, wenn nach dem Teile-Schritt ein Teil ausgeschlossen werden kann. public static int binarySearch( Comparable[ ] f, Comparable a, int l, int r){ int p=(l+r)/2; // Teilungsposition int c=f[p].compareTo(a); // Vergleich: 0: gleich, <0: größer, >0: kl if (c == 0) return p; // gleich => gefunden if (l==r) return -1; // nicht gefunden (letztes verbleibendes Element ist ungleich) if (c<0) return binarySearch(f, a, l, p-1); // links weiter else return binarySearch(f, a, p+1, r); // rechts weiter } Initialisierung{ Trivialfall{ Red./ Rek.{ binarySearch(f, „88“, 0, 11): p=(l+r)/2; 7 9 11 20 23 27 37 42 65 77 88 89 Laufzeit in O(log(n)) (logarithmisch) 37 42 65 77 88 89 7 9 11 20 23 27 77 88 89 37 42 65 7 9 11 20 23 27 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -5- Springer-Verlag, ISBN 3-540-20958-1

Kombinationssuche Wie wir in den Übungen gesehen haben, ist eine Kombination beider Suchverfahren am effizientesten. W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -6- Springer-Verlag, ISBN 3-540-20958-1