Effiziente kombinatorische Algorithmen - Cheatsheet.pdf

Effiziente kombinatorische Algorithmen - Cheatsheet
Effiziente kombinatorische Algorithmen - Cheatsheet Grundlegende Begriffe und Definitionen in der Graphentheorie Definition: Grundlagen der Graphentheorie: Definitionen von Graphen, Knoten, Kanten, Pfaden, Zyklen und Verbundenheit. Details: Graph: bestehend aus Knotenmenge ( V ) und Kantenmenge ( E ). Knoten ( v ): Element aus V . Kante ( e ): Paar von Knoten ( u,v ). Pfad: Folge von Knoten, die ...

© StudySmarter 2024, all rights reserved.

Effiziente kombinatorische Algorithmen - Cheatsheet

Grundlegende Begriffe und Definitionen in der Graphentheorie

Definition:

Grundlagen der Graphentheorie: Definitionen von Graphen, Knoten, Kanten, Pfaden, Zyklen und Verbundenheit.

Details:

  • Graph: bestehend aus Knotenmenge ( V ) und Kantenmenge ( E ).
  • Knoten ( v ): Element aus V .
  • Kante ( e ): Paar von Knoten ( u,v ).
  • Pfad: Folge von Knoten, die benachbart sind.
  • Kreis/Zyklus: Pfad, der zu seinem Anfangspunkt zurückkehrt.
  • Verbundenheit: Graph ist verbunden, wenn jeder Knoten erreichbar.
  • G wird geschrieben als ( V, E ).
  • |V| : Anzahl der Knoten.
  • |E| : Anzahl der Kanten.

Minimum-Spanning-Tree-Algorithmen: Kruskal und Prim

Definition:

Algorithmen zur Berechnung eines minimalen Spannbaumes (MST) in einem Graphen.

Details:

  • Kruskal: Sortiere alle Kanten nach Gewicht und füge sie nacheinander hinzu, ohne Zyklen zu bilden, bis der MST vollständig ist.
  • Prim: Beginne bei einem beliebigen Knoten und erweitere den MST schrittweise, indem die jeweils günstigste Kante hinzugefügt wird.
  • Kruskal verwendet Union-Find für Effizienz.
  • Prim bevorzugt Priority-Queue (Min-Heap) für Effizienz.
  • Laufzeit Kruskal: O(E log E).
  • Laufzeit Prim: O(E + V log V).

Algorithmische Techniken zur Graphfärbung

Definition:

Journalismus bezieht sich auf die Sammlung, Verfassung und Verbreitung von Nachrichten.

Details:

  • Problem: Färbung der Knoten eines Graphen, sodass keine benachbarten Knoten dieselbe Farbe haben.
  • Ziel: Minimierung der verwendeten Farben.
  • Greedy-Algorithmus: Ordne Knoten in einer bestimmten Reihenfolge; weise jedem Knoten die erste verfügbare Farbe zu.
  • DSATUR-Algorithmus: Dynamische Reihenfolge basierend auf dem Grad der Sättigung.
  • Backtracking: Systematische Suche; Anwendung von Beschneidungsstrategien zur Effizienzsteigerung.
  • Heuristiken: Größte Ausgangsgrad-Heuristik, kleinste Farb-Heuristik.
  • NP-schwer: Optimale Graphfärbung kann in der Praxis nur für kleinere Graphen exakt gefunden werden.

Ford-Fulkerson-Algorithmus und Edmonds-Karp-Algorithmus

Definition:

Der Ford-Fulkerson-Algorithmus berechnet den maximalen Fluss in einem Flussnetzwerk. Der Edmonds-Karp-Algorithmus ist eine Implementierung des Ford-Fulkerson-Algorithmus, die BFS zur Suche von augmentierenden Pfaden verwendet.

Details:

  • Ford-Fulkerson-Algorithmus: basiert auf der Idee, immer wieder augmentierende Pfade zu finden und den Fluss entlang dieser Pfade zu erhöhen
  • Komplexität (Ford-Fulkerson): hängt von den Kapazitäten ab, im schlimmsten Fall unendlich
  • Edmonds-Karp-Algorithmus: verwendet BFS zur Suche von augmentierenden Pfaden, garantiert Polynomialzeit
  • Komplexität (Edmonds-Karp): O(VE^2), wobei V die Anzahl der Knoten und E die Anzahl der Kanten ist
  • Residualgraph: Graph, der die verbleibenden Kapazitäten zur Darstellung des möglichen zusätzlichen Flusses zeigt
  • Kapazitätserhöhung: cf(u,v) = c(u,v) - f(u,v)
  • Optimale Lösung: Der maximale Fluss entspricht dem minimalen Schnitt im Netzwerk (Max-Flow Min-Cut Theorem)

Balanced Binary Trees: AVL und Rot-Schwarz-Bäume

Definition:

Selbstbalancierende Binärbäume zur effizienten Durchführung von Basisoperationen wie Einfügen, Löschen und Suchen.

Details:

  • AVL-Bäume: Höhe der Teilbäume unterscheidet sich maximal um 1
  • Rot-Schwarz-Bäume: Jeder Knoten ist entweder rot oder schwarz, zusätzliche Eigenschaften für Balancierung
  • Einfügen und Löschen in \(O(\log n)\)
  • Höhe eines AVL-Baums: \(O(\log n)\)
  • Höhe eines Rot-Schwarz-Baums: \(2 \log (n+1)\)

Heaps und Priority Queues

Definition:

Heaps sind spezialisierte binäre Bäume, die die Heap-Eigenschaft erfüllen. Priority Queues verwenden Heaps, um Elemente effizient nach Priorität zu verwalten.

Details:

  • Max-Heap: Elternknoten \textgreater \textgreater= Kindknoten
  • Min-Heap: Elternknoten <= Kindknoten
  • Insertion: O(log n)
  • Extract Max/Min: O(log n)
  • Implementation: in einer Liste/Array
  • Priority Queues: Definieren, Einfügen, Entfernen

Lineare Programmierung und Simplex-Algorithmus

Definition:

Lineare Programmierung (LP) ist eine Methode zur Optimierung einer linearen Zielfunktion unter linearen Nebenbedingungen. Der Simplex-Algorithmus ist ein effizienter Algorithmus zur Lösung von LP-Problemen.

Details:

  • Zielfunktion: \( z = c^T x \)
  • Nebenbedingungen: \( Ax \leq b \) und \( x \geq 0 \)
  • Grundlösung: \( x_B = A_B^{-1} b \)
  • Schrittweise Verbesserung der Basislösung, um das Optimum zu finden
  • Pivot-Operationen zur Änderung der Basis
  • Dualität: Jeder LP hat ein duales Problem mit verwandter Struktur

Dynamische Programmierung für optimierende Lösungen

Definition:

Methode zur Zerlegung eines Problems in Teilprobleme und Speichern der Lösungen, um sie wiederzuverwenden.

Details:

  • Verwendet bei Problemen mit überlappenden Teilproblemen
  • Verbessert Effizienz durch Vermeidung mehrfacher Berechnungen
  • Typische Anwendungen: Kürzeste Pfade, Sequenzalignment, Rucksackproblem
  • Hauptansätze: Memoization und Bottom-Up
  • Beispiel: Berechnung der Fibonacci-Zahlen
  • Grundgerüst: Rekurrencegleichung, z.B. für Fibonacci: \[ F(n) = F(n-1) + F(n-2) \]
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