Beruflich Dokumente
Kultur Dokumente
Einleitung
Zu meiner Person
Email: nimm@technikum-wien.at Bro: 6.Stock, Zimmer 6.19 Tel: +43 1 333 40 77 / 242 Sprechstunden: nach Vereinbarung per Mail
Informatik - Algodat
Einleitung Lehrplan
VO Algorithmen und Datenstrukturen 1 SWS UE 1 SWS
Aufwand: 2 SWS = 3 ECTS entsprechen 75 volle Stunden (inkl. Anwesenheitszeit, Prfungsvorbereitung, Selbststudium, )
Vorlesung
geblockt 2h alle 2 Wochen Vortrag mit Diskussion
Informatik - Algodat 3
Einleitung
bung bungsprotokolle bzw. Programmierbungen in max. Zweiergruppen Die bungen werden eigenverantwortlich fertig gestellt freie Wahl der Programmiersprache fr Umsetzung von Algorithmen Abgabe ber ein WEB-Interface 3 Code Reviews innerhalb der bungseinheiten mit Prsentation der Lsungen
Informatik - Algodat 4
Einleitung Lehrziele
Entwicklung von Lsungsstrategien fr Algorithmen und komplexe Systeme mithilfe von analytischen und strukturierten Denkprozessen Verstndnis von Datenstrukturen und deren Einsatzgebieten Analyse, Design und Bewertung von Algorithmen
Informatik - Algodat
Einleitung
Benotung
schriftliche Prfung am Ende des Semesters
75 Punkte knnen erreicht werden Beispiele aus dem Vorlesungsstoff Alle Unterlagen erlaubt Positiv ab 38 Punkten
bungsbeispiele
3 Code Reviews zu je 25 Punkten Positiv ab 38 Punkten Versumen eines Code Reviews ohne rtztliche Besttigung = 0 Punkte auf dieses Review
Einleitung
Gesamtnote
50% Gewichtung Prfung 50% Gewichtung Code Reviews Beide Teile mssen positiv sein! Mglichkeit eines Programmierprojekts anstelle der Vorlesungsprfung
Informatik - Algodat
Literatur
Skriptum Algorithmen und Datenstrukturen (Wirtschaftsinformatik) Powerpoint Folien (Notizen machen!!!) Java Applets Online Tutorials
http://www.netzmafia.de/skripten/ad http://ad.informatik.uni-freiburg.de/ bibliothek/books/ad-buch/
http://ivs.cs.uni-magdeburg.de/ sw-eng/agruppe/lehre/ead.shtml
Informatik - Algodat 8
Literatur
Sedgewick: Algorithmen in C
Addison-Wesley Auch als JAVA Version verfgbar
LV-Inhalte
LV-Inhalte
Komplexitt Aufwandsabschtzung
Komplexitt: Abschtzung des Aufwandes der Berechnung auf einem Computer = Laufzeit des Algorithmus Wie hufig werden bestimmte Operationen durchgefhrt? einfache Anweisung: 1 mal for Schleife von 1 bis n: n mal doppelt verschachtelte for Schleife: n mal primitive Operationen werden nicht bercksichtigt z.B.: Zhlvariablen bei Schleifen Funktionsaufruf Indexberechnungen
Informatik - Algodat
13
Komplexitt O-Notation
Der Aufwand wird als mathematische Funktion der von einem Algorithmus zu verarbeiteten Datenmenge (N) dargestellt Betrachtet wird das Verhalten des Aufwandes bei immer grer werdenden N = asymptotischer Verlauf der Funktion Abschtzung gilt also nur fr groe Datenmengen, analysiert wird die Ordnung von Algorithmen Beispiel:
Braucht Algorithmus A fr doppelt so viele Daten doppelt so lange und Algorithmus B hingegen viermal solange: Ordnung unterschiedlich Ist Algorithmus B jedoch immer nur um eine Konstante langsamer, z.B. 50%, haben beide trotzdem die gleiche Ordnung
Informatik - Algodat 14
Informatik - Algodat
15
Komplexitt O-Notation
Aufwand O(1) O(ld N) O(N) O(N) O(N*ld N) O(N) O(Nk) O(2N) O(N!) Bezeichnung konstanter Aufwand logarithmischer Aufwand Aufwand mit Wurzel N linearer Aufwand quasilinearer Aufwand quadratischer Aufwand polynomieller Aufwand exponentieller Aufwand faktorieller Aufwand am schlechtesten Einstufung optimal
Informatik - Algodat
16
Informatik - Algodat
17
O(logaN) = O(ld N)
Basis des Logarithmus spielt keine Rolle = Konstante
O(f(N)+g(N)) = O(max<f(N),g(N)>)
Nur der aufwendigste Teil ist relevant z.B. O(N+N) = O(N)
Beispiel:
O(17N+3N+100) = ?
Informatik - Algodat 18
Sortieralgorithmen
Wie lautet der Aufwand bekannter Sortierverfahren nach O-Notation? Best case/Worst case ? Ist Quicksort immer schnell?
Informatik - Algodat
19
Probleme kann man nie mit derselben Denkweise lsen, durch die sie entstanden sind. [A. Einstein] Space, time and probability all have axes along which it is possible to move. [D. Adams] If a program is not correct, it matters little how fast it runs. [B. Kernighan und P. Plauger]
Informatik - Algodat
20
Sortieralgorithmen
Beispiel Datei mit maximal n positiven ganzen Zahlen, jede kleiner als n (n = 107) gesucht: sortierte Liste der Eingabezahlen sehr wenig Hauptspeicher (wird durch andere Applikationen belegt) beliebig Plattenspeicher Laufzeit ist kritisch und daher mglichst kurz alle Zahlen sind voneinander unterschiedlich
Informatik - Algodat 21
Suchalgorithmen
Motivation Das Suchen ist eine der wichtigsten Operationen, die man mit Computern ausfhren mchte Man sucht zum Beispiel:
Suchbegriffe in Suchmaschinen Wrter in einem Wrterbuch Stichwrter in einer Enzyklopdie Telephonnummern im Telephonverzeichnis Kontonummern, Personalnummern,
Informatik - Algodat
23
Suchalgorithmen Einfhrung schnelle Suche nach eindeutigen Schlsselwerten bei einer groen Anzahl von Daten notwendig
Jeder Datensatz wird durch einen eindeutigen Schlssel reprsentiert z.B. Studentendaten: Matrikelnummer als Schlssel
Datenstrukturen fr Suchalgorithmen
Felder (Arrays) Lineare Listen Hashtabellen Suchbume Heaps
Informatik - Algodat
24
Suche M (i=4)
= M?
A S E A R C H I N G E X AM P L E 0 1 2 3 4 5 6 7 8 9 10 111213 14 15 16
Aufwandsabschtzung:
Schlechtester Fall: N Vergleiche = O(N) Bester Fall: 1 Vergleich = O(1) Durchschnittlicher Fall (bei erfolgreicher Suche): N/2 Vergleiche = O(N) Durchschnittlicher Fall (bei erfolgloser Suche): N Vergleiche = O(N)
Informatik - Algodat
25
Suche M (i=4)
= M?
Informatik - Algodat
26
Binre Suche
Binre Suche:
Prinzip: Teile und Herrsche (Divide and Conquer) Halbschrittverfahren Teile die Datenstze in zwei Hlften Bestimme, welchem der zwei Teile der gesuchte Schlssel angehrt Durchsuche nur mehr diesen Teil und wiederhole die Aufteilung
M 10 11 12 13 14 15 16
27
Informatik - Algodat
Binre Suche
Implementierung:
int f[MAX]; // Feld in dem gesucht wird int binsearch(int a, int b, int key) { int m; if (b<a) return -1; // nicht gefunden m=(a+b)/2; if (key<f[m]) return binsearch(a,m-1,key); else if (key>f[m]) return binsearch(m+1,b,key); else return m; } int gefunden=binsearch(0,MAX-1,suchkey);
Aufwandabschtzung:
Schlechtester Fall: ld N Vergleiche = O(ld N) Bester Fall: 1 Vergleich = O(1) Durchschnittlicher Fall (bei erfolgreicher Suche): ld N Vergleiche = O(ld N) Durchschnittlicher Fall (bei erfolgloser Suche): auch ld N Vergleiche = O(ld N)
Informatik - Algodat 28
Interpolationssuche
Interpolationssuche:
Verbesserung der binren Suche Teilen der Datenstze nicht immer in der Mitte, sondern in einem sinnvoll interpolierten Intervall bei gleichmiger Schlsselverteilung Aufwand O(log log N)
Berechnung:
x...aktueller Platz L...Linker Rand des Intervalls a[L]...Wert an der Stelle L R...Rechter Rand des Intervalls a[R]...Wert an der Stelle R Z...zielwert
x=13
3 8 17 22 27 30 41 45 52 53 58 70 72 76 81 85 87
2. Interpolation: x=(0+(70-3)*(12-0))/(72-3)=11,6
x=12
3 8 17 22 27 30 41 45 52 53 58 70 72
3. Interpolation: x=(0+(70-3)*(11-0))/(70-3)=11
x=11 3 8 17 22 27 30 41 45 52 53 58 70 70 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Informatik - Algodat
30
Hashtabelle Speicherung der Daten in einem normalen Array mit N Elementen (Indices 0 bis N-1) Mittels einer speziellen Funktion (Hashfunktion) wird der Schlsselwert eines Datensatzes auf einen Arrayindex abgebildet
Funktion h(S) liefert einen Index zwischen 0 und N-1 fr Schlssel S
Der Datensatz wird unter dem von der Hashfunktion berechneten Index im Array abgespeichert und kann durch Aufruf der Hashfunktion sofort wieder gefunden werden
Informatik - Algodat 31
Hashtabelle
Probleme
Wie soll ein beliebiger Schlsselwert auf einen Index von 0 bis N-1 abgebildet werden? In der Regel ist der Wertebereich der Schlssel sehr viel grer als die N mglichen Indices des Arrays Die Hashfunktion kann nicht allen mglichen Schlsselwerten unterschiedliche Indexpositionen zuweisen
Kollision wenn 2 Elementen dieselbe Position zugewiesen wird!
Wie knnen die Schlsselwerte gleichmig auf das Array verteilt werden, um den Speicherplatz optimal zu nutzen?
Informatik - Algodat 32
Hashtabelle
schnelle Berechnung
Beispiel
Integerzahlen als Schlsselwerte h(S)= S mod N Arraygre N sollte eine Primzahl sein, um eine gleichmige Verteilung zu erreichen
Informatik - Algodat
33
Hashtabelle Beispiel N=7 (Array mit Indices 0 bis 6) h(S)=S mod 7 Einfgen von 9,13,17,23
h(9)=9 mod 7 h(13)=13 mod h(17)=17 mod h(23)=23 mod = 7 7 7 2 = = = -> Element 6 -> Index 3 -> Index 2 -> Index landet in Index 2 6 3 ???
Informatik - Algodat
34
Hashtabelle Kollisionsbehandlung Wahrscheinlichkeit fr Kollisionen nimmt mit dem Fllgrad der Hashtabelle zu Fllgrad =Anzahl der Datenstze/Tabellengre mehrere Strategien um Kollisionen zu behandeln: externe Verkettung
Elemente mit gleichem Hash-Wert werden in einer linearen Liste abgespeichert
Sondierung (Probing)
Im Falle einer Kollision wird eine alternative Position in der Tabelle selbst gesucht
Informatik - Algodat 35
Informatik - Algodat
Quadratische Sondierung
Berechnung der neuen Zelle: Index+1,+4,+9, vermeidet Clusterbildung
Hashtable Implementierung
public Object get(Object key) public boolean contains(Object value) public boolean containsKey(Object key)
Informatik - Algodat
39