Informatik II – Kapitel 11

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

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
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
„Such-Algorithmen“ Zusammenfassung des Kapitels 11
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. 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.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
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.
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 Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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
Einführung in die Programmierung Wintersemester 2008/09 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 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 Programmierung Wintersemester 2008/09 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
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.
Die Zählschleife int s = 0 for (int k=1; k
Informatik 1 Übung 4.
Christian Mansky Design - Fallstudien Christian Mansky
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
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.
Arrays of Objects, a 3 part process
 Präsentation transkript:

Informatik II – Kapitel 11 „Such-Algorithmen“ Zusammenfassung des Kapitel 11 Küchlin, Weber, Einführung in die Informatik, 2.Auflage 10.6.2004

Wir wollen eine Funktion suchePosition( F, a ) 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.;

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; }

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)

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 37 42 65 77 88 89 7 9 11 20 23 27 77 88 89 37 42 65 7 9 11 20 23 27 Laufzeit in O(log(n)) (logarithmisch)

Kombinationssuche Wie wir in den Übungen gesehen haben, ist eine Kombination beider Suchverfahren am effizientesten.