Approximationsalgorithmen - Exam.pdf

Approximationsalgorithmen - Exam
Approximationsalgorithmen - Exam Aufgabe 1) Approximationsalgorithmen Approximationsalgorithmen sind Näherungsverfahren zur Lösung von Optimierungsproblemen, bei denen exakte Lösungen schwer oder unmöglich zu finden sind. Sie sind eine wichtige Klasse von Algorithmen in der Informatik, deren Ziel es ist, sich in akzeptabler Zeit der optimalen Lösung anzunähern. Ein Approximationsalgorithmus mit ei...

© StudySmarter 2024, all rights reserved.

Approximationsalgorithmen - Exam

Aufgabe 1)

ApproximationsalgorithmenApproximationsalgorithmen sind Näherungsverfahren zur Lösung von Optimierungsproblemen, bei denen exakte Lösungen schwer oder unmöglich zu finden sind. Sie sind eine wichtige Klasse von Algorithmen in der Informatik, deren Ziel es ist, sich in akzeptabler Zeit der optimalen Lösung anzunähern. Ein Approximationsalgorithmus mit einem Approximitätsverhältnis von k liefert eine Lösung, deren Kosten maximal k-fach der optimalen Kosten entsprechen. Solche Algorithmen werden typischerweise für NP-schwere Probleme verwendet und ihre Leistungsanalyse erfolgt meist durch eine Worst-Case-Betrachtung. Typische Beispiele für Probleme, bei denen Approximationsalgorithmen eingesetzt werden, sind das Traveling Salesman Problem (TSP) und das Rucksackproblem. Zu den verwendeten Techniken gehören u. a. Greedy-Algorithmen, lokale Suche und dynamische Programmierung.

b)

  • (i) Nenne ein Beispiel für ein NP-schweres Problem und gebe eine kurze Beschreibung des Problems.
  • (ii) Beschreibe eine mögliche Annäherungsstrategie (Greedy-Algorithmus, lokale Suche, dynamische Programmierung) für dieses Problem und erkläre, wie diese Strategie funktioniert.

Lösung:

ApproximationsalgorithmenApproximationsalgorithmen sind Näherungsverfahren zur Lösung von Optimierungsproblemen, bei denen exakte Lösungen schwer oder unmöglich zu finden sind. Sie sind eine wichtige Klasse von Algorithmen in der Informatik, deren Ziel es ist, sich in akzeptabler Zeit der optimalen Lösung anzunähern. Ein Approximationsalgorithmus mit einem Approximitätsverhältnis von k liefert eine Lösung, deren Kosten maximal k-fach der optimalen Kosten entsprechen. Solche Algorithmen werden typischerweise für NP-schwere Probleme verwendet und ihre Leistungsanalyse erfolgt meist durch eine Worst-Case-Betrachtung. Typische Beispiele für Probleme, bei denen Approximationsalgorithmen eingesetzt werden, sind das Traveling Salesman Problem (TSP) und das Rucksackproblem. Zu den verwendeten Techniken gehören u. a. Greedy-Algorithmen, lokale Suche und dynamische Programmierung.Löse die folgende Teilaufgabe:

  • (i) Nenne ein Beispiel für ein NP-schweres Problem und gebe eine kurze Beschreibung des Problems.Ein bekanntes Beispiel für ein NP-schweres Problem ist das Rucksackproblem (Knapsack Problem).Beim Rucksackproblem besteht die Aufgabe darin, eine Menge von Gegenständen mit unterschiedlichen Gewichten und Werten so auszuwählen und in einen Rucksack zu packen, dass der Gesamtwert der gewählten Gegenstände maximiert wird, wobei die Gesamtkapazität des Rucksacks (maximales Gewicht) nicht überschritten wird.Formell sieht das Problem wie folgt aus:
    • Es gibt n Gegenstände, wobei jeder Gegenstand i ein Gewicht wi und einen Wert vi hat.
    • Der Rucksack hat eine maximale Kapazität W.
    • Finde eine Menge von Gegenständen, sodass die Gesamtgewicht G nicht größer als W ist und der Gesamtwert V maximiert wird.
  • (ii) Beschreibe eine mögliche Annäherungsstrategie (Greedy-Algorithmus, lokale Suche, dynamische Programmierung) für dieses Problem und erkläre, wie diese Strategie funktioniert.Eine mögliche Annäherungsstrategie für das Rucksackproblem ist der Greedy-Algorithmus.Der Greedy-Algorithmus funktioniert folgendermaßen:
    • Berechne für jeden Gegenstand das Verhältnis von Wert zu Gewicht (vi / wi).
    • Sortiere die Gegenstände in absteigender Reihenfolge basierend auf diesem Verhältnis.
    • Beginne mit einem leeren Rucksack und füge nacheinander die Gegenstände in der sortierten Reihenfolge hinzu.
    • Füge einen Gegenstand dem Rucksack hinzu, wenn dadurch die Kapazität W nicht überschritten wird.
    • Wiederhole diesen Vorgang, bis kein weiterer Gegenstand mehr hinzugefügt werden kann, ohne die Kapazität zu überschreiten.
    Diese Strategie funktioniert, weil sie versucht, den Rucksack mit den Gegenständen zu füllen, die den größten Wert pro Gewichtseinheit haben. Obwohl der Greedy-Algorithmus im Allgemeinen keine optimale Lösung für das Rucksackproblem garantiert, liefert er oft eine gute Annäherung, insbesondere wenn die Gewicht-Wert-Verhältnisse der Gegenstände nicht stark variieren.

    c)

    • (i) Bei der Leistungsanalyse eines Approximationsalgorithmus wird häufig das Worst-Case-Szenario betrachtet. Erläutere den Begriff 'Worst-Case-Betrachtung' und warum er in der Leistungsanalyse nützlich ist.
    • (ii) Wie verändert sich dein Vertrauen in die Leistung eines Approximationsalgorithmus, wenn statt der Worst-Case-Betrachtung die durchschnittliche Leistungsanalyse herangezogen wird? Diskutiere mit Beispielen.

    Lösung:

    ApproximationsalgorithmenApproximationsalgorithmen sind Näherungsverfahren zur Lösung von Optimierungsproblemen, bei denen exakte Lösungen schwer oder unmöglich zu finden sind. Sie sind eine wichtige Klasse von Algorithmen in der Informatik, deren Ziel es ist, sich in akzeptabler Zeit der optimalen Lösung anzunähern. Ein Approximationsalgorithmus mit einem Approximitätsverhältnis von k liefert eine Lösung, deren Kosten maximal k-fach der optimalen Kosten entsprechen. Solche Algorithmen werden typischerweise für NP-schwere Probleme verwendet und ihre Leistungsanalyse erfolgt meist durch eine Worst-Case-Betrachtung. Typische Beispiele für Probleme, bei denen Approximationsalgorithmen eingesetzt werden, sind das Traveling Salesman Problem (TSP) und das Rucksackproblem. Zu den verwendeten Techniken gehören u. a. Greedy-Algorithmen, lokale Suche und dynamische Programmierung.Löse die folgende Teilaufgabe:

    • (i) Bei der Leistungsanalyse eines Approximationsalgorithmus wird häufig das Worst-Case-Szenario betrachtet. Erläutere den Begriff 'Worst-Case-Betrachtung' und warum er in der Leistungsanalyse nützlich ist.Die Worst-Case-Betrachtung ist eine Methode zur Leistungsanalyse von Algorithmen, bei der untersucht wird, wie der Algorithmus im schlechtesten denkbaren Szenario abschneidet. Das bedeutet, dass wir die maximale Laufzeit, den maximalen Speicherbedarf oder den maximalen Fehler betrachten, den ein Algorithmus in den unvorteilhaftesten Eingabefällen aufweisen kann.Diese Analyse ist nützlich, weil sie garantiert, dass der Algorithmus selbst unter den schlechtesten Bedingungen akzeptable Ergebnisse liefert. Es gibt eine verlässliche Obergrenze für die Lösung, die der Algorithmus finden kann.Für Approximitätsalgorithmen wird oft das Approximitätsverhältnis im Worst-Case-Szenario berechnet, um sicherzustellen, dass die Lösung niemals schlechter ist als ein bestimmter Faktor im Vergleich zur optimalen Lösung. Zum Beispiel, wenn ein TSP-Approximationsalgorithmus garantiert, dass seine Lösung nicht schlechter als 1,5-mal die optimale Lösung ist (im Worst-Case), gibt das den Nutzern des Algorithmus Vertrauen in seine Qualität.
    • (ii) Wie verändert sich dein Vertrauen in die Leistung eines Approximationsalgorithmus, wenn statt der Worst-Case-Betrachtung die durchschnittliche Leistungsanalyse herangezogen wird? Diskutiere mit Beispielen.Die durchschnittliche Leistungsanalyse betrachtet, wie der Algorithmus im Durchschnitt über verschiedene Eingabefälle hinweg abschneidet. Diese Art der Analyse kann sehr nützlich sein, weil sie ein realistischeres Bild der typischen Leistung des Algorithmus geben kann. Wenn der Algorithmus in den meisten Fällen gut funktioniert, aber in einigen wenigen extremen Fällen versagt, kann die durchschnittliche Leistungsanalyse oft eine bessere Einschätzung der tatsächlichen Nutzbarkeit des Algorithmus liefern.Ein Beispiel ist ein Approximationsalgorithmus für das Rucksackproblem. Im Worst-Case-Szenario könnte dieser Algorithmus ein Approximitätsverhältnis von 2 haben, was bedeutet, dass die gefundene Lösung bis zu doppelt so schlecht wie die optimale Lösung sein kann. Wenn die durchschnittliche Analyse zeigt, dass der Algorithmus in 95% der Fälle sehr nahe an der optimalen Lösung liegt, könnte man ihm mehr vertrauen, besonders wenn man selten mit den extremen Fällen konfrontiert wird.Allerdings hat auch die durchschnittliche Betrachtung ihre Grenzen. Wenn die Eingabeverteilung nicht vollständig bekannt oder nicht repräsentativ ist für die realen Daten, kann die durchschnittliche Leistung trügerisch sein. Beispielsweise zeigen Algorithmen, die nur bei bestimmten Arten von Eingaben gut abschneiden, im Durchschnitt oft besser, als sie tatsächlich tun würden, wenn die realen Eingabedaten stark variieren.Zusammenfassend kann gesagt werden, dass die durchschnittliche Leistungsanalyse nützlich sein kann, um ein besseres Bild von der typischen Performance eines Algorithmus zu erhalten. Aber für eine vollständige Bewertung der Qualität und Zuverlässigkeit eines Approximationsalgorithmus sollte man sowohl die Worst-Case- als auch die durchschnittliche Leistungsanalyse in Betracht ziehen.

      d)

      • (i) Erkläre die Hauptidee hinter Greedy-Algorithmen und wie sie zur Lösung von NP-schweren Problemen eingesetzt werden können. Erwähne dabei auch ihre Limitationen.
      • (ii) Stelle einen Greedy-Algorithmus für das Rucksackproblem vor und zeige, wie Du die Lösung schrittweise findest. Verdeutliche deine Herangehensweise mit Beispieldaten und mathematischen Formeln.

      Lösung:

      ApproximationsalgorithmenApproximationsalgorithmen sind Näherungsverfahren zur Lösung von Optimierungsproblemen, bei denen exakte Lösungen schwer oder unmöglich zu finden sind. Sie sind eine wichtige Klasse von Algorithmen in der Informatik, deren Ziel es ist, sich in akzeptabler Zeit der optimalen Lösung anzunähern. Ein Approximationsalgorithmus mit einem Approximitätsverhältnis von k liefert eine Lösung, deren Kosten maximal k-fach der optimalen Kosten entsprechen. Solche Algorithmen werden typischerweise für NP-schwere Probleme verwendet und ihre Leistungsanalyse erfolgt meist durch eine Worst-Case-Betrachtung. Typische Beispiele für Probleme, bei denen Approximationsalgorithmen eingesetzt werden, sind das Traveling Salesman Problem (TSP) und das Rucksackproblem. Zu den verwendeten Techniken gehören u. a. Greedy-Algorithmen, lokale Suche und dynamische Programmierung.Löse die folgende Teilaufgabe:

      • (i) Erkläre die Hauptidee hinter Greedy-Algorithmen und wie sie zur Lösung von NP-schweren Problemen eingesetzt werden können. Erwähne dabei auch ihre Limitationen.Greedy-Algorithmen verfolgen die Hauptidee, bei jeder Entscheidung, die sie treffen, das jeweils aktuell beste verfügbare Teilproblem zu lösen. Das bedeutet, dass bei jedem Schritt diejenige Wahl getroffen wird, die lokal (in diesem Moment) die beste ist, in der Hoffnung, dass diese lokalen Optima zu einer globalen optimalen Lösung führen.Greedy-Algorithmen werden zur Lösung von NP-schweren Problemen eingesetzt, indem sie einfache und intuitive Heuristiken nutzen, um schnell eine gute, wenn auch nicht unbedingt optimale Lösung zu finden. Ein Beispiel ist das Rucksackproblem, bei dem ein Greedy-Algorithmus bevorzugt die Gegenstände mit dem höchsten Wert-zu-Gewicht-Verhältnis auswählt.Die Limitationen von Greedy-Algorithmen bestehen hauptsächlich darin, dass sie keine Garantie für die globale Optimalität der gefundenen Lösung bieten. Es gibt viele Fälle, bei denen die Auswahl der besten lokalen Option nicht zur besten globalen Lösung führt. Daher können Greedy-Algorithmen in einigen Anwendungsszenarien suboptimale Ergebnisse liefern.
      • (ii) Stelle einen Greedy-Algorithmus für das Rucksackproblem vor und zeige, wie Du die Lösung schrittweise findest. Verdeutliche deine Herangehensweise mit Beispieldaten und mathematischen Formeln.Ein Greedy-Algorithmus für das Rucksackproblem funktioniert wie folgt: Zunächst wird für jeden Gegenstand das Verhältnis von Wert zu Gewicht berechnet (vi/wi). Dann werden die Gegenstände nach diesem Verhältnis in absteigender Reihenfolge sortiert. Schließlich werden die Gegenstände in dieser Reihenfolge in den Rucksack gepackt, bis die Kapazität des Rucksacks erschöpft ist.Sehen wir uns ein Beispiel an:
        • Gegenstände:
          • Gegenstand 1: Wert = 60, Gewicht = 10
          • Gegenstand 2: Wert = 100, Gewicht = 20
          • Gegenstand 3: Wert = 120, Gewicht = 30
        • Maximale Rucksackkapazität W = 50
        • Berechnung des Wert-zu-Gewicht-Verhältnisses:
          • Gegenstand 1: 6 (60/10)
          • Gegenstand 2: 5 (100/20)
          • Gegenstand 3: 4 (120/30)
          Sortiere die Gegenstände nach dem Wert-zu-Gewicht-Verhältnis:
          • Gegenstand 1 (6), Gegenstand 2 (5), Gegenstand 3 (4)
          Schrittweise Auswahl:
          • Wähle Gegenstand 1 (Wert = 60, Gewicht = 10). Verbleibende Kapazität = 40.
          • Wähle Gegenstand 2 (Wert = 100, Gewicht = 20). Verbleibende Kapazität = 20.
          • Wähle Gegenstand 3 (Gewicht = 30). Dies überschreitet die verbleibende Kapazität.
          Ergebnis:Der Algorithmus wählt Gegenstand 1 und Gegenstand 2. Der Gesamtwert beträgt 60 + 100 = 160.Formel:Sei OPT die optimale Lösung und APX die vom Greedy-Algorithmus gefundene Lösung.
          • APX = v1 + v2
          Gesamtwert = 60 + 100 = 160
      • Aufgabe 2)

        Betrachten wir das Problem des Handlungsreisenden (Travelling Salesman Problem, TSP). Ein Handlungsreisender möchte eine Liste von Städten besuchen und jede Stadt genau einmal besuchen, bevor er zu seiner Ausgangsstadt zurückkehrt. Das Ziel ist es, den Gesamtweg, den der Handlungsreisende zurücklegt, zu minimieren.

        a)

        a) Definiere den Approximationsfaktor \(\rho\) für das Travelling Salesman Problem (TSP) und erkläre, wie er verwendet wird, um die Effizienz eines Approximationsalgorithmus zu beurteilen. Berechne den Approximationsfaktor für einen gegebenen vorgeschlagenen Algorithmus, der immer eine Rundreise liefert, die um höchstens 50% länger ist als die optimale Rundreise.

        Lösung:

        Das Travelling Salesman Problem (TSP) ist ein klassisches Optimierungsproblem, bei dem ein Handlungsreisender eine Liste von Städten besuchen möchte, jede Stadt genau einmal besuchen muss und schließlich zu seiner Ausgangsstadt zurückkehrt. Das Ziel ist es, den minimalen Gesamtweg zu finden, den der Handlungsreisende zurücklegt.

        • Definition des Approximationsfaktors \(\rho\) für das TSP:

        Der Approximationsfaktor \(\rho\) eines Algorithmus für das TSP gibt an, wie nah die Lösung des Algorithmus an der optimalen Lösung liegt. Er ist definiert als das Verhältnis der Länge der vom Algorithmus gefundenen Rundreise zur Länge der optimalen Rundreise. Formal ausgedrückt:

        \[\rho = \frac{C_{\text{alg}}}{C_{\text{opt}}}\]

        wobei:\(C_{\text{alg}}\) die Länge der vom Algorithmus gefundenen Rundreise ist und\(C_{\text{opt}}\) die Länge der optimalen Rundreise ist.

        • Verwendung des Approximationsfaktors:

        Der Approximationsfaktor wird verwendet, um die Effizienz eines Approximationsalgorithmus für das TSP zu beurteilen. Ein kleinerer Approximationsfaktor bedeutet, dass die Lösung des Algorithmus näher an der optimalen Lösung liegt und daher effizienter ist. Ein Approximationsfaktor von \(\rho = 1\) bedeutet, dass der Algorithmus die optimale Lösung findet.

        • Berechnung des Approximationsfaktors für den gegebenen Algorithmus:

        Angenommen, wir haben einen Algorithmus, der immer eine Rundreise liefert, die um höchstens 50% länger ist als die optimale Rundreise. Das bedeutet:

        \[C_{\text{alg}} \leq 1.5 \cdot C_{\text{opt}}\]

        Der Approximationsfaktor \(\rho\) für diesen Algorithmus ist daher:

        \[\rho = \frac{C_{\text{alg}}}{C_{\text{opt}}} \leq 1.5\]

        Dies bedeutet, dass die Lösung des Algorithmus höchstens 1.5-mal so lang ist wie die optimale Lösung.

        b)

        b) Angenommen, ein exakter Algorithmus zur Lösung des TSP für eine Instanz mit \(n = 20\) Städten benötigt im Durchschnitt \(T(n) = O(2^n)\) Zeit, während ein Approximationsalgorithmus durchschnittlich \(T_{approx}(n) = O(n^3)\) Zeit benötigt. Berechne und vergleiche die ungefähre Laufzeit für beide Algorithmen bei \(n = 20\). Diskutiere die Vorteile des Approximationsalgorithmus angesichts des Zeitkomplexitätsaspekts.

        Lösung:

        Um die Laufzeiten der beiden Algorithmen zu vergleichen, betrachten wir je einen exakten Algorithmus und einen Approximationsalgorithmus für das TSP, jeweils für eine Instanz mit \(n = 20\) Städten.

        • Exakter Algorithmus:

        Die Zeitkomplexität eines exakten Algorithmus für das TSP ist gegeben durch:

        \[T(n) = O(2^n)\]

        Setzen wir \(n = 20\) ein, so ergibt sich:

        \[T(20) = O(2^{20})\]

        \(2^{20}\) ist gleich 1.048.576, daher benötigt der exakte Algorithmus etwa \(O(1.048.576)\) Zeiteinheiten.

        • Approximationsalgorithmus:

        Die Zeitkomplexität des Approximationsalgorithmus ist gegeben durch:

        \[T_{approx}(n) = O(n^3)\]

        Setzen wir \(n = 20\) ein, so ergibt sich:

        \[T_{approx}(20) = O(20^3)\]

        \(20^3\) ist gleich 8.000, daher benötigt der Approximationsalgorithmus etwa \(O(8.000)\) Zeiteinheiten.

        • Vergleich der Laufzeiten:

        Vergleichen wir die beiden Laufzeiten:

        • Exakter Algorithmus: etwa \(O(1.048.576)\) Zeiteinheiten
        • Approximationsalgorithmus: etwa \(O(8.000)\) Zeiteinheiten

        Es ist offensichtlich, dass der Approximationsalgorithmus viel effizienter in Bezug auf die Laufzeit ist, wenn \(n = 20\).

        • Vorteile des Approximationsalgorithmus:
        • Schnellere Laufzeit: Der Approximationsalgorithmus bietet eine wesentlich schnellere Lösung, die bei einer großen Anzahl von Städten praktikabel ist, während der exakte Algorithmus aufgrund seiner exponentiellen Laufzeit bei großen Instanzgrößen unbrauchbar wird.
        • Handhabbare Berechnungen: Der Approximationsalgorithmus ermöglicht Berechnungen in angemessener Zeit, was besonders wichtig ist, wenn Echtzeitanalysen oder schnelle Entscheidungsfindungen erforderlich sind.
        • Akzeptable Genauigkeit: Obwohl der Approximationsalgorithmus keine optimale Lösung garantiert, kann er Lösungen liefern, die nahe der optimalen Lösung liegen, was in vielen praktischen Anwendungen ausreichend gut ist.

        Aufgabe 3)

        Polynomial Time Approximation Scheme (PTAS) und Fully Polynomial Time Approximation Scheme (FPTAS)Ein PTAS ist ein Algorithmus, der für jedes \( \frac{1}{\text{Rückstand}} \) eine Lösung liefert, die höchstens \(1 + \frac{1}{\text{Rückstand}}\)-mal schlechter als die optimale Lösung ist. Ein FPTAS ist ein spezieller Fall von PTAS, der in polynomialer Zeit sowohl in der Eingabelänge als auch in \( \frac{1}{\text{Rückstand}} \) läuft.• PTAS: Für jedes \( \frac{1}{\text{Rückstand}} \) eine Lösung in polynomialer Zeit.• FPTAS: Löst Problem in polynomialer Zeit bzgl. Eingabelänge und \( \frac{1}{\text{Rückstand}} \).• PTAS: Laufzeit \(O(n^{f(\frac{1}{\text{Rückstand}})})\).• FPTAS: Laufzeit \(O(\text{poly}(n, \frac{1}{\text{Rückstand}}))\).• Beispiele: Rucksackproblem (FPTAS), temporäre Planung (PTAS).

        a)

        (1) Erläutere den Unterschied zwischen einem PTAS und einem FPTAS anhand eines Beispiels. Erläutere, wie sich die Laufzeiten von PTAS und FPTAS unterscheiden und unter welchen Bedingungen ein Algorithmus als FPTAS bezeichnet werden kann.

        Lösung:

        Unterschied zwischen PTAS und FPTAS anhand eines Beispiels:Um den Unterschied zwischen einem Polynomial Time Approximation Scheme (PTAS) und einem Fully Polynomial Time Approximation Scheme (FPTAS) zu verstehen, betrachten wir das Rucksackproblem (Knapsack Problem).Das Rucksackproblem besteht darin, eine Auswahl von Gegenständen so zu treffen, dass der Gesamtwert maximiert wird, ohne dass das Gesamtgewicht eine gegebene Grenze überschreitet.

        • Ein PTAS für das Rucksackproblem könnte eine Lösung liefern, die höchstens \(1 + \frac{1}{\text{Rückstand}}\)-mal schlechter als die optimale Lösung ist und dies in polynomieller Zeit in Bezug auf die Eingabegröße \(n\) tut. Zum Beispiel kann der Algorithmus in \(O(n^{f(1/\text{Rückstand})})\) Zeit laufen, wobei \(f\) eine Funktion ist, die von \(1/\text{Rückstand}\) abhängt.
        • Ein FPTAS für das gleiche Problem würde nicht nur eine Lösung liefern, die \(1 + \frac{1}{\text{Rückstand}}\)-mal schlechter als die optimale Lösung ist, sondern dies auch in polynomieller Zeit in Bezug auf sowohl die Eingabegröße \(n\) als auch \(1/\text{Rückstand}\) tun. Zum Beispiel könnte der Algorithmus in \(O(\text{poly}(n, 1/\text{Rückstand}))\) Zeit laufen.
        Unterschied in den Laufzeiten:
        • Die Laufzeit eines PTAS für das Rucksackproblem könnte eine Form wie \(O(n^{f(1/\text{Rückstand})})\) haben, wobei \(f\) eine Funktion ist, die von \(1/\text{Rückstand}\) abhängt. Dies bedeutet, dass die Laufzeit exponentiell in \(1/\text{Rückstand}\) sein kann, wenn \(f\) linear ist.
        • Die Laufzeit eines FPTAS hingegen ist polynomiell sowohl in der Eingabelänge \(n\) als auch in \(1/\text{Rückstand}\). Dies könnte beispielsweise durch \(O(n^2 \times (1/\text{Rückstand})^3)\) dargestellt werden.
        Bedingungen für einen FPTAS:
        • Ein Algorithmus wird als FPTAS bezeichnet, wenn er eine Lösung liefert, die höchstens \(1 + \frac{1}{\text{Rückstand}}\)-mal schlechter als die optimale Lösung ist.
        • Der Algorithmus muss dies in polynomieller Zeit sowohl in Bezug auf die Eingabelänge \(n\) als auch in Bezug auf \(1/\text{Rückstand}\) tun.

        b)

        (2) Gegeben sei ein Rucksackproblem, bei dem Du n Gegenstände mit unterschiedlichen Gewichten und Werten hast, und ein Rucksack mit einer maximalen Tragkraft. Zeige, dass dieses Problem ein FPTAS besitzt. Entwerfe einen Algorithmus für das Rucksackproblem und analysiere seine Laufzeit.

        Lösung:

        Beweis, dass das Rucksackproblem ein FPTAS besitzt, und Entwurf eines Algorithmus:Um zu zeigen, dass das Rucksackproblem ein FPTAS besitzt, müssen wir einen Algorithmus entwerfen, der in polynomieller Zeit in Bezug auf die Eingabelänge und den Rückstand (\(1/\text{Rückstand}\)) läuft und eine Lösung liefert, die höchstens \(1 + \frac{1}{\text{Rückstand}}\)-mal schlechter als die optimale Lösung ist.Problemdefinition:Gegeben seien \(n\) Gegenstände mit Gewichten \(w_i\) und Werten \(v_i\), sowie ein Rucksack mit einer maximalen Tragkraft \(W\). Ziel ist es, eine Auswahl von Gegenständen zu finden, die den maximalen Wert zum Gewicht \(W\) hat.Schritte zur Entwicklung eines FPTAS:

        • **Relative Genauigkeit \(\epsilon\):** Der Algorithmus soll eine Lösung finden, die höchstens \((1 + \frac{1}{\text{Rückstand}})\)-mal schlechter als die optimale Lösung ist, wobei \(\epsilon = \frac{1}{\text{Rückstand}}\).
        • **Wert-Normalisierung:** Wir skalieren die Werte der Gegenstände so, dass diese in einem kontrollierten Bereich liegen, um die Genauigkeit des Algorithmus zu steuern. Setze \(K = \frac{\epsilon \cdot V_{max}}{n}\), wobei \(V_{max}\) der maximale Wert der Gegenstände ist. Ersetze jeden Wert \(v_i\) durch \(v'_i = \lfloor \frac{v_i}{K} \rfloor\).
        • **Dynamische Programmierung:** Wir verwenden dynamische Programmierung mit den neuen Werten, um die Rucksacklösung zu finden.
        Algorithmus:
      function FPTAS_Knapsack(values, weights, W, epsilon):    n = len(values)    V_max = max(values)    K = epsilon * V_max / n    new_values = [int(v / K) for v in values]    DP = [float('inf')] * (sum(new_values) + 1)    DP[0] = 0    for i in range(n):        for v in range(sum(new_values), new_values[i] - 1, -1):            DP[v] = min(DP[v], DP[v - new_values[i]] + weights[i])    best_value = 0    for v in range(len(DP)):        if DP[v] <= W:            best_value = max(best_value, v)    return best_value * K
      Analyse der Laufzeit:
      • **Wert-Skalierung:** Die Skalierung der Werte dauert \(O(n)\).
      • **Dynamische Programmierung:** Die dynamische Programmierung läuft in \(O(n \cdot \sum \text{new\_values})\)-Zeit.
      • **Gesamt-Laufzeit:** Da \(\sum \text{new\_values}\) polynomiell in \(n\) und \(1/\epsilon\) ist, ist die Gesamtlaufzeit \(O(n^2 / \epsilon)\).
      Der Algorithmus läuft somit in polynomialer Zeit sowohl in Bezug auf die Eingabelänge \(n\) als auch in Bezug auf \(1/\text{Rückstand}\), was die Definition eines FPTAS erfüllt.

      c)

      (3) Zeige, dass es auch Probleme gibt, für die kein FPTAS existiert, wobei jedoch ein PTAS gefunden werden kann. Beschreibe ein solches Problem und erkläre, inwiefern ein PTAS dafür ausreichend ist.

      Lösung:

      Beispiel eines Problems, für das kein FPTAS existiert, aber ein PTAS gefunden werden kann:Ein bekanntes Beispiel für ein solches Problem ist das **Maximale Schnittproblem** (Maximum Cut, Max-Cut).Das Max-Cut-Problem:**Problemdefinition:**Gegeben sei ein ungerichteter Graph \(G = (V, E)\) mit Knoten \(V\) und Kanten \(E\), wobei jede Kante ein Gewicht \(w_e\) hat. Das Ziel ist es, die Menge der Knoten in zwei disjunkte Mengen \(S\) und \(\bar{S}\) zu teilen, so dass die Summe der Gewichte der Kanten, die zwischen \(S\) und \(\bar{S}\) verlaufen (d.h. die Menge der geschnittenen Kanten), maximiert wird.Eigenschaften:

      • Das Max-Cut-Problem ist NP-vollständig.
      • Es existiert ein PTAS für das Max-Cut-Problem in speziellen Fällen, wie z.B. wenn der Graph planare Eigenschaften hat. Dies bedeutet, dass es einen Algorithmus gibt, der für jede Rückstandsgrenze \(\epsilon\) eine Lösung findet, die höchstens \((1 + \epsilon)\)-mal schlechter als die optimale Lösung ist. Die Laufzeit des Algorithmus ist polynomiell in Bezug auf \(n\), die Anzahl der Knoten im Graphen, aber nicht zwingend polynomiell in Bezug auf \(\frac{1}{\epsilon}\).
      • Es existiert jedoch kein FPTAS für das Max-Cut-Problem, da die Laufzeit exponentiell in Bezug auf \(\frac{1}{\text{Rückstand}}\) (bzw. \(\frac{1}{\epsilon}\)) wird. Ein solcher Algorithmus würde auch in polynomieller Zeit in Bezug auf \(\frac{1}{\epsilon}\) laufen müssen, was für dieses Problem nicht möglich ist.
      Beispielhafter PTAS für das Max-Cut-Problem:Ein bekannter PTAS für das planare Max-Cut-Problem basiert auf einem Divide-and-Conquer-Ansatz. Dieser Ansatz zerlegt den ursprünglichen Graphen in kleinere Teilgraphen, berechnet die optimale Lösung für die Teilgraphen und kombiniert dann die Teillösungen. Das Verfahren liefert eine \((1 + \epsilon)\)-Approximation der optimalen Lösung, mit einer Laufzeit von \(O(n^{O(1/\epsilon)})\).Warum genügt ein PTAS:
      • **Komplexität:** Da ein FPTAS für das Problem nicht existieren kann (aufgrund der exponentiellen Komplexität in Bezug auf \(\frac{1}{\epsilon}\)), ist ein PTAS das beste, was erreicht werden kann.
      • **Praktische Nutzbarkeit:** Auch wenn der PTAS möglicherweise eine langsame Laufzeit hat als ein hypothetischer FPTAS, bietet er immer noch eine praktikable Möglichkeit, Lösungen in annehmbarer Zeit zu finden.
      • **Belastbare Lösungen:** PTAS liefert Lösungen, die beliebig nahe an der optimalen Lösung sind, was für viele praktische Anwendungen ausreichend ist.
      Zusammengefasst zeigt das Max-Cut-Problem ein Beispiel eines Problems, für das ein PTAS existiert, aber kein FPTAS. Der PTAS ist in solchen Fällen ausreichend, da er brauchbare und nahe optimale Lösungen in polynomialer Zeit garantiert.

      d)

      (4) Betrachte das Problem der temporären Planung, bei dem eine Reihe von Aufgaben zu planen ist, sodass der maximale Verspätungsfaktor minimiert wird. Beschreibe, wie ein PTAS für dieses Problem aussehen könnte und discutiere, warum es schwierig sein könnte, einen FPTAS für dieses Problem zu entwickeln.

      Lösung:

      PTAS für das Problem der temporären Planung:Das Problem der temporären Planung, auch bekannt als Scheduling Problem, beinhaltet die Planung einer Reihe von Aufgaben mit dem Ziel, den maximalen Verspätungsfaktor (Maximum Lateness) zu minimieren. Hier ist eine mögliche Skizze für einen Polynomial Time Approximation Scheme (PTAS) für dieses Problem. Anschließend diskutieren wir, warum ein FPTAS für dieses Problem schwierig zu entwickeln sein könnte.Problemdefinition:Gegeben seien \(n\) Aufgaben \(J_1, J_2, ..., J_n\), die jeweils eine Bearbeitungszeit \(p_i\) und eine Fälligkeitszeit \(d_i\) haben. Ziel ist es, eine Reihenfolge der Aufgaben zu finden, so dass der maximale Verspätungsfaktor minimiert wird.PTAS-Ansatz:

      • **Schritt 1: Aufgabenaufteilung:** Teile die Aufgaben in Gruppen auf Basis ihrer Bearbeitungszeiten. Beispielsweise können wir die Aufgaben basierend auf einem Parameter \(\epsilon\) in \(1/\epsilon\) Gruppen aufteilen, die annähernd gleiche Bearbeitungszeiten haben.
      • **Schritt 2: Modifikation der Bearbeitungszeiten:** Innerhalb jeder Gruppe ersetzen wir die Bearbeitungszeiten der Aufgaben durch den maximalen Wert innerhalb der Gruppe. Dies reduziert die Anzahl der möglichen Bearbeitungszeiten auf \(1/\epsilon\), was die Komplexität reduziert.
      • **Schritt 3: Dynamische Programmierung:** Verwende dynamische Programmierung, um eine annähernd optimale Reihenfolge der Aufgaben mit den modifizierten Bearbeitungszeiten zu finden.
      • **Schritt 4: Rücktransformation:** Rückgängig machen der Modifikation und Analyse der maximalen Verspätung in der ursprünglichen Reihenfolge.
      Algorithmus-Skizze:
      def PTAS_Scheduling(tasks, epsilon):     # Schritt 1: Aufgabenaufteilung     n = len(tasks)      groups = [[] for _ in range(int(1 / epsilon))]      for task in tasks:          group_index = int(task.processing_time / max([task.processing_time for task in tasks]) * 1 / epsilon)          groups[group_index].append(task)               # Schritt 2: Modifikation der Bearbeitungszeiten     new_tasks = []      for group in groups:          if group:              max_time = max([task.processing_time for task in group])              for task in group:                  new_tasks.append(Task(max_time, task.due_time))                       # Schritt 3: Dynamische Programmierung     new_tasks.sort(key=lambda x: x.due_time)      dp = [0] * (n + 1)      for i in range(1, n + 1):          dp[i] = min(dp[i-1] + new_tasks[i-1].processing_time, new_tasks[i-1].due_time)               # Schritt 4: Rücktransformation     max_lateness = max([dp[i] - tasks[i-1].processing_time for i in range(1, n + 1)])      return max_lateness 
      Warum ein FPTAS schwierig sein könnte:Ein FPTAS für das Problem der temporären Planung ist schwierig zu entwickeln, weil:
      • **Feinkörnigkeit der Bearbeitungszeiten:** Für ein FPTAS müsste die Lösung nicht nur polynomiell in der Eingabelänge, sondern auch in \(1/\epsilon\) sein. Die feinkörnige Aufteilung der Bearbeitungszeiten erfordert eine exponentielle Anzahl an Zuständen in der dynamischen Programmierung, was die Berechnung erheblich erschwert.
      • **Komplexität der Kombination:** Selbst wenn die Bearbeitungszeiten grob genähert werden können, bleibt die komplexe Kombination der Aufgaben in der dynamischen Programmierung eine Herausforderung, die exponentiell in \(1/\epsilon\) wächst.
      • **Exakte Anforderungen:** Die genaue Steuerung der Verspätungszeit erfordert eine präzise Planung, die sich nicht leicht in eine polynomielle Zeit bzgl. \(1/\epsilon\) umwandeln lässt.
      Zusammengefasst kann ein PTAS für das temporäre Planungsproblem ausreichend sein, da es praktikable Lösungen in polynomieller Zeit liefert, auch wenn ein FPTAS aufgrund der hohen Komplexität des Problems schwer realisierbar ist.

      Aufgabe 4)

      Simplex-Algorithmus und Dualitätstheorie in der linearen Programmierung

      Der Simplex-Algorithmus ist ein Verfahren zur Lösung linearer Programme durch iterative Verbesserung. Die Dualitätstheorie behandelt die Zusammenhänge zwischen Primal- und Dualproblemen in der linearen Programmierung. Der Simplex-Algorithmus startet an einer Ecke der zulässigen Lösungsmenge und bewegt sich entlang der Kanten zum Optimum.

      Die Dualitätstheorie besagt, dass jedes lineare Programm ein zugehöriges Dualproblem hat, dessen Lösung Informationen über das Primalproblem gibt. Es gibt zwei wichtige Konzepte in der Dualitätstheorie: die schwache Dualität und die starke Dualität.

      • Schwache Dualität: Der optimale Zielfunktionswert des Dualproblems ist eine obere Schranke für das Primalproblem (im Maximierungsfall).
      • Starke Dualität: Falls eine optimale Lösung existiert, stimmen die Zielfunktionswerte des Primal- und Dualproblems überein.
      • Dualitätslücke: Die Differenz zwischen den Zielfunktionswerten von Primal- und Dualproblem (idealerweise null).
      • Komplementäre Schlupfbedingungen: Diese beschreiben die Beziehung zwischen Primal- und Dualvariablen im optimalen Fall.

      a)

      Angenommen, Du hast ein lineares Programm in der Standardform:

      Minimiert c^T xunter den Nebenbedingungen Ax ≥ b,x ≥ 0,
      Schreibe das Dualproblem dieses Primalproblems auf. Erkläre kurz jeden Schritt der Umformung und benenne die dualen Variablen. Welche Erkenntnisse können aus der schwachen Dualität gezogen werden?

      Lösung:

      Um das Dualproblem zu formulieren, beginnen wir mit dem gegebenen linearen Programm (Primalproblem) in Standardform:

      Minimiert c^T xunter den Nebenbedingungen Ax ≥ b,x ≥ 0,

      Hier ist die Zielfunktion die Minimierung von c^T x, wobei A eine Matrix der Nebenbedingungen und b sowie x Vektoren sind.

      Um das Dualproblem aufzustellen, folgen wir diesen Schritten:

      • Schritt 1: Dualvariablen einführen: Wir führen duale Variablen y für jede Ungleichung in den Nebenbedingungen des Primalproblems ein.
      • Schritt 2: Zielfunktion des Dualproblems: Die Zielfunktion des Dualproblems maximiert b^T y, da wir beim Primalproblem die Mindestkosten minimieren und das Duale dazu das Maximum der Nutzenfunktion findet.
      • Schritt 3: Umformung der Ungleichungen: Jede Bedingung des Primalproblems resultiert in einer Bedingung des Dualproblems: (A^T y) ≤ c.
      • Schritt 4: Nicht-Negativitätsbedingungen: Da x ≥ 0 im Primal gegeben ist, hat auch unser Dual y ≥ 0.

      Wir erhalten das Dualproblem:

      Maximiert b^T yunter den Nebenbedingungen A^T y ≤ c,y ≥ 0.

      Die dualen Variablen y können als Schattenpreise oder als Marginalwerte der Ressourcen im Primalproblem interpretiert werden.

      Aus der schwachen Dualität können folgende Erkenntnisse gezogen werden:

      • Der optimale Wert der Zielfunktion des Dualproblems ist eine obere Schranke für das Primalproblem (im Falle der Minimierung).
      • Falls die Optimalwerte des Primal- und Dualproblems verschieden sind, gibt es Möglichkeiten zur Verbesserung der Lösung oder es gibt keine zulässige Lösung (Primal oder Dual sind unbeschränkt).

      b)

      Verwende den Simplex-Algorithmus, um das folgende lineare Programm zu lösen:

      Maximiere z = 3x1 + 2x2 unter den Nebenbedingungen    x1 + x2 ≤ 4,    2x1 + x2 ≤ 5,    x1, x2 ≥ 0.
      Gib die Schritte des Simplex-Algorithmus einschließlich der Basislösungen und der Pivot-Operationen an.

      Lösung:

      Um das gegebene lineare Programm mit dem Simplex-Algorithmus zu lösen, müssen wir die Schritte des Algorithmus systematisch durchführen. Das Ziel ist, die Zielfunktion zu maximieren:

      Maximiere z = 3x1 + 2x2 unter den Nebenbedingungen    x1 + x2 ≤ 4,    2x1 + x2 ≤ 5,    x1, x2 ≥ 0.

      Wir beginnen mit den folgenden Schritten:

      • Schritt 1: Einführen von Schlupfvariablen: Um die Ungleichungen in Gleichungen umzuwandeln, fügen wir Schlupfvariablen ein.
       x1 + x2 + s1 = 4,  2x1 + x2 + s2 = 5,  x1, x2, s1, s2 ≥ 0.
      • Schritt 2: Aufstellen der Anfangstabelle: Wir setzen die Zielfunktion und die Nebenbedingungen in eine Simplex-Tabelle um:
      | Basis | x1 | x2 | s1 | s2 | b  | | s1   | 1  | 1  | 1  | 0  | 4  | | s2   | 2  | 1  | 0  | 1  | 5  | | z    | -3 | -2 | 0  | 0  | 0  |
      • Schritt 3: Pivot-Operationen (erste Iteration): Wir wählen die Pivot-Spalte (die mit dem negativsten Wert in der Zielfunktion, hier ist es x1) und die Pivot-Zeile (diejenige mit dem kleinsten positiven Wert des Verhältnisses b/a, hier ist es s1). Wir führen die Pivot-Operation durch:
      Neue Basis: x1 | Basis_1 / Pivot-Element = 4/1 = 4 | | Basis_2 = Basis_2 - (Element x Pivot-Reihe) = [2  1  0  1  5] - 2*[1  1  1  0  4] = [0  -1  -2  1  4]|
      • Schritt 4: Neue Tabelle aufstellen:
      | Basis | x1  | x2 | s1  | s2 | b  |  | x1   | 1   | 1  | 1   | 0  | 4  |  | s2   | 0   | -1 | -2  | 1  | 4  |  | z    | 0   | 1  | 3   | 0  | 12 |
      • Schritt 5: Pivot-Operationen (zweite Iteration): Nun wählen wir die Pivot-Spalte (die Pivot-Spalte ist x2 aufgrund der kleinste positiven quotient in basis-reihen bzw. positive ) und die Pivot-Zeile. Die Pivot-Operation führt zu einer neuen Tabelle:
      | Basis | x1 | x2 | s1 | s2 | b  | | x1   | 1  | 0  | 1  | -1 | 3  | | x2   | 0  | 1  | -1 | 1  | 1  | | z    | 0  | 0  | 4  | -1 | 12 |
      • Schritt 6: Überprüfen und Stoppen: Da nun keine negativen Werte mehr in der Zielfunktion vorhanden sind, ist die Lösung optimal.
      • Resultat: Die optimale Lösung ist x1 = 3, x2 = 1 mit einem maximalen Zielfunktionswert von z = 12.

      c)

      Betrachte das Dualproblem für das lineare Programm aus der vorherigen Aufgabe. Bestimme die dualen Variablen y1 und y2 und stelle das Dualproblem der Standardform entsprechend auf:

      Minimiere w = 4y1 + 5y2 unter den Nebenbedingungen    y1 + 2y2 ≥ 3,    y1 + y2 ≥ 2,    y1, y2 ≥ 0.
      Zeige, dass die starke Dualitätsbedingung im optimalen Fall erfüllt ist und erkläre die Bedeutung der komplementären Schlupfbedingungen.

      Lösung:

      Betrachte das Dualproblem für das lineare Programm aus der vorherigen Aufgabe. Das Primalproblem lautet:

      Maximiere z = 3x1 + 2x2 unter den Nebenbedingungen    x1 + x2 ≤ 4,    2x1 + x2 ≤ 5,    x1, x2 ≥ 0.

      Um das Dualproblem aufzustellen, verwenden wir die dualen Variablen y1 und y2, die den Nebenbedingungen des Primalproblems entsprechen. Das Dualproblem lautet daher:

      Minimiere w = 4y1 + 5y2 unter den Nebenbedingungen    y1 + 2y2 ≥ 3,    y1 + y2 ≥ 2,    y1, y2 ≥ 0.

      Um zu zeigen, dass die starke Dualitätsbedingung im optimalen Fall erfüllt ist, überprüfen wir, dass die Zielfunktionswerte des Primal- und Dualproblems im Optimum gleich sind.

      Primalproblem-Lösung:

      Basierend auf dem vorherigen Simplex-Algorithmus ist die optimale Lösung für das Primalproblem:

      x1 = 2, x2 = 2, z = 10

      Dualproblem-Lösung:

      Um die optimalen Werte von y1 und y2 für das Dualproblem zu bestimmen, verwenden wir die Komplementaritätsschlupfbedingungen und die Ungleichungen:

      • y1 + 2y2 ≥ 3
      • 2y1 + y2 ≥ 2
      • y1, y2 ≥ 0

      Lösen wir das Dualproblem, indem wir geeignete Werte für y1 und y2 finden:

       Setze y1 = 1 und y2 = 1. Dann:  1 + 2*1 = 3 ≥ 3 (erfüllt)  1 + 1 = 2 ≥ 2 (erfüllt)

      Der Zielfunktionswert des Dualproblems ist dann:

      w = 4*1 + 5*1 = 9

      Vergleich der Werte:

      Die Zielfunktionswerte von Primal (z=10) und Dual (w=9) stimmen nicht überein. Nach weiteren dual-ungolicher überprüfungen, korr sari oder stimmen nicht darauf hin.

      Komplementäre Schlupfbedingungen:

      Die komplementären Schlupfbedingungen beschreiben die Beziehung zwischen den Primal- und Dualvariablen im optimalen Fall:

      • Für jede Ungleichung im Primalproblem, die nicht als Gleichung erfüllt ist, ist die entsprechende duale Variable gleich null.
      • Für jede duale Bedingung, die nicht als Gleichung erfüllt ist, ist die entsprechende Primalvariable gleich null.

      Diese Bedingungen sichern, dass beide Probleme Lösungen aufweisen, die den optimalen Zielfunktionswert erreichen und somit die starke Dualitätsbedingung erfüllen.

      d)

      Berechne die Dualitätslücke für das folgende Primal- und Dualproblem:Primal:

      Minimiere z = x1 + 2x2unter den Nebenbedingungen    x1 + 3x2 ≥ 3,    2x1 + x2 ≥ 4,    x1, x2 ≥ 0.
      Dual:
      Maximiere w = 3y1 + 4y2unter den Nebenbedingungen    y1 + 2y2 ≤ 1,    3y1 + y2 ≤ 2,    y1, y2 ≥ 0.
      Bestimme die optimalen Lösungen für beide Probleme und verifiziere, dass die Dualitätslücke null ist.

      Lösung:

      Um die Dualitätslücke für das gegebene Primal- und Dualproblem zu berechnen, bestimmen wir zunächst die optimalen Lösungen für beide Probleme.

      Primalproblem:

      Minimiere z = x1 + 2x2 unter den Nebenbedingungen    x1 + 3x2 ≥ 3,    2x1 + x2 ≥ 4,    x1, x2 ≥ 0.

      Dualproblem:

      Maximiere w = 3y1 + 4y2 unter den Nebenbedingungen    y1 + 2y2 ≤ 1,    3y1 + y2 ≤ 2,    y1, y2 ≥ 0.

      Lösen des Primalproblems:

      Wir können die Nebenbedingungen durch Gleichsetzungs- und Eliminationsmethode lösen. Hier wird das graphische Verfahren verwendet, um die zulässige Region zu finden und den Zielfunktionswert zu minimieren.

      • Umformung der Ungleichungen in Gleichungen:
      x1 + 3x2 = 3  2x1 + x2 = 4
    • Schnittpunkte der Gleichungen bestimmen:
    x2 = 0, x1 = 2x2 = 1, x1 = 0.5
  • Die zulässige Region wird durch die Schnittpunkte im nicht-negativen Bereich beschränkt und der Zielfunktionswert wird hier minimiert.

Optimum: x1 = 1, x2 = 1 mit einem Zielfunktionswert von z = 1 + 2*1 = 3.

Lösen des Dualproblems:

Die dualen Variablen y1 und y2 sollen die Nebenbedingungen des Dualproblems erfüllen. Das Dualproblem kann als lineares Programm ebenfalls gelöst werden.

  • Setze y1 = 1 und y2 = 0:
y1 + 2*0 ≤ 1à Okay3*1 + 0 ≤ 2 Nicht okay
  • Setze y1 = 0 und y2 = 0.5:
  • 0+2 *0.5 ≤_ Okay3 *0 + 0.5 ≤ 2 okay
  • Zielfunktionswert optimiert, W = 3 * 0 + 4 * 0.5 = 2
  • SZw Nicholas ok Optimaliselt
  • ->vSwap y max sein besser hinläErozben Zero. Die dualitätgü¨teen Lösungen w = 3 <= 2 == Optimal
  • Sign Up

    Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

    Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

    Kostenloses Konto erstellen

    Du hast bereits ein Konto? Anmelden