LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Einführung in Berechenbarkeit und Formale Sprachen
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
Zusatzfolien zu B-Bäumen
WIRTSCHAFTSLAGE NOCH SCHWIERIG
In der Schule.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Eine Einführung in die CD-ROM
GBI Genios Wiso wiso bietet Ihnen das umfassendste Angebot deutsch- und englischsprachiger Literatur für die Wirtschafts- und Sozialwissenschaften. Wir.
Dokumentation der Umfrage
für Weihnachten oder als Tischdekoration für das ganze Jahr
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Das entscheidende Kriterium ist Schönheit; für häßliche Mathematik ist auf dieser Welt kein beständiger Platz. Hardy.
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
1 Mathematical Programming Nichtlineare Programmierung.
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Christian Scheideler WS 2008
 Präsentation transkript:

LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)

LS 2 / Informatik 2 Organisatorisches Vorlesung DAP2 Dienstag c.t. Donnerstag c.t. Zu meiner Person Christian Sohler Fachgebiet: Komplexitätstheorie und effiziente Algorithmen Lehrstuhl 2, Informatik

LS 2 / Informatik 3 Übungen Montag: 14-16, Dienstag: 10-12, 14-16, Mittwoch: 12-14, 14-16, Donnerstag: 12-14, Zum Teil mehrere parallele Gruppen Anmeldung über AsSESS Beginn der Anmeldung: Dienstag im Laufe des Tages Anmeldeschluss: Donnerstag, 18 Uhr Änderungen der Übungsgruppe: Bis Montag 10 Uhr Organisatorisches

LS 2 / Informatik 4 Übungen Präsenzübungen/ Heimübungen abwechselnd Abgabe Heimübung: Freitag 10 Uhr Briefkästen im Pav.6 Zulassung zur Klausur (Studienleistung Übung; Teil 1): - Teilnahme an den Übungen - 50% der Übungspunkte Max. 3 Personen pro Übungsblatt Organisatorisches

LS 2 / Informatik 5 Organisatorisches Übungen Praktikum Für Studierende des Bachelorstudiengangs verpflichtend Bachelor Elektrotechnik/Informationstechnik und Informations- und Kommunikationstechnik hat eigenes Praktikum Termine: Mittwoch 12-14, 14-16, Donnerstag 8-10, 10-12, Freitag 8-10, Anmeldung über AsSESS (ab Dienstag; Anmeldeschluss Do. 18 Uhr; Änderungen bis Montag 10 Uhr)

LS 2 / Informatik 6 Organisatorisches Übungen Praktikum Heimübungen, Präsenzübungen Zulassung zur Klausur (Studienleistung Praktikum): 8 von insgesamt 14 Punkten bei den 7 Präsenzaufgaben 7 von insgesamt 12 Punkten bei den 6 Heimaufgaben Anwesenheit bei den Übungen Sonstiges Schüler -> Tobias Marschall Poolräume können außerhalb der Veranstaltungszeiten immer genutzt werden Weitere Informationen auf der Webseite

LS 2 / Informatik 7 Organisatorisches Tests 1. Test: 18. Mai 2. Test: mal schauen Einer der beiden Test muss mit 50% der Punkte bestanden werden (Studienleistung Übung; Teil 2)

LS 2 / Informatik 8 Organisatorisches Bei Fragen Meine Sprechzeiten: Mo Uhr oder nach der Vorlesung Organisatorische Fragen an Vorlesung: Melanie Schmidt Christiane Lammersen Praktikum: Tobias Marshall Außerdem INPUD Forum

LS 2 / Informatik 9 Organisatorisches Klausurtermine Uhr Uhr Weitere Infos Vorlesungsseite Oder von der Startseite des LS 2 -> Teaching -> DAP2

LS 2 / Informatik 10 Einige Hinweise/Regeln Klausur Eine Korrelation mit den Übungsaufgaben ist zu erwarten Laptops Sind in der Vorlesung nicht zugelassen

LS 2 / Informatik 11 Literatur Skripte Kein Vorlesungsskript Skripte der vergangenen Jahre Bücher Cormen, Leisserson, Rivest: Introduction to Algorithms, MIT Press Kleinberg, Tardos: Algorithm Design, Addison Wesley WWW Kurs Introduction to Algorithms am MIT. Online Material (Folien, Video und Audio Files!) Science/6-046JFall-2005/CourseHome/

LS 2 / Informatik 12 Was ist ein Algorithmus? Informale Definition Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Lösung von Instanzen eines Problems in endlich vielen Schritten. Bemerkung Es gibt viele Beschreibungen desselben Algorithmus Algorithmus ist unabhängig von der Programmiersprache!!! Die Definition wird im nächsten Semester formalisiert

LS 2 / Informatik 13 Was ist ein Algorithmus? Beispiel Problem: Maximumsuche Instanz: Menge A={a,…,a } von n Zahlen (als Feld A gegeben) Ausgabe: Index i der größten Zahl in A Algorithmus-Max-Search(Array A) 1. max 1 2. for j 2 to length(A) do 3. if A[j] > A[max] then max j 4. return max 1 n

LS 2 / Informatik 14 Was ist eine Datenstruktur? Informale Definition Eine Datenstruktur ist eine Anordnung von Daten, die die Ausführung von Operationen (z.B. Suchen, Einfügen, Löschen) unterstützt. Einfache Beispiele Feld sortiertes Feld Liste

LS 2 / Informatik 15 Lernziele Bewertung von Algorithmen und Datenstrukturen - Laufzeitanalyse - Speicherbedarf - Korrektheitsbeweise Kenntnis grundlegender Algorithmen und Datenstrukturen - Sortieren - Wörterbücher - Graphalgorithmen Kenntnis grundlegender Entwurfsmethoden - Teile und Herrsche - gierige Algorithmen - dynamische Programmierung

LS 2 / Informatik 16 Motivation Beispiele für algorithmische Probleme Internetsuchmaschinen Berechnung von Bahnverbindungen Optimierung von Unternehmensabläufen Datenkompression Computer Spiele Datenanalyse Alle diese Bereiche sind (immer noch) Stoff aktueller Forschung im Bereich Datenstrukturen und Algorithmen

LS 2 / Informatik 17 Motivation Problembeschreibung Ein m x n- Gitter heißt c-färbbar, wenn man seine Knoten mit c Farben so färben kann, dass kein am Gitter orientiertes achsenparalleles Rechteck alle Eckknoten in derselben Farbe hat Aufgabe: Finde eine 4-Färbung für ein 17x17 Gitter (289$ Problem) Beispiel: (4x4 Gitter) this-is-not.html

LS 2 / Informatik 18 Motivation Problembeschreibung Ein m x n- Gitter heißt c-färbbar, wenn man seine Knoten mit c Farben so färben kann, dass kein am Gitter orientiertes achsenparalleles Rechteck alle Eckknoten in derselben Farbe hat Aufgabe: Finde eine 4-Färbung für ein 17x17 Gitter (289$ Problem) Beispiel: (4x4 Gitter) Die vier unterlegten Knoten dürfen z.B. nicht alle dieselbe Farbe haben this-is-not.html

LS 2 / Informatik 19 Motivation Problembeschreibung Ein m x n- Gitter heißt c-färbbar, wenn man seine Knoten mit c Farben so färben kann, dass kein am Gitter orientiertes achsenparalleles Rechteck alle Eckknoten in derselben Farbe hat Aufgabe: Finde eine 4-Färbung für ein 17x17 Gitter (289$ Problem) Beispiel: (4x4 Gitter) this-is-not.html 4x4 Gitter ist 4-färbbar! Geht es besser?

LS 2 / Informatik 20 Motivation Problembeschreibung Ein m x n- Gitter heißt c-färbbar, wenn man seine Knoten mit c Farben so färben kann, dass kein am Gitter orientiertes achsenparalleles Rechteck alle Eckknoten in derselben Farbe hat Aufgabe: Finde eine 4-Färbung für ein 17x17 Gitter (289$ Problem) Beispiel: (4x4 Gitter) this-is-not.html Ja! 4x4 Gitter ist 2- färbbar!

LS 2 / Informatik 21 Motivation 17x17 Problem Es ist z.Z. nicht möglich, das 17x17 Problem mit einem Rechner zu lösen Warum ist dieses Problem so schwer zu lösen? Es gibt sehr viele Färbungen! Fragen/Aufgaben Können wir die Laufzeit eines Algorithmus vorhersagen? Können wir bessere Algorithmen finden?

LS 2 / Informatik 22 Algorithmenentwurf Anforderungen Korrektheit Effizienz (Laufzeit, Speicherplatz) Entwurf umfasst 1.Beschreibung des Algorithmus/der Datenstruktur 2.Korrektheitsbeweis 3.Analyse von Laufzeit und Speicherplatz

LS 2 / Informatik 23 Algorithmenentwurf Warum mathematische Korrektheitsbeweise? Fehler können fatale Auswirkungen haben (Steuerungssoftware in Flugzeugen, Autos, AKWs) Fehler können selten auftreten (Austesten funktioniert nicht) Der teuerste algorithmische Fehler? Pentium bug (> $400 Mio.) Enormer Image Schaden Trat relativ selten auf

LS 2 / Informatik 24 Algorithmenentwurf Warum Laufzeit/Speicherplatz optimieren? Riesige Datenmengen durch Vernetzung (Internet) Datenmengen wachsen schneller als Rechenleistung und Speicher Physikalische Grenzen Schlechte Algorithmen versagen häufig bereits bei kleinen und mittleren Eingabegrößen

LS 2 / Informatik Teil der Vorlesung – Grundlagen der Algorithmenanalyse Inhalt Wie beschreibt man einen Algorithmus? Wie beweist man die Korrektheit eines Algorithmus? Rechenmodell Laufzeitanalyse

LS 2 / Informatik 26 Pseudocode Beschreibungssprache ähnlich wie C, Java, Pascal, etc… Hauptunterschied: Wir benutzen immer die klarste und präziseste Beschreibung Manchmal kann auch ein vollständiger Satz die beste Beschreibung sein Wir ignorieren Software Engineering Aspekte wie - Modularität - Fehlerbehandlung

LS 2 / Informatik 27 Sortieren Problem: Sortieren Eingabe: Folge von n Zahlen (a,…,a ) Ausgabe: Permutation (a,…,a ) von (a,…, a ), so dass a a … a Beispiel: Eingabe: 15, 7, 3, 18, 8, 4 Ausgabe: 3, 4, 7, 8, 15, n n 1n 1 n 2

LS 2 / Informatik 28 Insertion Sort InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 29 Insertion Sort InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Schleifen (for, while, repeat) Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 30 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Schleifen (for, while, repeat) Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 31 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Zuweisungen durch Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 32 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Variablen (z.B. i, j, key) sind lokal definiert Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 33 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Keine Typdeklaration, wenn Typ klar aus dem Kontext Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 34 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Zugriff auf Feldelemente mit [.] Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 35 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Verbunddaten sind typischerweise als Objekte organisiert Ein Objekt besteht aus Attributen oder Ausprägungen Beispiel: Feld wird als Objekt mit Attribut Länge betrachtet Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 36 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Beispiel: Objekt ist Graph G mit Knotenmenge V Auf die Ausprägung V von Graph G wird mit V[G] zugegriffen Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 37 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Objekte werden als Zeiger referenziert, d.h. für alle Ausprägungen f eines Objektes x bewirkt y x das gilt: f[y] = f[x]. Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 38 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Blockstruktur durch Einrücken Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 39 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Bedingte Verzweigungen (if then else) Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 40 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Prozeduren call-by-value ; jede aufgerufene Prozedur erhält neue Kopie der übergebenen Variable Die lokalen Änderungen sind nicht global sichtbar Bei Objekten wird nur der Zeiger kopiert (lokale Änderungen am Objekt global sichtbar) Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 41 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Rückgabe von Parametern durch return Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 42 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Pseudocode Kommentare durch Insertion Sort Beschreibung des Algorithmus in Pseudocode (kein C, Java, etc.)

LS 2 / Informatik 43 InsertionSort(Array A) 1.for j 2 to length[A] do 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Beispiel Insertion Sort

LS 2 / Informatik 44 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j

LS 2 / Informatik 45 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key

LS 2 / Informatik 46 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key

LS 2 / Informatik 47 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key

LS 2 / Informatik 48 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key

LS 2 / Informatik 49 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j

LS 2 / Informatik 50 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key

LS 2 / Informatik 51 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j i key=3

LS 2 / Informatik 52 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key=3 i

LS 2 / Informatik 53 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key=3 i

LS 2 / Informatik 54 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key=3

LS 2 / Informatik 55 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key=3

LS 2 / Informatik 56 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort i n j key=3

LS 2 / Informatik 57 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key=3 i

LS 2 / Informatik 58 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n ji key=3

LS 2 / Informatik 59 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j key=3 i

LS 2 / Informatik 60 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j Sortiert

LS 2 / Informatik 61 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j Sortiert key

LS 2 / Informatik 62 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 4. while i>0 and A[i]>key do 5. A[i+1] A[i] 6. i i-1 7. A[i+1] key Insertion Sort n j Sortiert key=14

LS 2 / Informatik 63 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Insertion Sort n j Sortiert key=14 j-1

LS 2 / Informatik 64 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Insertion Sort n j Sortiert key=14 j-1

LS 2 / Informatik 65 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Insertion Sort n j key=14 j-1i

LS 2 / Informatik 66 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Insertion Sort n j key=14 i+1i

LS 2 / Informatik 67 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=14 i+1i

LS 2 / Informatik 68 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j Sortiert

LS 2 / Informatik 69 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j Sortiert key=7

LS 2 / Informatik 70 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j Sortiert key=7

LS 2 / Informatik 71 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=7

LS 2 / Informatik 72 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=7

LS 2 / Informatik 73 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=7

LS 2 / Informatik 74 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j Sortiert

LS 2 / Informatik 75 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=6 Sortiert

LS 2 / Informatik 76 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=6 Sortiert

LS 2 / Informatik 77 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=6

LS 2 / Informatik 78 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=6

LS 2 / Informatik 79 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j key=6

LS 2 / Informatik 80 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j Sortiert

LS 2 / Informatik 81 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n j

LS 2 / Informatik 82 InsertionSort(Array A) Eingabegröße n 1.for j 2 to length[A] do length[A] = n 2. key A[j] 3. i j-1 verschiebe alle Elemente aus 4. while i>0 and A[i]>key do A[1…j-1], die größer als key 5. A[i+1] A[i] sind eine Stelle nach rechts 6. i i-1 7. A[i+1] key Speichere key in Lücke Insertion Sort n Sortiert

LS 2 / Informatik 83 InsertionSort Wir haben beobachtet, dass Algorithmus InsertionSort korrekt sortiert Wie können wir zeigen, dass dies für jede Eingabe stimmt? -> Korrektheitsbeweise

LS 2 / Informatik 84 Zusammenfassung Es gibt schwierige algorithmische Probleme, die bzgl. Laufzeit und Speicherbedarf optimierte Algorithmen benötigen Korrektheitsanalyse von Algorithmen ist notwendig Wir beschreiben Algorithmen in Pseudocode