Algorithmen und Datenstrukturen (für ET/IT)

Ähnliche Dokumente
Dynamische Programmierung. Problemlösungsstrategie der Informatik

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Einführung in Heuristische Suche

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen 1 Kapitel 3

Algorithmen und Datenstrukturen

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Programmieren, Algorithmen und Datenstrukturen II 8. Allgemeine Lösungsverfahren

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

4 Greedy-Algorithmen (gierige Algorithmen)

Graphen: Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen 2

Dynamisches Programmieren - Problemstruktur

Algorithmen und Datenstrukturen 2

Datenstrukturen und Algorithmen SS07

Uninformierte Suche in Java Informierte Suchverfahren

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

7. Übung zu Algorithmen und Datenstrukturen

16. All Pairs Shortest Path (ASPS)

Vorlesung 4 BETWEENNESS CENTRALITY

Datenstrukturen & Algorithmen

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Wissensbasierte Systeme

Algorithmen und Datenstrukturen 2

23.1 Constraint-Netze

Statistische Untersuchungen zu endlichen Funktionsgraphen

Wissensbasierte Systeme 5. Constraint Satisfaction Probleme

Vorlesung 3 MINIMALE SPANNBÄUME

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

11.1 Grundlagen - Denitionen

abgeschlossen unter,,,, R,

Rechnerische Komplexität

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

Kostenmaße. F3 03/04 p.188/395

Customization (Zuschneiden)

Grundlagen der Künstlichen Intelligenz

Einführung in die Informatik

1 topologisches Sortieren

Abschnitt: Algorithmendesign und Laufzeitanalyse

Einführung in die Informatik 1

ADS: Algorithmen und Datenstrukturen 2

Minimale Anzahl von Hinweisen bei Sudoku

2. Lernen von Entscheidungsbäumen

Effiziente Algorithmen I

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Algorithmen & Datenstrukturen 1. Klausur

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

14. Rot-Schwarz-Bäume

13. Binäre Suchbäume

Das Briefträgerproblem

3. Musterlösung. Problem 1: Boruvka MST

Algorithmen und Datenstrukturen (für ET/IT)

Routing Algorithmen. Begriffe, Definitionen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

12. Rekursion Grundlagen der Programmierung 1 (Java)

Kapiteltests zum Leitprogramm Binäre Suchbäume

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

2. Repräsentationen von Graphen in Computern

Algorithmen und Datenstrukturen Laufzeitabschätzung

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

Wiederholung zu Flüssen

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Algorithmik Funke/Bahrdt/Krumpe/Mendel/Seybold SS Übungsblatt 4

TRIER. Das Springerproblem. ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht. Carolin Biwer Natalie Gdanitz

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Algorithmen II Vorlesung am

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Abstrakte Algorithmen und Sprachkonzepte

Dynamische Programmierung

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Informatik II, SS 2014

Theoretische Informatik 1

Anmerkungen zur Übergangsprüfung

8 Diskrete Optimierung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

WS 2009/10. Diskrete Strukturen

Flüsse, Schnitte, bipartite Graphen. Martin Oettinger

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

Theoretische Informatik 1

C++, LEDA und STL Visualisierung minimal/maximal aufspannender Bäume

Algorithmen und Datenstrukturen

Optimierung. Algorithmik III Algorithmen und Modelle für kontinuierliche Datenstrukturen. Vorgehen: Dynamische Programmierung

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Komplexität von Algorithmen

Grundlagen der Programmierung

Ein Dieb raubt einen Laden aus; um möglichst flexibel zu sein, hat er für die Beute nur einen Rucksack dabei

Dynamische Optimierung. Kapitel 4. Dynamische Optimierung. Peter Becker (H-BRS) Operations Research II Wintersemester 2014/ / 206

Transkript:

Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München

Programm heute Einführung Grundlagen von Algorithmen Grundlagen von Datenstrukturen 4 Grundlagen der Korrektheit von Algorithmen 5 Grundlagen der Effizienz von Algorithmen 6 Grundlagen des Algorithmen-Entwurfs Entwurfsprinzipien Divide and Conquer Greedy-Algorithmen Backtracking Dynamisches Programmieren

Algorithmen-Entwurf Entwurfsprinzipien: Verfeinerung Algorithmen-Muster Algorithmen-Muster: Divide and Conquer (letzte Stunde) Greedy-Algorithmen Backtracking Dyanmisches Programmieren 4

Algorithmen-Muster: Greedy greedy = gierig, gefräßig Greedy Prinzip: Lösung eines Problems durch schrittweise Erweiterung der Lösung ausgehend von Startlösung in jedem Schritt wähle den bestmöglichen Schritt (ohne Berücksichtigung zukünftiger Schritte) greedy gefundene Lösung muss nicht immer optimal sein! 5

Algorithmen-Muster: Greedy Greedy-Muster als Pseudocode: Input: Aufgabe A Greedy(A): while (A nicht gelöst) { wähle bestmöglichen Schritt; // Greedy Strategie baue Schritt in Lösung ein; } 6

Greedy: Beispiel Wechselgeld I Problem: Herausgabe von Wechselgeld Voraussetzung: übliche Euro-Münzen e, e, 50c, 0c, 0c, 5c, c und c Aufgabe: Wechselgeld-Herausgabe mit möglichst wenig Münzen Beispiel: Preis e., bezahlt mit e Münze. Wechselgeld: 89c Minimum Anzahl Münzen: 6 89c = 50c +0c +0c +5c +c +c 7

Greedy: Beispiel Wechselgeld II Greedy-Algorithmus: Input: Betrag b Wechselgeld(b): ausgegeben = 0; while (ausgegeben < b) { wähle größte Münze s mit ausgegeben+s b; // greedy print(s); ausgegeben += s; } Achtung: Abhängig vom Geldsystem liefert dieser Algorithmus nicht immer die optimale Lösung! Beispiel: Münzen 5c, 4c, c. Betrag: 8c Greedy-Lösung: 8c = 5c + c + c + c Optimale Lösung: 8c = 4c + 4c 8

Von Greedy lösbare Probleme Voraussetzungen für Anwendbarkeit von Greedy: feste Menge von Eingabewerten Lösungen werden aus Eingabewerten aufgebaut Lösungen lassen sich schrittweise durch Hinzufügen von Eingabewerten aufbauen, beginnend bei leerer Lösung Bewertungsfunktion für partielle und vollständige Lösung Gesucht wird eine/die optimale Lösung 9

Anwendung Greedy: Glasfasernetz Problemstellung: Aufbau von möglichst billigem Glasfasernetz zwischen n Knoten K,...,K n, so daß alle Knoten miteinander verbunden sind (u.u. mit Umweg) Input: Knoten K,...,K n Kosten d ij > 0 für direkte Verbindung zwischen K i und K j für i j, i,j {,...,n} K 6 K K K 4 7 0 4 9 5 K 5 8 Output: Teilmenge aller Verbindungen, so daß alle Knoten verbunden sowie minimale Kosten 0

Glasfasernetz: Beispiel I K 6 K 4 7 0 4 9 K 5 8 K 5 K Knoten K,...,K 5 Kosten d ij repräsentiert als gewichteter, ungerichteter Graph (Kapitel 7)

Glasfasernetz: Beispiel II K 6 K 4 K 7 0 5 8 4 9 K 5 K Startknoten: K beste Verbindung: zu K, Kosten andere Kosten: 7 (zu K ), 0 (zu K 4 ), 5 (zu K 5 )

Glasfasernetz: Beispiel III K 6 K 4 K 7 0 5 8 4 9 K 5 K nächst-beste Verbindung von {K,K }: zu K, Kosten andere Kosten: 8 (zu K 4 ), (zu K 5 ), 7 (zu K )

Glasfasernetz: Beispiel IV K 6 K 4 K 7 0 5 8 4 9 K 5 K nächst-beste Verbindung von {K,K,K }: zu K 5, Kosten andere Kosten: 6 bzw. 8 (zu K 4 ) 4

Glasfasernetz: Beispiel V K 6 K 4 K 7 0 5 8 4 9 K 5 K nächst-beste Verbindung von {K,K,K,K 5 }: zu K 4, Kosten 6 alle Knoten behandelt, Algorithmus fertig 5

Glasfasernetz: Beispiel VI K 7 0 K 5 6 K 8 K 4 4 9 K 5 K 6 K K K 5 K 4 Ergebnis: ein sog. minimaler Spannbaum (minimum spanning tree, MST) vom Graphen 6

Glasfasernetz: Algorithmus Input: Feld von Knoten K (Länge n), Kostenfunktion d(i, j) Output: minimaler Spannbaum B Glasfasernetz(K, d): B = {K }; // Startlösung while (B nicht Spannbaum von {K,...,K n }) { suche billigste Kante, die aus B rausgeht; // Greedy Schritt füge entsprechenden Knoten und Kante zu B hinzu; } Komplexität naiver Implementation: O(n ) geht besser, s. Kapitel 9 7

Programm heute Einführung Grundlagen von Algorithmen Grundlagen von Datenstrukturen 4 Grundlagen der Korrektheit von Algorithmen 5 Grundlagen der Effizienz von Algorithmen 6 Grundlagen des Algorithmen-Entwurfs Entwurfsprinzipien Divide and Conquer Greedy-Algorithmen Backtracking Dynamisches Programmieren 8

Algorithmen-Muster: Backtracking Backtracking: systematische Suchtechnik, um vorgegebenen Lösungsraum vollständig abzuarbeiten Paradebeispiel: Labyrinth. Wie findet Maus den Käse? 9

Backtracking: Labyrinth I Problem: Wie findet Maus den Käse? Lösung: systematisches Abgehen des Labyrinths Zurückgehen falls Sackgasse (daher: Backtracking) trial and error 0

Backtracking: Labyrinth II Mögliche Wege repräsentiert als Baum: (,) (,) (,) (,) (,) (,) (,) (,) (,)

Algorithmen-Muster: Backtracking Voraussetzungen: Lösungs(teil)raum repräsentiert als Konfiguration K K 0 ist Start-Konfiguration jede Konfiguration K i kann direkt erweitert werden für jede Konfiguration ist entscheidbar, ob Lösung Input: Konfiguration K Backtrack(K): if (K ist Lösung) { gib K aus; } else { for each (direkte Erweiterung K von K) { Backtrack(K ); } } initialer Aufruf mittels Backtrack(K 0 )

Backtracking: Konfigurationen (,) (,) (,) (,) (,) (,) (,) (,) (,) Konfiguration z.b. repräsentiert als Pfad im Baum

Backtracking: Eigenschaften Terminierung von Backtracking: nur wenn Lösungsraum endlich nur wenn sichergestellt daß Konfigurationen nicht wiederholt getestet werden Komplexität von Backtracking: direkt abhängig von Größe des Lösungsraums meist exponentiell, also O( n ), oder schlimmer! nur für kleine Probleme wirklich anwendbar Alternative: Begrenzung der Rekursionstiefe dann Auswahl der bis dahin besten Lösung z.b. für Schach-Programme 4

Backtracking Beispiel: Traveling Salesman Traveling Salesman Problem: n Städte finde kürzeste Rundreise, die alle Städte exakt einmal besucht außer Start- und Zielort (identisch) K 6 K 4 K 7 0 5 8 4 9 K 5 K Lösung z.b. mit Algorithmen-Muster Backtracking 5

Traveling Salesman Problem: Algorithmus mit Backtracking Input: n Städte, Rundreise trip TSP(trip): if (trip besucht jede Stadt) { erweitere trip um Reise zum Startort; gebe trip und die Kosten aus; } else { for each (bislang unbesuchte Stadt s) { trip = trip erweitert um s; TSP(trip ); } } 6

Traveling Salesman Problem: Beispiel K 6 K 4 7 0 4 9 K 5 8 K 5 K bei n Städten mit fixiertem Start-/Zielort gibt es (n )! Rundreisen hier: 5 Städte 4! = 4 Rundreisen Laufzeit von TSP hier ist O ( (n )! ) hier: kürzeste Rundreise hat Länge z.b. über Route K K K K 4 K 5 K 7

Backtracking Beispiel: Acht-Damen-Problem Acht-Damen-Problem: suche alle Konfigurationen von 8 Damen auf Schachbrett so daß keine Dame eine andere bedroht Dame auf Schachbrett: A B C D E F G H 8 7 6 5 4 8 7 6 5 4 A B C D E F G H 8

Acht-Damen-Problem Zwei der möglichen Lösungen: A B C D E F G H 4 5 6 7 8 H G F E D C B A 8 7 6 5 4 A B C D E F G H 4 5 6 7 8 H G F E D C B A 8 7 6 5 4 Beobachtung: jeweils nur eine Dame pro Zeile/Spalte Lösung z.b. mit Algorithmen-Muster Backtracking 9

Acht-Damen-Problem: Algorithmus mit Backtracking Input: Zeilenindex i AchtDamen(i): for h = to 8 { // probiere alle Spalten aus if (Feld in Zeile i, Spalte h nicht bedroht) { setze Dame auf Feld (i,h); if (Brett voll) { // i == 8 gib Lösung aus; } AchtDamen(i +); nimm Dame von Feld (i,h) wieder weg; } } 0

Acht-Damen-Problem: Illustration http://www.youtube.com/watch?v=y7pp4fgm6s

Acht-Damen-Problem es gibt 9 Lösungen für das Acht-Damen-Problem das Problem läßt sich auf n Damen auf einem n n Schachbrett ausweiten Anzahl Lösungen wächst stark z.b. für n = gibt es 77 Lösungen ähnliche Spiele, wie z.b. Sudoku, lassen sich entsprechend lösen

Programm heute Einführung Grundlagen von Algorithmen Grundlagen von Datenstrukturen 4 Grundlagen der Korrektheit von Algorithmen 5 Grundlagen der Effizienz von Algorithmen 6 Grundlagen des Algorithmen-Entwurfs Entwurfsprinzipien Divide and Conquer Greedy-Algorithmen Backtracking Dynamisches Programmieren

Dynamisches Programmieren Dynamisches Programmieren einsetzbar für Probleme, deren optimale Lösung sich aus optimalen Lösungen von Teilproblemen zusammensetzt (z.b. Rekursion) Optimalitätsprinzip von Bellman Prinzip: statt Rekursion berechnet man vom kleinsten Teilproblem aufwärts Zwischenergebnisse werden in Tabellen gespeichert 4

Fibonacci Zahlen Fibonacci Folge Die Fibonacci Folge ist eine Folge natürlicher Zahlen f,f,f,..., für die gilt f n = f n +f n für n mit Anfangswerten f =, f =. eingesetzt von Leonardo Fibonacci zur Beschreibung von Wachstum einer Kaninchenpopulation Folge lautet:,,,, 5, 8,,, 4, 55, 89,... berechenbar z.b. via Rekursion 5

Fibonacci Funktion Input: Index n der Fibonacci Folge Output: Wert f n fib(n): if (n == n == ) { return ; } else { return fib(n ) + fib(n ); } Aufrufstruktur für fib(5): fib(5) fib(4) fib() fib() fib() fib() fib() fib() fib() Beobachtung: Komplexität ist O( n ) gleicher Funktionswert wird mehrfach berechnet! z.b. x fib(), x fib(), x fib() dynamisches Programmieren 6

Fibonacci Funktion: dynamisch programmiert Prinzip dynamisches Programmieren: vom kleinsten Teilproblem aufwärts Zwischenergebnisse in Tabelle Input: Index n der Fibonacci Folge Output: Wert f n FibDyn(n): fib = leeres Feld Größe n+; // Tabelle fib[] = ; // kleinstes Teilproblem fib[] = ; // kleinstes Teilproblem for k = to n { fib[k] = fib[k-] + fib[k-]; // Rekursion aufwärts } return fib[n]; Komplexität dynamisch programmiert: O(n) 7

Zusammenfassung Einführung Grundlagen von Algorithmen Grundlagen von Datenstrukturen 4 Grundlagen der Korrektheit von Algorithmen 5 Grundlagen der Effizienz von Algorithmen 6 Grundlagen des Algorithmen-Entwurfs Entwurfsprinzipien Divide and Conquer Greedy-Algorithmen Backtracking Dynamisches Programmieren 8