Teile und Herrsche 1 SS10

Aus ProgrammingWiki
< AuK
Archivierte Version vom 2010-04-06T16:34:55+00:00. Aktuelle Version

Inhaltsverzeichnis

Autoren:

Was ist überhaupt Divide and Conquer?

In vielen Programmiersprachen wird die Gliederung von Computerprogrammen in Prozeduren, Funktionen, Module, Objekte, Komponenten, Prozesse und Threads nach dem Prinzip teile und herrsche umgesetzt.

DaC (eng. "Divide and Conquer") auf deutsch "Teile und Herrsche" genannt und in lat. "divide et impera". Es beschreibt folgendes Vorgehen bei Problemen:

  1. zerteilen des Problems in Teilprobleme (divide)
  2. lösen der einzelnen Teilprobleme, mittels rekursiver Programmierung (conquer)
  3. Teillösungen zusammenführen zu der Gesamtlösung (konkatenieren)

Ziel

Ziel dieser Methode eine Effiziensverbesserung zu erreichen. Der Lösungsaufwand soll minimiert werden durch die Zerlegung des Hauptproblems.

Vorteile von DaC

Teilprobleme können parallelisiert werden, d.h. auf mehreren Rechnern ist die gleichzeitige Berechnung möglich.

Effizienz von DaC

In der untenstehenden Formel wird erklärt, wie sich der Gesamtaufwand eines Algorithmus aus den Teilproblemen multipliziert mit der Größe der Teilprobleme plus den Aufwand ergibt.

\begin{array}{ccl} T_B & = & 3T_A\left(\left\lceil \frac{n}{2}\right\rceil\right)+d\cdot n\\\\ & \leq & 3 \cdot c \cdot \left( \frac{n+1}{2}\right)^2+d\cdot n\\\\ & \leq & 3 \cdot c \cdot \left( \frac{n}{2} + \frac{1}{2} \right)^2+d \cdot n\\\\ & \leq & 3 \cdot c \cdot \left( \frac{n^2}{4}+2\frac{n}{4}+\frac{1}{4} \right)+d \cdot n\\\\ & \leq & \frac{3}{4}cn^2+\frac{3}{2}cn+\frac{3}{4}c+d \cdot n\\\\ & \leq & \frac{3}{4}cn^2+\left(\frac{3}{2}c+d\right)n+\frac{3}{4}c \end{array}

Es tritt eine Effiziensverbesserung von 25% auf, jedoch ist zubeachten das immer ein rekursiver Aufruf enthalten sein muss.

Das schnelle Sortieren

Beispielsweise wird beim Sortieren mit dem Quicksortalg. die sortierte ergebnisliste aus kleinen jeweils für sich sortierten teillisten zusammengesetzt.

Grundprinzip

Effzienz

Schemeumsetzung

Javaumsetzung

Sortieren durch mischen

mergesort

Grundprinzip

Effzienz

Schemeumsetzung

Javaumsetzung


Vergleich Quicksort und Mergesort

Übungen

  1. Aufgabe
  2. Aufgabe
  3. Aufgabe
  4. Aufgabe
  5. Aufgabe