Jedes Programm verwendet Datenstrukturen und Algorithmen um seine Aufgabe zu erfüllen Diese müssen offenbar zunächst sorgfältig dem speziellen Problem.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Berechne den optimalen (kürzesten, schnellsten) Weg
Datenstrukturen und Algorithmen
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Single-Source Shortest Paths: SSSP
Eine dynamische Menge, die diese Operationen unterstützt,
Minimum Spanning Tree: MST
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
3. Kapitel: Komplexität und Komplexitätsklassen
Imperative Programmierung -Entwicklungswerkzeuge
Anwendung und Visual Basic
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Sprache
Motivation Richard Göbel.
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Zusammenfassung Vorwoche
Minimum Spanning Tree: MST
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Bestimmung des ggT zweier Zahlen
Vortrag über Graphen Von Jörg Hendricks.
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
2.4 Rekursion Klassifikation und Beispiele
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Programmiervorkurs WS 2014/15 Methoden
Analyse der Laufzeit von Algorithmen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Programmiersprachen II Graph_Algorithmen Gewichtete Graphen - Minimum Spanning Tree und shortest path aus Implementierungssicht Prof. Dr. Reiner Güttler.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Java Programme nur ein bisschen objektorientiert.
Hello World! Javakurs 2013 Arne Kappen
 Präsentation transkript:

Jedes Programm verwendet Datenstrukturen und Algorithmen um seine Aufgabe zu erfüllen Diese müssen offenbar zunächst sorgfältig dem speziellen Problem entsprechend ausgewählt werden Hat man sich für solche Ds und As entschieden, müssen diese noch sorgfältig implementiert werden

Algorithmen, Java(Javac)…

Nach welchen Kriterien wählt man Datenstrukturen und Algorithmen für ein spezielles Problem? Korrektheit (klar…) Laufzeit Speicherverbrauch

Für kleine Problemgrössen spielt die Laufzeit meist keine Rolle. Uns interessiert statt dessen die Laufzeit für grosse Probleminstanzen! Daher analysieren wir häufig das Laufzeitverhalten nur für genügend grosse Eingaben (Grenzwertprozess!) Dies motiviert die folgenden Wachstumsklassen : o(f(n)): alle Funktionen die langsamer wachsen als f O (f(n)): alle Funktionen die nicht schneller wachsen als f (f(n)): alle Funktionen die so schnell wachsen wie f (f(n)): alle Funktionen die nicht langsamer wachsen als f (f(n)): alle Funktionen die schneller wachsen als f Asymptotische Notation – Das Wachstum von Funktionen

Definition [1]: Für g F ist Seidie Menge aller Funktionen von N nach R 0 +.

Häufig lassen sich die folgenden Sätze einfacher anwenden als die Definitionen:

Bei iterativen Algorithmen ist es oft leicht, einfach die Anweisungen zu zählen Die Analyse rekursiver Algorithmen führt hingegen meist auf eine sog. Rekurrenzgleichung

Dies ist eine Rekurrenzgleichung, denn T hängt vom Wert von T für kleinere Eingaben ab! Wie löst man Rekurrenzgleichungen? Wir haben zwei Verfahren dafür kennengelernt: Substitutionsmethode Mastertheorem

Wir landen also bei den folgenden drei Fällen (a¸1, b>1, f(n)¸0): (1) Ist für ein > 0, so gilt: (2) Ist dann ist: (3) Ist für ein > 0, und ist a f(n/b) c f(n) für eine Konstante c < 1 und genügend großes n, so gilt: Erste Lücke Zweite Lücke

Unbounded arrays (vector in C++) Listen (einfach verkettet, doppelt verkettet, zyklisch,…) (Such-)Bäume und Wälder (binär, Rot-Schwarz, AVL, …) Heaps (Binär, d-när, Binomial, Fibonacci) Graphen (gerichtet, ungerichtet)

Einfügen geht bei Heaps effizient (O(log(n)) Effizient Löschen können wir aber nur das maximale Element (max-Heap) bzw. das minimale Element (min-Heap) Auch die Suche ist nicht wirklich schnell Wofür braucht man dann denn überhaupt Heaps? Heaps können gut sortieren (Heapsort) Heaps ergeben gute Priority Queues (intelligente ToDo-Liste mit den Operationen insert, maximum, extract_max)

Vielleicht die wichtigste und allgemeinste Datenstruktur der Informatik Graphen verbinden Knoten über Kanten miteinander Knoten und Kanten können jeweils Informationen tragen (z.B. Stadtnamen und Entfernungen) Hamburg Berlin Dresden Nürnberg München Stuttgart Saarbrücken Köln Frankfurt Mannheim 300 km 200 km 150 km 250 km 50 km 100 km 450 km 400 km 300 km 200 km

BREITENSUCHE:TIEFENSUCHE: ausgehend von einem Knoten v, durchsuche die von ihm erreichbaren Knoten in der Reihenfolge Ihrer Distanz von v Steige immer so tief wie möglich in den Baum hinab, d.h. folge immer den Kanten des letzten neu entdeckten Knoten. v u x w y z v u w v x y z uw x y z

Beispiele für wichtige Graphalgorithmen: Bestimmen der starken Zusammenhangskomponenten (basiert auf DFS) Topologisches Sortieren (geht auch mittels DFS) Bestimmung des Minimum Spanning Tree; dies ist ein Baum, der alle Knoten eines Graphen verbindet, und für den die Summe der Kantengewichte (geklaut aus dem Originalgraphen) minimal ist Wichtiges Beispiel für einen Greedy-Algorithmus! (läuft immer in Richtung des aktuellen lokalen Optimums) Bestimmen von kürzesten Pfaden, d.h. Pfaden mit minimalen Kantengewichten (SSSP, SDSP usw.)

Its the current hot language Its almost entirely object-oriented It has a vast library of predefined objects and operations Its more platform independent this makes it great for Web programming Its more secure It isnt C++

Objektorientier Methodenbindung Javac(Compiler) Byte-Codes werden von der Java Virtual Machine ausgeführt werden Applets Anwendung ist ein herkömmliches Programm HTML zum Aufruf von Applets JDK(Entwicklungswerkzeuge)

Die. Class-Dateien vom Compiler erzeugten EXE-Dateien. so kombiniert Java Compiler und Interpretation Dieser Ansatz bietet Plattform-Unabhängigkeit und mehr Sicherheit Javascript ist eine Erweiterung von HTML

Ein Folge von Befehlen Computer befolgt diese Befehle In eine Sprache, die den PC versteht ( Binär)

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); }

int, double, boolean, char, byte, short, long, float In C ist fast alles in Funktionen In Java ist fast alles in Klassen Es darf nur eine öffentliche Klasse geben (public class) Der Dateiname muss der gleiche wie der Name des öffentlich-Klasse sein, aber mit einem. Java- Erweiterung

Kann nicht für sich allein ausgeführt Werden von HTML-Doc eingebettet Im Browser ausgewertet und angezeigt(Lebensraum) Wird mit Tag aufgerufen. Hat keine main() Methode Hat fünf Methode(int(),Start(),Paint(),stop(),Destroy())

Javascript HTML CSS PHP