INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

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

16. All Pairs Shortest Path (ASPS)

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

2 Lösungen "Peptide de novo Sequencing"

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

Algorithmen II Vorlesung am

Anwendungen der Wirtschaftsmathematik und deren Einsatz im Schulunterricht

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

1. Woche Einführung in die Codierungstheorie, Definition Codes, Präfixcode, kompakte Codes

Lineare Programmierung

Theoretische Grundlagen der Informatik WS 09/10

3. Grundlagen der Linearen Programmierung

Vorlesung 3 MINIMALE SPANNBÄUME

Scheduling und Lineare ProgrammierungNach J. K. Lenstra, D. B. Shmoys und É.

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

KANALCODIERUNG AUFGABEN. Aufgabe 1. Aufgabe 2

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

Schranken für zulässige Lösungen

1 Lineare Gleichungssysteme

Algorithmen und Datenstrukturen 2

Elemente der Analysis II

IV. Spieltheorie. H. Weber, FHW, OR SS07, Teil 7, Seite 1

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

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

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

Ausgewählte Methoden der ganzzahligen Linearen Optimierung

Ein (7,4)-Code-Beispiel

Datenstrukturen & Algorithmen

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Das Dilemma des Einbrechers Wer die Wahl hat, hat die Qual!

Vorlesung Einführung in die Mathematische Optimierung (Wintersemester 2013/14)

Lineare Programmierung. Beispiel: Wahlkampf. Beispiel: Wahlkampf. Mathematische Schreibweise. Lineares Programm. Datenstrukturen & Algorithmen

Lineare Gleichungssysteme

Vorlesungsplan. Von Naïve Bayes zu Bayesischen Netzwerk- Klassifikatoren. Naïve Bayes. Bayesische Netzwerke

Einführung in die Kodierungstheorie

Optimierung und Simulation ökonomischer Problemlagen privater Haushalte 2. Vorlesung

Bestimmung einer ersten

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

Tag 9: Datenstrukturen

Suchen und Sortieren Sortieren. Heaps

OPERATIONS-RESEARCH (OR)

Randomisierte Algorithmen

Algorithmen & Datenstrukturen 1. Klausur

Kurs 1613 Einführung in die imperative Programmierung

Binäre lineare Optimierung mit K*BMDs p.1/42

Spieltheorien und Theoreme

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

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

8 Diskrete Optimierung

3. Übung Algorithmen I

Kurs 1575, Musterlösung zur Winter Klausur 2003/04

Datenbanksysteme SS 2007

Laufzeit und Komplexität

Kombinatorische Optimierung

Maximizing the Spread of Influence through a Social Network

Einführung in die Vektor- und Matrizenrechnung. Matrizen

Alles zu seiner Zeit Projektplanung heute

Lineare Algebra (Mathe I) für Wirtschaftsinformatiker; Zusammenfassung

Abschnitt: Algorithmendesign und Laufzeitanalyse

Das Briefträgerproblem

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

MAXIMUM2.STR Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.

Algorithmische Methoden zur Netzwerkanalyse

ARBEITSUNTERLAGEN ZUR VORLESUNG UND ÜBUNG AN DER UNIVERSITÄT DES SAARLANDES LINEARE OPTIMIERUNG

13. Binäre Suchbäume

Methoden des Algorithmenentwurfs Kapitel 2.2: Randomisierte Online Algorithmen

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Ein Scan basierter Seitenangriff auf DES

Kompakte Graphmodelle handgezeichneter Bilder. Einbeziehung in Autentizierung und Bilderkennung

Programmiertechnik II

Reproduzierbarkeit der Bachelor-Thesis

Multimedia im Netz Wintersemester 2011/12

Algorithmische Anwendungen

Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung für den Bereich Diplom/Master Informatik

Übungen Programmieren 1 Felix Rohrer. Übungen

Klausur zur Vorlesung Mathematische Grundlagen für Wirtschaftswissenschaftler

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken. Raimar Lill Matthias Meitner David Föhrweiser Marc Spisländer

Die Verbindung von Linearer Programmierung und Graphentheorie

Algorithmische Methoden zur Netzwerkanalyse

Lineare Gleichungssysteme und Gauß'scher Algorithmus

Teil II. Nichtlineare Optimierung

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Bioinformatik I (Einführung)

Diplomprüfung. Operations Research I WS 2007/2008 (4 Punkte)

Approximation in Batch and Multiprocessor Scheduling

Fully dynamic algorithms for the single source shortest path problem.

Vorlesung bzw. 23. Januar Determinanten 1. Cramersche Regel

Theoretische Grundlagen der Informatik

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

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

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

Aufgabenblatt 6 zur Lehrveranstaltung Quantitative Methoden der Betriebswirtschaftslehre I Frühjahrssemester 2015

4 Greedy-Algorithmen (gierige Algorithmen)

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Konzepte der Informatik

Kapitel 6: Graphalgorithmen Gliederung

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

x 2 x 1 x Lernen mit Entscheidungsbäumen

Eine molekulare Lösung des Hamiltonkreisproblems mit DNA

Single Parity check Codes (1)

Transkript:

Julian Arz, Timo Bingmann, Sebastian Schlag INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS KIT Julian Universität Arz, des Timo LandesBingmann, Baden-Württemberg Sebastian und Schlag nationales 2. Übung Forschungszentrum Algorithmen in der Helmholtz-Gemeinschaft I Institut für Theoretische www.kit.edu Informatik

Inhalt Organisatorisches Klausur Dynamische Programmierung Faltungscodes und der Viterbi-Algorithmus Lineare Programmierung 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Organisatorisches Klausur am 28.7.24! Anmeldung bis einschließlich 22.7.24 Erlaubte Hilfsmittel für die Klausur: blauer oder schwarzer Stift ein handbeschriebenes DIN-A4 Blatt (beidseitig) maschinenerzeugte Blätter werden eingesammelt! für die Identifikation: Studentenausweis 3 Julian Arz, Timo Bingmann, Sebastian Schlag

Organisatorisches Bonuspunkte für die Klausur Insgesamt: 296 normale Übungspunkte erreichbar (Die 2 Zusatzpunkte sind nicht in % enthalten) x Übungspunkten werden linear skaliert auf [0, 3] Bonuspunkte (bis zu 5%) in der Klausur: x < 74 Punkte 0 Bonuspunkte, 74 x < 48 Punkte Bonuspunkt, 48 x < 222 Punkte 2 Bonuspunkte, 222 x Punkte 3 Bonuspunkte. 4 Julian Arz, Timo Bingmann, Sebastian Schlag

Dynamische Programmierung Greedy funktioniert nie (in Klausuren) Bei realen Problem ist Greedy aber oft gut genug. 5 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Subarray Problem Problem: Gegeben ein Array von Zahlen (positiv, negativ), finde das (zusammenhängende) Teilarray mit der größten Summe. 2,, 3, 4,, 2,, 5, 4 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Subarray Problem Problem: Gegeben ein Array von Zahlen (positiv, negativ), finde das (zusammenhängende) Teilarray mit der größten Summe. 2,, 3, 4,, 2,, 5, 4 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Subarray Problem Problem: Gegeben ein Array von Zahlen (positiv, negativ), finde das (zusammenhängende) Teilarray mit der größten Summe. Trivialer Algorithmus in O ( n 2) 2,, 3, 4,, 2,, 5, 4 berechne die Summe aller Teilarrays (zwei For-Schleifen) Besser: dynamische Programmierung verwenden O(n) 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Subarray Problem Problem: Gegeben ein Array von Zahlen (positiv, negativ), finde das (zusammenhängende) Teilarray mit der größten Summe. Algorithmus: scanne einmal über das Array: 2,, 3, 4,, 2,, 5, 4 Function largest_cont_subseq(a Array of N) : Z overall_max=a[0] : N; cur_max=a[0] : N; for i := to size(a) do cur_max = max(a[i], cur_max + A[i]); overall_max = max(overall_max, cur_max); return overall_max 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Subarray Problem Problem: Gegeben ein Array von Zahlen (positiv, negativ), finde das (zusammenhängende) Teilarray mit der größten Summe. Function largest_cont_subseq(a Array of N) : Z overall_max=a[0] : N; cur_max=a[0] : N; for i := to size(a) do cur_max = max(a[i], cur_max + A[i]); overall_max = max(overall_max, cur_max); return overall_max original: -2,, -3, 4, -, 2,, -5, 4 cur_max: -2,, -2, 4, 3, 5, 6,, 5 7 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem Problem: Gegeben eine n n Matrix M über Z, finde die Teilmatrix, die die größte Summe hat. Summe=Max! Brute-Force: alle Teilmatrizen ausrechnen ( pro Teilmatrix O n 2) Zeit ( 2 O n 4) Teilmatrizen 3 insgesamt O (n 6) 8 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem Problem: Gegeben eine n n Matrix M über Z, finde die Teilmatrix, die die größte Summe hat. Summe=Max! Summe S_i,j Besser: Dinge vorberechnen errechne Matrix S: S i,j = Elemente links-oberhalb von M i,j einschließlich der Zeile i und Spalte j 9 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem Problem: Gegeben eine n n Matrix M über Z, finde die Teilmatrix, die die größte Summe hat. A B Summe=Max! C D E Besser: Dinge vorberechnen errechne Matrix S: S i,j = Elemente links-oberhalb von M i,j einschließlich der Zeile i und Spalte j 2 pro Teilmatrix O() Zeit, insgesamt O (n 4) 9 Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem Summe=Max! Noch besser: Dinge vorberechen + Dynamische Programmierung Prefixsummen der Spalten von M in Matrix S speichern S i,j = il= M l,j Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem i K Summe=Max! j A Summe Noch besser: Dinge vorberechen + Dynamische Programmierung Prefixsummen der Spalten von M in Matrix S speichern S i,j = il= M l,j 2 probiere alle Zeilenpaare i < j pro Zeilenpaar berechene Array A[,..., n] 2 A[K ] = j l=i M l,k = S j,k S i,k Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem i K Summe=Max! j A Summe Noch besser: Dinge vorberechen + Dynamische Programmierung Prefixsummen der Spalten von M in Matrix S speichern S i,j = il= M l,j 2 probiere alle Zeilenpaare i < j pro Zeilenpaar berechene Array A[,..., n] 2 A[K ] = j l=i M l,k = S j,k S i,k 3 auf A Maximum Subarray Problem lösen Julian Arz, Timo Bingmann, Sebastian Schlag

Maximum Submatrix Problem i K Summe=Max! j A Summe Noch besser: Dinge vorberechen + Dynamische Programmierung Prefixsummen der Spalten von M in Matrix S speichern O ( n 2) Zeit 2 probiere alle Zeilenpaare i < j O ( n 2) viele Zeilenpaare 2 pro Zeilenpaar O(n) 3 insgesamt O (n 3) Julian Arz, Timo Bingmann, Sebastian Schlag

Faltungscodes und der Viterbi-Algorithmus 802. WLAN Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister I s 2 Output A Output B I s Input I s s 2 s I s 2 Output C 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 = Output A = Output B 0 Input 0 0 0 0 = Output C Input: Output: 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 0 0 = Output A 0 = Output B 0 Input 0 0 0 0 = Output C Input: Output: 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister = Output A 0 = Output B 0 Input 0 0 0 = Output C Input: Output: 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 = Output A = Output B Input 0 0 0 = Output C Input: Output: 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 0 = Output A = Output B 0 Input 0 0 0 = Output C Input: 0 Output: 0 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 0 = Output A = Output B 0 0 Input 0 0 0 0 = Output C Input: Output: 0 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 0 = Output A 0 = Output B 0 Input 0 0 0 0 Input: Output: 0 0 = Output C Redundanz in Übertragung ermöglicht Fehlerkorrektur! 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Schieberegister 0 0 = Output A 0 = Output B 0 Input 0 0 0 0 Das 802.a Schieberegister Input: Output: 0 0 = Output C Output A Redundanz Input s in Übertragung s 2 s ermöglicht 3 s 4 s Fehlerkorrektur! 5 s 6 2 Julian Arz, Timo Bingmann, Sebastian Schlag Output InstitutBfür Theoretische Informatik

Ein Faltungscode als Mealy-Automat 0/0 0/ / / 0/ 0/0 / / Legende: Kantenbeschriftung ist Input/Output. 3 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Trellis t 0 0 t 0 t 2 0 t 3 0 t 4 0 t 5 0 t 6 0 0 0 Input: Output: 0 4 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Trellis t 0 0 t 0 t 2 0 t 3 0 t 4 0 t 5 0 t 6 0 0 0 Input: Output: 0 4 Julian Arz, Timo Bingmann, Sebastian Schlag

Ein Faltungscode als Trellis t 0 0 t 0 t 2 0 t 3 0 t 4 0 t 5 0 t 6 0 0 0 Input: Output: 0 Aber, wie dekodiert man 0? 4 Julian Arz, Timo Bingmann, Sebastian Schlag

Faltungscode: Fehlerkorrektur? Dekodiere: 0? Ziel: Finde die Eingabe, deren Kodierung die geringste Hamming-Distanz (Einzelbit-Fehler) zum gelesenen Codewort hat. 5 Julian Arz, Timo Bingmann, Sebastian Schlag

Faltungscode: Fehlerkorrektur? Dekodiere: 0? Ziel: Finde die Eingabe, deren Kodierung die geringste Hamming-Distanz (Einzelbit-Fehler) zum gelesenen Codewort hat. Erster Algorithmus: Enumeriere alle gültige Codewörter, berechne Hamming-Distanz und finde so die wahrscheinlichste Eingabe (maximum likelyhood detection). 5 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere: 0 Eingabe = Codewort Distanz = 0 0 0 0 0 0 = 0 0 0 = 0 0 0 8 = 0 0 0 8 = 0 0 0 = 0 = 0 0 0 8 = 0 0 2 = 0 0 0 = = 0 8 = 0 8 = 0 0 0 = 0 = 0 0 4 = 0 8 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere: 0 Eingabe = Codewort Distanz = 0 0 0 0 0 0 = 0 0 0 = 0 0 0 8 = 0 0 0 8 = 0 0 0 = 0 = 0 0 0 8 = 0 0 2 = 0 0 0 = = 0 8 = 0 8 = 0 0 0 = 0 = 0 0 4 = 0 8 6 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere im Trellis Dekodiere: 0? t 0 0 t 0 t 2 0 t 3 0 t 4 0 t 5 0 t 6 0 0 0 2 7 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere im Trellis Dekodiere: 0? t 0 2 t t 2 2 2 t 3 t 4 3 t 5 t 6 2 2 2 2 2 2 3 0 2 2 0 3 8 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere im Trellis Dekodiere: 0? t 0 t 2 0 2 t 2 3 2 2 t 3 5 t 4 6 3 t 5 3 t 6 4 2 2 3 5 2 2 2 2 2 7 3 0 2 4 2 4 7 0 3 2 2 Verwende kürzeste Wege in einem DAG: 5 8 Julian Arz, Timo Bingmann, Sebastian Schlag

Dekodiere im Trellis Dekodiere: 0? t 0 t 2 0 2 t 2 3 2 2 t 3 5 t 4 6 3 t 5 3 t 6 4 2 2 3 5 2 2 2 2 2 7 3 0 2 4 2 4 7 0 3 2 2 5 Verwende kürzeste Wege in einem DAG: dieser entspricht. 8 Julian Arz, Timo Bingmann, Sebastian Schlag

Der Viterbi-Algorithmus (Pseudocode) t k w[k ][] w[k ][] w[k ][] w[k ][] w[k][z] = t k w[k][] w[k][] w[k][] w[k][] min v Vorgänger(z) Procedure Viterbi(A : Folge, G : Schichtengraph) w[0][z] := 0, pre[0][z] := nil z Zustände(G) foreach k =,..., #Schichten(G) foreach z Zustände(G) Wähle unter allen v Vorgängern(z) denjenigen mit besten Kosten unter w[k ][v], Kante(v, z) und A[k] aus. Setze w[k][z] und pre[k][z]. wobei im Beispiel Zustände(G) = {,,, }, Vorgänger(z) die Vorgängerzustände von z sind und w[k ][v] + Hamming(A[k], Kante(v, z)) 9 Julian Arz, Timo Bingmann, Sebastian Schlag

Der Viterbi-Algorithmus Schichten-Graph erlaubt effiziente Implementierung des kürzesten Pfad Algorithmus mit nur einer Variable pro Ebenen im Trellis oder Knoten im Automaten. Der Viterbi-Algorithmus funktioniert auch in allgemeineren Fällen: Wahrscheinlichkeiten statt Distanzen (Logarithmierungstrick) Beste Pfade in Hidden Markov Models (siehe Automaten). 20 Julian Arz, Timo Bingmann, Sebastian Schlag

Der Viterbi-Algorithmus Schichten-Graph erlaubt effiziente Implementierung des kürzesten Pfad Algorithmus mit nur einer Variable pro Ebenen im Trellis oder Knoten im Automaten. Der Viterbi-Algorithmus funktioniert auch in allgemeineren Fällen: Wahrscheinlichkeiten statt Distanzen (Logarithmierungstrick) Beste Pfade in Hidden Markov Models (siehe Automaten). Weitere wichtige Optimierung: Da der Faltungscode im Beispiel nur vier Zustände hat und jeder Knoten genau zwei Ausgangskanten hat, gibt von jedem Knoten in Schicht k zu jedem Knoten in Schicht k + 3 mehr als ein Pfad. Bei der Berechnung von Schicht k + 3 steht der kürzeste Teilpfad von Schicht 0 bis k bereits fest. Die entsprechenden Bits können schon ausgegeben werden. 20 Julian Arz, Timo Bingmann, Sebastian Schlag

Lineare Programmierung 2 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion unter folgenden Kriterien optimieren: Der erzielte Produktionswert der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion x A und x B unter folgenden Kriterien optimieren: Der erzielte Produktionswert der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion x A und x B unter folgenden Kriterien optimieren: Der erzielte Produktionswert f (x) der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion x A und x B unter folgenden Kriterien optimieren: Der erzielte Produktionswert f (x) der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. f (x) = 50 x A + 70 x B für x = (x A, x B ) t R 2. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion x A und x B unter folgenden Kriterien optimieren: Der erzielte Produktionswert f (x) der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. f (x) = 50 x A + 70 x B für x = (x A, x B ) t R 2. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. x A kg und x B 70 kg. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Eine Süßwarenfabrik produziert zwei Süßigkeiten A und B. Der Unternehmer möchte die Tagesproduktion x A und x B unter folgenden Kriterien optimieren: Der erzielte Produktionswert f (x) der Fabrik soll maximiert werden: ein Stück A ist 50 Wert und ein B sogar 70. f (x) = 50 x A + 70 x B für x = (x A, x B ) t R 2. Die Maschinen der Fabrik produzieren höchstens kg von A und 70 kg von B an einem Tag. x A kg und x B 70 kg. Es können höchstens kg Zucker und 5 kg Schokolade pro Tag angeliefert werden. Süßigkeit A besteht zu 80% aus Zucker und 6% Schokolade. Süßigkeit B besteht zu 70% aus Zucker und 20% Schokolade. 0,8 x A + 0,7 x B kg und 0,06 x A + 0,2 x B 5 kg. Wie viele kg von A und B sollen pro Tag produziert werden? 22 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik abstrakt Maximiere die Zielfunktion f (x) für x = (x A, x B ) t R 2 : unter folgenden Bedingungen: x A kg x B 70 kg 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg x A 0 und x B 0 f (x) = 50 x A + 70 x B 23 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Matrixform maximiere unter 50 x A + 70 x B x A kg x B 70 kg 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg x 0 24 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Matrixform maximiere unter 50 x A + 70 x B x A kg x B 70 kg 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg x 0 oder: ( ) t 0 kg 50 max x 70 x R 2, x 0, 0 0,8 0,7 x 70 kg kg 0,06 0,2 5 kg 24 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik Matrixform maximiere unter 50 x A + 70 x B x A kg x B 70 kg 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg x 0 oder: ( ) t 0 kg 50 max x 70 x R 2, x 0, 0 0,8 0,7 x 70 kg kg 0,06 0,2 5 kg (Eine) allgemeine Matrixform: max{c t x x R n, x 0, Ax b} mit A R m n, b R m, c R n. 24 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 60 x B 70 kg 40 x A kg 20 20 40 60 80 x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 60 x B 70 kg 40 x A kg 20 20 40 60 80 x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 x A kg 20 20 40 60 80 x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 x A kg 20 zulässige Lösungen 20 40 60 80 x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg x opt = (80.5, 50.85) 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Süßwarenfabrik graphisch 80 x B 0,8 x A + 0,7 x B kg 0,06 x A + 0,2 x B 5 kg 60 x B 70 kg x opt = (80.5, 50.85) 40 20 c = ( ) 50 70 zulässige Lösungen 20 40 60 80 Bester Wert: c t x opt = 7585 x A kg x A 25 Julian Arz, Timo Bingmann, Sebastian Schlag

Matrixformen linearer Programme Eine Matrixform: max{c t x x R n, x 0, Ax b}. Andere Formen: max{c t x x R n, Ax b} 2 max{c t x x R n, x 0, Ax = b} 3 max{c t x x R n, Ax b} 4 min{c t x x R n, Ax b} 5 min{c t x x R n, x 0, Ax = b} 6 min{c t x x R n, x 0, Ax b} Jede Form ist in jede andere Form transformierbar! 26 Julian Arz, Timo Bingmann, Sebastian Schlag

Lösen von linearen Programmen Textbook Methode: Simplex-Algorithmus 947 von George Dantzig erfunden. Kann exponentielle Laufzeit haben, generell aber sehr schnell. Polynomialer (!) Algorithmus von Narendra Karmarkar in 984. Heute praktischer Einsatz: CPLEX, Matlab, QSOpt, etc. Forschung: MILP Mixed-Integer-LPs (einige ganzzahlige Variablen) 27 Julian Arz, Timo Bingmann, Sebastian Schlag

Verbindung zu Graph-Problemen Graph (V, E) mit Gewichten c : E R +. max{f (x) x R V, x 0,...} oder max{f (x) x R E, x 0,...} 28 Julian Arz, Timo Bingmann, Sebastian Schlag

Verbindung zu Graph-Problemen Graph (V, E) mit Gewichten c : E R +. max{f (x) x R V, x 0,...} oder max{f (x) x R E, x 0,...} Kürzeste Wege: { } max d v d R V, d s = 0, d w d v + c(v, w) (v, w) E v V 28 Julian Arz, Timo Bingmann, Sebastian Schlag

Verbindung zu Graph-Problemen Graph (V, E) mit Gewichten c : E R +. 2 s 0 2 3 max{f (x) x R V, x 0,...} oder max{f (x) x R E, x 0,...} Kürzeste Wege: { } max d v d R V, d s = 0, d w d v + c(v, w) (v, w) E v V 28 Julian Arz, Timo Bingmann, Sebastian Schlag

Verbindung zu Graph-Problemen Graph (V, E) mit Gewichten c : E R +. 3 3 3 2 3 s 0 2 3 max{f (x) x R V, x 0,...} oder max{f (x) x R E, x 0,...} Kürzeste Wege: { } max d v d R V, d s = 0, d w d v + c(v, w) (v, w) E v V 28 Julian Arz, Timo Bingmann, Sebastian Schlag

Minimum Spanning Tree LP Zusammenhängender Graph (V, E) mit Gewichten c : E R +. { } min c(e)x e x R E, x 0,... e E 29 Julian Arz, Timo Bingmann, Sebastian Schlag

Minimum Spanning Tree LP Zusammenhängender Graph (V, E) mit Gewichten c (R + ) E. min ct x x R E, x 0, 30 Julian Arz, Timo Bingmann, Sebastian Schlag

Minimum Spanning Tree LP Zusammenhängender Graph (V, E) mit Gewichten c (R + ) E. min ct x x R E, x 0, x e = V, e E 30 Julian Arz, Timo Bingmann, Sebastian Schlag

Minimum Spanning Tree LP Zusammenhängender Graph (V, E) mit Gewichten c (R + ) E. min ct x x R E, x 0, x e = V, e E A V A : e E(G[A]) x e A wobei A über alle nicht-leere Knotenteilmengen läuft und E(G[A]) alle Kanten mit Endknoten in A sind. 30 Julian Arz, Timo Bingmann, Sebastian Schlag

Minimum Spanning Tree LP Zusammenhängender Graph (V, E) mit Gewichten c (R + ) E. min ct x x R E, x 0, x e = V, e E A V A : e E(G[A]) x e A wobei A über alle nicht-leere Knotenteilmengen läuft und E(G[A]) alle Kanten mit Endknoten in A sind. 30 Julian Arz, Timo Bingmann, Sebastian Schlag

Dualitätssatz der LP Ist ein lineares Programm in der Form max{c t x x R n, Ax b} gegeben, so lautete das dazu duale Programm min{y t b y R m, y 0, y t A = c t }. 3 Julian Arz, Timo Bingmann, Sebastian Schlag

Dualitätssatz der LP Ist ein lineares Programm in der Form max{c t x x R n, Ax b} gegeben, so lautete das dazu duale Programm min{y t b y R m, y 0, y t A = c t }. Existieren eine zulässige Lösung x 0 R n des ersten Programms und eine zulässige Lösung y 0 R m des dualen Programms, dann sind x 0 und y 0 genau dann optimale Lösungen, wenn also c t x 0 = y t 0 b, max{c t x x R n, Ax b} = min{y t b y R m, y 0, y t A = c t }. 3 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 3 2 0 0 0 0 2 0 0 0 3 x 4 2 2 0 0 2 x 5 2 0 0 2 x 6 c c n f T = a, a,n b v....... a m, a m,n b m v m 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 3 2 0 0 0 0 2 0 0 0 3 x 4 2 2 0 0 2 x 5 2 0 0 2 x 6 Die Blandsche Pivot-Regel wählt als Pivot-Spalte s =, da c = < 0. Die Quotienten sind b a, = 3 2, b 2 a 2, = 2 2 und a 3, 0. Hiervon wird der kleinste als Pivot-Zeile gewählt, also t = 2. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 3 2 0 0 0 0 2 0 0 0 3 x 4 0,5 0 0,5 0 x 5 2 0 0 2 x 6 Nun wird die Pivot-Operation auf Spalte s = und Zeile t = 2 mit Wert a 2, = 2 angewandt. Zuerst normiert man die Zeile t = 2 durch Multiplikation mit 2. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 2,5 3 0 0,5 0 0 2 2 0 x 4 0,5 0 0,5 0 x 0 2,5 0 0 0,5 3 x 6 Dann transformiert man die Spalte s = durch entsprechende Addition eines Vielfachen der Zeile t = 2 auf den t-ten Einheitsspaltenvektor. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 2,5 3 0 0,5 0 0 2 2 0 x 4 0,5 0 0,5 0 x 0 2,5 0 0 0,5 3 x 6 Die Blandsche Pivot-Regel wählt als Pivot-Spalte s = 2, da c 2 = 2,5 < 0. Die positiven Quotienten sind b 2 a 2,2 = 0,5, b 3 a 3,2 = 3 2,5 und a,2 0. Hiervon wird der kleinste als Pivot-Zeile gewählt, also t = 3. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 2,5 3 0 0,5 0 0 2 2 0 x 4 0,5 0 0,5 0 x 0 0 0 0,2 0,4,2 x 6 Wende die Pivot-Operation auf Spalte s = 2 und Zeile t = 3 mit Normierung 2,5 an. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 0 3 0 4 0 0 2 0,6 0,8 3,4 x 4 0 0 0,4 0,2 0,4 x 0 0 0 0,2 0,4,2 x 2 Transformiere die Spalte s = 2 auf den t-ten Einheitsspaltenvektor. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 0 3 0 4 0 0 2 0,6 0,8 3,4 x 4 0 0 0,4 0,2 0,4 x 0 0 0 0,2 0,4,2 x 2 Die Blandsche Pivot-Regel wählt als Pivot-Spalte s = 3, da c 3 = 3 < 0. Die positiven Quotienten sind b a,3 = 3,4 2, a 2,3 0 und a 3,3 0. Hiervon wird der kleinste als Pivot-Zeile gewählt, also t =. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 0 3 0 4 0 0 0,5 0,3 0,4,7 x 4 0 0 0,4 0,2 0,4 x 0 0 0 0,2 0,4,2 x 2 Wende die Pivot-Operation auf Spalte s = 3 und Zeile t = mit Normierung 2 an. 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 0 0,5 0, 2,2 9, 0 0 0,5 0,3 0,4,7 x 3 0 0 0,5 0, 0,2 2, x 0 0 0 0,2 0,4,2 x 2 Transformiere die Spalte s = 3 auf den t-ten Einheitsspaltenvektor.: 32 Julian Arz, Timo Bingmann, Sebastian Schlag

Beispiel: Simplex-Algorithmus max t 3 x x R 3, x 0, 2 2 0 2 2 x 3 2 2 2 [x ] [x 2 ] [x 3 ] [x 4 ] [x 5 ] [x 6 ] 0 0 0,5 0, 2,2 9, 0 0 0,5 0,3 0,4,7 x 3 0 0 0,5 0, 0,2 2, x 0 0 0 0,2 0,4,2 x 2 Da alle Einträge von c nicht-negativ sind, ist das Simplex-Tableau nun final und der Algorithmus bricht ab. Aus dem Tableau kann man nun x opt und f (x) ablesen. 32 Julian Arz, Timo Bingmann, Sebastian Schlag