28.12.2013 Aufrufe

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

Teil 4: Algorithmen-Entwurfstechniken Idee der Greedy-Algorithmen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Job-Scheduling für Multiprozessorssysteme (1)<br />

Problem:<br />

Gegeben seinen n Jobs<br />

j 1 , j 2 , …, j n<br />

mit den Ausführungszeiten<br />

t 1 , t 2 , …, t n<br />

Die Jobs sollen p Prozessoren so zugeteilt werden, dass eine bestimmte<br />

Zielfunktion minimiert wird:<br />

(1) Minimiere durchschnittliche Abschlusszeit,<br />

wobei: Abschlusszeit für Job = Wartezeit + Ausführungszeit.<br />

(2) Minimiere gesamte Abschlusszeit:<br />

d.h. Zeit, in <strong>der</strong> alle Jobs abgeschlossen sind<br />

<strong>Greedy</strong>-Algorithmus: Shortest-Job-First<br />

Wähle einen noch nicht bedienten Job mit kürzester Ausführungszeit und teile ihn<br />

demjenigen Prozessor zu, <strong>der</strong> als nächster einen Job bedienen kann.<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-5<br />

Job-Scheduling für Multiprozessorssysteme (2)<br />

Beispiel:<br />

Job<br />

Zeit<br />

j 1<br />

3<br />

j 2<br />

5<br />

j 3<br />

j 4<br />

6<br />

j 5<br />

10<br />

j 6<br />

11<br />

j 7<br />

14<br />

j 8<br />

15<br />

18<br />

j 9<br />

20<br />

j 1<br />

j 2<br />

j 3<br />

j 4<br />

j 5<br />

j 6<br />

j 7<br />

j 8<br />

j 9<br />

6 20 40<br />

Zuteilung <strong>der</strong> Jobs an 3 Prozessoren mit<br />

dem Shortest-Job-First-Algorithmus<br />

Minimierung <strong>der</strong> durchschnittlichen Abschlusszeit<br />

Der Shortest-Job-First-Algorithmus liefert immer eine optimale Lösung.<br />

Begründung:<br />

Im Beispiel ist die durchschnittliche Abschlusszeit:<br />

[ t 1 + t 2 + t 3 + (t 1 +t 4 ) + (t 2 +t 5 ) + (t 3 +t 6 ) + (t 1 +t 4 +t 7 ) + (t 2 +t 5 +t 8 ) + (t 3 +t 6 +t 9 ) ] / 9<br />

= [ 3t 1 +3t 2 +3t +2t 3 4 +2t 5 +2t 6 + t 7 + t 8 + t 9 ] / 9<br />

Dieser Wert ist minimal, wenn t 1 ,t 2 ,t ≤ t 3 4 ,t 5 ,t 6 ≤ t 7 ,t 8, t 9 .<br />

Das wird jedoch vom Algorithmus gewährleistet.<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-6<br />

Job-Scheduling für Multiprozessorssysteme (3)<br />

Minimierung <strong>der</strong> gesamten Abschlusszeit<br />

Der Shortest-Job-First-Algorithmus liefert im allgemeinen nur eine suboptimale Lösung.<br />

Im Beispiel ist die gesamte Abschlusszeit = 40.<br />

Folgendes Lösung zeigt, dass auch eine gesamte Abschlusszeit<br />

von 34 erreicht werden kann.<br />

<strong>Teil</strong> 4:<br />

<strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong><br />

j 1<br />

j 3<br />

j 4<br />

j 7<br />

j 2 j 5<br />

j 8<br />

j 6<br />

j 9<br />

14 34<br />

Das Problem <strong>der</strong> Minimierung <strong>der</strong> gesamten Abschlusszeit beim Job-Scheduling<br />

ist NP-vollständig.<br />

Für NP-vollständige Probleme sind zur Zeit nur exponentielle Verfahren (d.h. O(2 n ))<br />

bekannt.<br />

Es ist ein bisher berühmtes ungelöstes Problem in <strong>der</strong> Informatik, ob es für<br />

NP-vollständige Probleme schnellere Verfahren gibt (d.h. polynomielle Vefahren O(n k )).<br />

Viele Indizien sprechen dafür, dass es für NP-vollständige Probleme keine schnelleren<br />

Verfahren gibt.<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-7<br />

• <strong>Greedy</strong>-<strong>Algorithmen</strong><br />

– <strong>Idee</strong><br />

– Job Scheduling<br />

– Datenkompression mit dem Huffman-Verfahren<br />

– Bin Packing<br />

• <strong>Teil</strong>e-und-Herrsche-Verfahren<br />

• Dynamisches Programmieren<br />

O. Bittel; Juli 2007 <strong>Algorithmen</strong> und Datenstrukturen - <strong>Algorithmen</strong>-<strong>Entwurfstechniken</strong> 4-8

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!