19. Gierige Algorithmen - Informatik (Universität Paderborn) · SS 2016 DuA - Kapitel 19 1 19. ......

216
SS 2016 DuA - Kapitel 19 1 19. Gierige Algorithmen Gierige Algorithmen sind eine Algorithmenmethode, um so genannte Optimierungsprobleme zu lösen. Bei einem Optimierungsproblem gibt es zu jeder Probleminstanz viele mögliche oder zulässige Lösungen. Lösungen haben Werte gegeben durch eine Zielfunktion. Gesucht ist dann eine möglichst gute zulässige Lösung. Also eine Lösung mit möglichst kleinem oder möglichst großem Wert (Minimierungs- bzw. Maximierungsproblem).

Transcript of 19. Gierige Algorithmen - Informatik (Universität Paderborn) · SS 2016 DuA - Kapitel 19 1 19. ......

  • SS 2016 DuA - Kapitel 19 1

    19. Gierige Algorithmen

    Gierige Algorithmen sind eine Algorithmenmethode, um so genannte Optimierungsprobleme zu lsen.

    Bei einem Optimierungsproblem gibt es zu jeder Probleminstanz viele mgliche oder zulssige Lsungen. Lsungen haben Werte gegeben durch eine Zielfunktion. Gesucht ist dann eine mglichst gute zulssige Lsung. Also eine Lsung mit mglichst kleinem oder mglichst groem Wert (Minimierungs-bzw. Maximierungsproblem).

  • 2

    Gierige Strategie fr Optimierungsprobleme:

    Aufbau einer Lsung in kleinen Schritten In jedem dieser Schritte wird entsprechend eines definierten

    Optimierungskriteriums eine irreversible Entscheidung getroffen

    Frage 1:Wann kann eine solche Strategie zu einer optimalen Lsung fhren?

    Frage 2:Wie beweist man, dass ein gieriger Algo. eine optimale Lsung liefert?

    2

    Gierige (Greedy) Algorithmen

    DuA - Kapitel 19SS 2016 2

  • SS 2016 DuA - Kapitel 19 3

    Gierige Algorithmen Minimale Spannbume

    Beispiel: Minimale Spannbume:

    1. Probleminstanz gewichteter, ungerichteteter, zusammenhngender Graph

    2. Zulssige Lsungen Spannbume

    3. Zielfunktion Gewicht eines Spannbaums

    4. Gesucht Spannbaum minimalen Gewichts

  • SS 2016 DuA - Kapitel 19 4

    Gierige Algorithmen Idee und Prim

    1. Gierige Algorithmen bestimmen Lsung durch sukzessives Er-weitern von bereits gefundenen Teillsungen.

    2. Erweitern geschieht durch lokal optimale Wahlen.

    3. Analyse muss dann zeigen, dass lokal optimale Wahlen zu global optimalen Lsungen fhrt.

    1. Algorithmus von Prim bestimmt minimalen Spannbaum durch sukzessives Hinzufgen von Kanten.

    2. Prims Algorithmus whlt mglichst leichte Kante, die isolierten Knoten mit Teilbaum verbindet.

    3. Analyse mit Hilfe von Schnitten zeigte, dass Teilbaum immer in einem minimalen Spannbaum enthalten ist.

  • SS 2016 DuA - Kapitel 19 5

    Gierige Algorithmen Idee und Kruskal

    1. Gierige Algorithmen bestimmen Lsung durch sukzessives Er-weitern von bereits gefundenen Teillsungen.

    2. Erweitern geschieht durch lokal optimale Wahlen.

    3. Analyse muss dann zeigen, dass lokal optimale Wahlen zu global optimalen Lsungen fhrt.

    1. Algorithmus von Kruskal bestimmt minimalen Spannbaum durch sukzessives Hinzufgen von Kanten.

    2. Kruskals Algorithmus whlt mglichst leichte Kante, die Zusammenhangskomponen-ten verbindet.

    3. Analyse mit Hilfe von Schnitten zeigte, dass Teilbaum immer in einem minimalen Spannbaum enthalten ist.

  • SS 2016 DuA - Kapitel 19 6

    Gieriges 1-Prozessor-Scheduling (1)

    Gegeben sind n Jobs n1 j,,j mit Dauer n1 t,,t . Jeder der Jobs muss auf einem einzigen Prozessor

    abgearbeitet werden. Der Prozessor kann zu jedem Zeitpunkt nur einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen werden. Gesucht ist eine Reihenfolge, in der die Jobs abgear-

    beitet werden, so dass die durchschnittliche Bearbei- tungszeit der Jobs mglichst gering ist.

    Gegeben sind n Jobs

    n

    1

    j

    ,

    ,

    j

    K

    mit Dauer

    n

    1

    t

    ,

    ,

    t

    K

    .

    Jeder der Jobs muss auf einem einzigen Prozessor abgearbeitet werden. Der Prozessor kann zu jedem Zeitpunkt nur einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen werden.

    Gesucht ist eine Reihenfolge, in der die Jobs abgear- beitet werden, so dass die durchschnittliche Bearbei- tungszeit der Jobs mglichst gering ist.

    _1180798859.unknown

    _1180798897.unknown

  • SS 2016 DuA - Kapitel 19 7

    Gieriges 1-Prozessor-Scheduling (2)

    Bearbeitungszeit eines Jobs ist der Zeitpunkt, an dem der Job vollstndig bearbeitet wurde. Werden die Jobs in Reihenfolge ( ) ( )n1 j,,j ausgefhrt,

    wobei eine Permutation ist, so ist die Bearbeitungs- zeit von Job ( )1j genau ( )1t , die Bearbeitungszeit von Job ( )2j ist ( ) ( )21 tt + , usw.

    Bearbeitungszeit eines Jobs ist der Zeitpunkt, an dem der Job vollstndig bearbeitet wurde.

    Werden die Jobs in Reihenfolge

    (

    )

    (

    )

    n

    1

    j

    ,

    ,

    j

    p

    p

    K

    ausgefhrt, wobei

    p

    eine Permutation ist, so ist die Bearbeitungs- zeit von Job

    (

    )

    1

    j

    p

    genau

    (

    )

    1

    t

    p

    , die Bearbeitungszeit von Job

    (

    )

    2

    j

    p

    ist

    (

    )

    (

    )

    2

    1

    t

    t

    p

    p

    +

    , usw.

    _1180799283.unknown

    _1180799399.unknown

    _1180799418.unknown

    _1180799431.unknown

    _1180799351.unknown

    _1180799206.unknown

  • SS 2016 DuA - Kapitel 19 8

    Gieriges 1-Prozessor-Scheduling - Beispiel

    0 15 23 26 36

    Schedule Nr. 1:

    Durchschnittliche Beendigung: 25

    Job Laufzeit 1j 15 2j 8 3j 3 4j 10

    1j 2j 4j3j

    0 3 11 21 36

    Schedule Nr. 2:

    Durchschnittliche Beendigung: 17,75

    1j4j2j3j

    Job

    Laufzeit

    1

    j

    15

    2

    j

    8

    3

    j

    3

    4

    j

    10

    _1180693989.unknown

    _1180693996.unknown

    _1180694004.unknown

    _1180693965.unknown

  • SS 2016 DuA - Kapitel 19 9

    Gieriges 1-Prozessor-Scheduling (3)

    Lemma 19.1: Bei Permutation ist die durchschnittliche Bearbeitungszeit gegeben durch Lemma 19.2: Eine Permutation fhrt genau dann zu einer minimalen durchschnittlichen Bearbeitungszeit, wenn die Folge ( ) ( )( )n1 t,,t aufsteigend sortiert ist.

    ( ) ( )in

    1it 1in

    n1

    = +

    Lemma 19.1: Bei Permutation

    (

    )

    (

    )

    i

    n

    1

    i

    t

    1

    i

    n

    n

    1

    p

    =

    +

    -

    ist die durchschnittliche Bearbeitungszeit gegeben durch

    p

    Lemma 19.2: Eine Permutation

    p

    fhrt genau dann zu einer minimalen durchschnittlichen Bearbeitungszeit,

    wenn die Folge

    (

    )

    (

    )

    (

    )

    n

    1

    t

    ,

    ,

    t

    p

    p

    K

    aufsteigend sortiert ist.

    EMBED Equation.3

    (

    )

    (

    )

    i

    n

    1

    i

    t

    1

    i

    n

    n

    1

    p

    =

    +

    -

    _1180799753.unknown

    _1180852040.unknown

    _1180799536.unknown

  • SS 2016 DuA - Kapitel 19 10

    Gieriges Mehr-Prozessor-Scheduling

    Gegeben sind n Jobs n1 j,,j mit Dauer n1 t,,t und m identische Prozessoren. Jeder der Jobs muss auf einem einzigen Prozessor

    abgearbeitet werden. Jeder Prozessor kann zu jedem Zeitpunkt nur einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen werden. Gesucht ist eine Aufteilung der Jobs auf die

    Prozessoren und fr jeden Prozessor eine Reihenfolge der ihm zugewiesenen Jobs, so dass durchschnittliche Bearbeitungszeit der Jobs mglichst gering ist. Bearbeitungszeit eines Jobs wie vorher definiert.

    Gegeben sind n Jobs

    n

    1

    j

    ,

    ,

    j

    K

    mit Dauer

    n

    1

    t

    ,

    ,

    t

    K

    und m identische Prozessoren.

    Jeder der Jobs muss auf einem einzigen Prozessor abgearbeitet werden. Jeder Prozessor kann zu jedem Zeitpunkt nur einen Job bearbeiten. Ein einmal be- gonnener Job darf nicht abgebrochen werden.

    Gesucht ist eine Aufteilung der Jobs auf die Prozessoren und fr jeden Prozessor eine Reihenfolge der ihm zugewiesenen Jobs, so dass durchschnittliche Bearbeitungszeit der Jobs mglichst gering ist.

    Bearbeitungszeit eines Jobs wie vorher definiert.

    _1180798859.unknown

    _1180798897.unknown

  • SS 2016 DuA - Kapitel 19 11

    Gieriges Mehr-Prozessor-Scheduling (2)

    Lemma 19.3: Die Permutation sei so gewhlt, dass die Folge (t(1),,t(n)) aufsteigend sortiert ist. Weiter werde dann Job j(i) auf dem Prozessor mitNummer i mod m ausgefhrt (wobei wir fr alle i mit i mod m = 0 Prozessorm verwenden). Das so konstruierte Scheduling minimiert dann die durchschnittliche Bearbeitungszeit.

    Beweisidee:1. Hat Prozessor i mehr als einen Job mehr als Prozessor j, verbessert sich

    die durchschnittliche Bearbeitungszeit, wenn ein Job von i nach jverschoben wird.

    2. Der Tausch zweier Jobs an derselben Ausfhrungsposition in zweiProzessoren mit derselben Anzahl an Jobs verndert nicht die durchschnittliche Bearbeitungszeit.

    3. Die durchschnittliche Bearbeitungszeit innerhalb eins Prozessors istminimal, wenn die Jobs nach aufsteigender Bearbeitungszeit ausgefhrtwerden.

  • SS 2016 DuA - Kapitel 19 12

    Gieriges Mehr-Prozessor-Scheduling - Beispiel

    0

    Schedule Nr. 1 (Methode aus Lemma 19.3):

    Durchschnittliche Beendigung: 18,33

    40

    Job Laufzeit

    1j 3 2j 5 3j 6 4j 10 5j 11 6j 14 7j 15 8j 18 9j 20

    1j 4j 7j

    2j 5j 8j

    9j6j3j

    0

    Schedule Nr. 2:

    Durchschnittliche Beendigung: 18,33

    38

    1j 5j 9j

    2j 4j 7j

    8j6j3j

    Job

    Laufzeit

    1

    j

    3

    2

    j

    5

    3

    j

    6

    4

    j

    10

    5

    j

    11

    6

    j

    14

    7

    j

    15

    8

    j

    18

    9

    j

    20

    _1180694442.unknown

    _1180694465.unknown

    _1180694504.unknown

    _1180694519.unknown

    _1180694478.unknown

    _1180694453.unknown

    _1180694423.unknown

    _1180694431.unknown

    _1180694404.unknown

  • SS 2016 DuA - Kapitel 19 13

    Gierig ist nicht immer optimal

    Job Laufzeit

    1j 3 2j 5 3j 6 4j 10 5j 11 6j 14 7j 15 8j 18 9j 20

    Betrachten dasselbe Szenario wie vorher mit Jobs und Prozessoren.

    Wollen aber jetzt den Zeitpunkt minimieren, an dem alle Jobs beendet sind.

    Optimaler Schedule:

    0 34

    Greedy Scheduling (vorige Folie): 40

    1j

    2j3j 4j 7j

    5j 8j

    9j6j

    Job

    Laufzeit

    1

    j

    3

    2

    j

    5

    3

    j

    6

    4

    j

    10

    5

    j

    11

    6

    j

    14

    7

    j

    15

    8

    j

    18

    9

    j

    20

    _1180694442.unknown

    _1180694465.unknown

    _1180694504.unknown

    _1180694519.unknown

    _1180694478.unknown

    _1180694453.unknown

    _1180694423.unknown

    _1180694431.unknown

    _1180694404.unknown

  • SS 2016 DuA - Kapitel 19 14

    Gierig ist nicht immer optimal

    Geht es schlimmer? Ja!Beispiel: m Prozessoren, m(m-1) Jobs der Lnge 1,

    ein Job der Lnge mGreedy Schedule fr m=10:

    m=10

    199

  • SS 2016 DuA - Kapitel 19 15

    Gierig ist nicht immer optimal

    m=10

    10

    Greedy Schedule: 2m-1 ZeiteinheitenOptimaler Schedule: m ZeiteinheitenGreedy kann also Faktor 2-1/m schlechter als OPT sein. Das ist aber fr alle Instanzen auch der worst case.

  • SS 2016 DuA - Kapitel 19 16

    Gierig ist nicht immer optimal

    Greedy Schedule ber absteigend sortierte Jobzeiten:Kann sogar nie schlechter als 4/3OPT sein.Beweis ist sehr aufwndig.

    4/3-Resultat ist bestmglich.Beispiel: m Maschinen, n=2m+1 Jobs: jeweils 2 Jobs der Lnge m+1,m+2,,2m und ein Job der Lnge mVergleich zu OPT: bung.

  • Anwendungsbeispiel: Intervall Scheduling

    SS 2016 DuA - Kapitel 19 17

  • 18

    Intervall Scheduling: eine Ressource (Hrsaal, Parallelrechner, ...) Menge von Anfragen der Art:

    Kann ich die Ressource fr den Zeitraum [ t ,t ] nutzen?

    Optimierungs-Ziel: Mglichst viele Anfragen erfllen

    1 2

    18

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19SS 2016 18

  • 19

    Intervall Scheduling: eine Ressource (Hrsaal, Parallelrechner, ...) Menge von Anfragen der Art:

    Kann ich die Ressource fr den Zeitraum [ t ,t ] nutzen?

    Optimierungs-Ziel: Mglichst viele Anfragen erfllen

    1 2

    19

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19SS 2016 19

  • 20

    Definition: Zwei Anfragen heien kompatibel, wenn sich die

    Intervalle nicht berschneiden.

    20

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 20SS 2016

  • 21

    Definition: Zwei Anfragen heien kompatibel, wenn sich die

    Intervalle nicht berschneiden.

    21

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 21SS 2016

  • 22

    Definition: Zwei Anfragen heien kompatibel, wenn sich die

    Intervalle nicht berschneiden.

    22

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 22SS 2016

  • 23

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    23

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 23SS 2016

  • 24

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    24

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 24SS 2016

  • 25

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    25

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 25SS 2016

  • 26

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    26

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 26SS 2016

  • 27

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    27

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 27SS 2016

  • 28

    Generelle berlegung: Whle erste Anfrage i geschickt Ist i akzeptiert, weise alle Anfragen zurck, die nicht

    kompatibel sind Whle nchste Anfrage i und weise alle Anfragen

    zurck, die nicht mit i kompatibel sind Mache weiter, bis keine Anfragen mehr brig sind

    1

    1

    2

    2

    28

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 28SS 2016

  • 2929

    Gierige Algorithmen Intervall Scheduling

    Was ist nun aber eine geschickte Auswahlstrategie ?

    DuA - Kapitel 19 29SS 2016

  • 30

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    30

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 30SS 2016

  • 31

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    31

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 31SS 2016

  • 32

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    32

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 32SS 2016

  • 33

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    33

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 33SS 2016

  • 34

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    34

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 34SS 2016

  • 35

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    Optimalitt ?

    35

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 35SS 2016

  • 36

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    Optimalitt ?

    36

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 36SS 2016

  • 37

    Strategie 1: Whle immer die Anfrage, die am frhesten beginnt

    Optimalitt ? Nicht optimal, da eine optimale Lsung 4 Anfragen

    erfllen kann

    37

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 37SS 2016

  • 38

    Strategie 2: Whle immer das krzeste Intervall

    38

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 38SS 2016

  • 39

    Strategie 2: Whle immer das krzeste Intervall

    39

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 39SS 2016

  • 40

    Strategie 2: Whle immer das krzeste Intervall

    40

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 40SS 2016

  • 41

    Strategie 2: Whle immer das krzeste Intervall

    41

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 41SS 2016

  • 42

    Strategie 2: Whle immer das krzeste Intervall

    42

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 42SS 2016

  • 43

    Strategie 2: Whle immer das krzeste Intervall

    43

    Gierige Algorithmen Intervall Scheduling

    43SS 2016 DuA - Kapitel 19

  • 44

    Strategie 2: Whle immer das krzeste Intervall

    44

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 44SS 2016

  • 45

    Strategie 2: Whle immer das krzeste Intervall

    Optimalitt?

    45

    Gierige Algorithmen Intervall Scheduling

    45SS 2016 DuA - Kapitel 19

  • 46

    Strategie 2: Whle immer das krzeste Intervall

    Optimalitt?

    Ebenfalls nicht optimal, da man 2 Anfragen erfllen kann!

    46

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 46SS 2016

  • 47

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    47

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 47SS 2016

  • 48

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    48

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 48SS 2016

  • 49

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    49

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 49SS 2016

  • 50

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    50

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 50SS 2016

  • 51

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    51

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 51SS 2016

  • 52

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    52

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 52SS 2016

  • 53

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    53

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 53SS 2016

  • 54

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    54

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 54SS 2016

  • 55

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    55

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 55

  • 56

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    56

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 56

  • 57

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    57

    Gierige Algorithmen Intervall Scheduling

    SS 2016 57DuA - Kapitel 19

  • 58

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    58

    Gierige Algorithmen Intervall Scheduling

    SS 2016 58DuA - Kapitel 19

  • 59

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    59

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 59

  • 60

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    60

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 60

  • 61

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    61

    Gierige Algorithmen Intervall Scheduling

    SS 2016 61DuA - Kapitel 19

  • 62

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    62

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 62

  • 63

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    63

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 63

  • 64

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?

    64

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 64

  • 65

    Strategie 3: Whle immer das Intervall mit den wenigsten nicht

    kompatiblen Intervallen bei Gleichheit whle das krzeste Intervall

    Optimalitt?Wieder nicht

    optimal!

    65

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 65

  • 66

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    66

    Gierige Algorithmen Intervall Scheduling

    DuA - Kapitel 19 66SS 2016

  • 67

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    67

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 67

  • 68

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    68

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 68

  • 69

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    69

    Gierige Algorithmen Intervall Scheduling

    SS 2016 69DuA - Kapitel 19

  • 70

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    70

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 70

  • 71

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    71

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 71

  • 72

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    72

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 72

  • 73

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    73

    Gierige Algorithmen Intervall Scheduling

    SS 2016 73DuA - Kapitel 19

  • 74

    Worauf muss man achten? Ressource muss mglichst frh wieder frei werden!

    Neue Strategie: Nimm die Anfrage, die am frhesten fertig ist.

    Diese Strategie ist optimal! Aber wie beweist man das?

    74

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 74

  • 75

    Formale Problemformulierung: Problem: Intervall Scheduling Eingabe: Felder s und f, die die Intervalle [ s[i], f[i] ]

    beschreiben Ausgabe: Indizes der ausgewhlten Intervalle

    o.B.d.A. nehmen wir an: Eingabe ist nach Intervallendpunkten sortiert,

    d.h.: f[1] f[2] f[n]

    75

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 75

  • 76

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i7. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    76

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 76

  • 77

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    77

    Gierige Algorithmen Intervall Scheduling

    SS 2016 77DuA - Kapitel 19

  • 78

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    78

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 78

  • 79

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    79

    Gierige Algorithmen Intervall Scheduling

    SS 2016 79DuA - Kapitel 19

  • 80

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    i

    80

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 80

  • 81

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    i

    f[j]

    s[i]

    81

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 81

  • 82

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    i

    f[j]

    s[i]

    82

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 82

  • 83

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j i

    f[j]

    83

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 83

  • 84

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j i

    f[j]

    s[i]

    84

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 84

  • 85

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j i

    f[j]

    s[i]

    85

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 85

  • 86

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    86

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 86

  • 87

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    i

    87

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 87

  • 88

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    f[j]

    i

    s[i]

    88

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 88

  • 89

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5j

    f[j]

    i

    s[i]

    89

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 89

  • 90

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    90

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 90

  • 91

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    91

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 91

  • 92

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    i

    92

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 92

  • 93

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    i

    f[j]

    s[i]

    93

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 93

  • 94

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    i

    94

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 94

  • 95

    IntervalScheduling(s,f)1. n length[s]2. A {1}3. j 14. for i 2 to n do5. if s[i] f[j] then6. A A {i}7. j i8. return A

    s 1 2 4 7 5f 3 5 6 8 9

    1

    2

    3

    4

    5

    j

    i

    95

    Gierige Algorithmen Intervall Scheduling

    SS 2016 95DuA - Kapitel 19

  • 96

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen Knnen wir A = O zeigen ?

    96

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 96

  • 97

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen Knnen wir A = O zeigen ?

    97

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 97

  • 98

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    98

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 98

  • 99

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    99

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 99

  • 100

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    100

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 100

  • 101

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    101

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 101

  • 102

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    102

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 102

  • 103

    Wie knnen wir Optimalitt zeigen? Sei O optimale Menge von Intervallen u. U. viele optimale Lsungen

    Wir zeigen: |A| = |O|

    103

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 103

  • 104

    Beobachtung:A ist eine Menge von kompatiblen Anfragen, d.h. die Menge A bildet eine zulssige bzw. gltige Lsung.

    104

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 104

  • 105

    Notation: i , , i Intervalle von A in Ordnung des Hinzufgens j ,, j Intervalle von O sortiert nach Endpunkt

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    1

    1

    k

    m

    105

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 105

  • 106

    Wir zeigen: Der gierige Algorithmus liegt vorn: D.h. jedes Intervall in A gibt die Ressource mindestens so

    frh wieder frei, wie das korrespondierende Intervall in O Dies ist wahr fr das erste Intervallpaar, da i1j1 und damit

    f[i1] f[j1]. Zu zeigen: Dies gilt fr alle anderen Intervallpaare !

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    106

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 106

  • 107

    Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    107

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 107

  • 108

    Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    f[i ], f[j ]1 1

    108

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 108

  • 109

    Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    f[i ]

    2

    2

    f[j ]

    109

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 109

  • 110

    Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    f[i ]3 3f[j ]

    110

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 110

  • 111

    Lemma 19.4:Fr alle rk gilt irjr (und damit f[ir] f[jr] ).

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    f[i ]4

    4f[j ]

    111

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 111

  • 112

    Satz 19.5:Die von Algorithmus IntervalScheduling berechnete Lsung

    A ist optimal.

    i i i

    ij

    j

    j

    j

    1

    1

    2

    2

    3

    3 4

    4

    112

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 112

  • 113

    IntervalScheduling(s,f)1. n length[s] 2. A {1} 3. j 1 4. for i 2 to n do5. if s[i] f[j] then6. A A {i}7. j i8. return A

    113

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 113

  • 114

    IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    114

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 114

  • 115

    IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A

    (n)

    115

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 115

  • 116

    IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A (1)

    (n)

    116

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 116

  • 117

    IntervalScheduling(s,f)1. n length[s] 2. A {1} (1)3. j 1 4. for i 2 to n do5. if s[i] f[j] then 6. A A {i}7. j i8. return A (1)

    (n)

    (n)117

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 117

  • 118

    Satz 19.6:Algorithmus IntervalScheduling berechnet in (n) Zeit eine

    optimale Lsung, wenn die Eingabe nach Endzeit der Intervalle (rechter Endpunkt) sortiert ist. Die Sortierung kann in (n log n) Zeit berechnet werden.

    118

    Gierige Algorithmen Intervall Scheduling

    SS 2016 DuA - Kapitel 19 118

  • Anwendungsbeispiel: Datenkompression

    SS 2016 DuA - Kapitel 19 119

  • Datenkompression Reduziert Gren von Files Viele Verfahren fr unterschiedliche Anwendungen:

    MP3, MPEG, JPEG, Wie funktioniert Datenkompression?

    Zwei Typen von Kompression: Verlustbehaftete Kompression (Bilder, Musik, Filme,) Verlustfreie Kompression (Programme, Texte, )

    120SS 2016 120

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 120

  • Datenkompression Reduziert Gren von Files Viele Verfahren fr unterschiedliche Anwendungen:

    MP3, MPEG, JPEG, Wie funktioniert Datenkompression?

    Zwei Typen von Kompression: Verlustbehaftete Kompression (Bilder, Musik, Filme,) Verlustfreie Kompression (Programme, Texte, )

    121SS 2016 121

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 121

  • Kodierung: Computer arbeiten auf Bits (Symbole 0 und 1), nutzen

    also das Alphabet {0,1} Menschen nutzen umfangreichere Alphabete

    (z.B. Alphabete von Sprachen) Darstellung auf Rechner erfordert Umwandlung in

    Bitfolgen

    122SS 2016 122

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 122

  • Beispiel: Alphabet ={a,b,c,d,,x,y,z, ,.,:,!,?,&} (32 Zeichen) 5 Bits pro Symbol: 2 = 32 Mglichkeiten

    a b z . : ! ? &00000 00001 11001 11010 11011 11100 11101 11110 11111

    5

    123SS 2016 123

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 123

  • Beispiel: Alphabet ={a,b,c,d,,x,y,z, ,.,:,!,?,&} (32 Zeichen) 5 Bits pro Symbol: 2 = 32 Mglichkeiten

    Fragen? Sind 4 Bits pro Symbol nicht genug ? Mssen wir im Durchschnitt 5 Bits fr jedes Vorkommen

    eines Symbols in langen Texten verwenden?

    a b z . : ! ? &00000 00001 11001 11010 11011 11100 11101 11110 11111

    5

    124SS 2016 124

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 124

  • Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B. kommen x,y und z in der deutschen Sprache viel

    seltener vor als e, n oder r

    125SS 2016 125

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 125

  • Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B. kommen x,y und z in der deutschen Sprache viel

    seltener vor als e, n oder rIdee: Benutze kurze Bitstrings fr Symbole die hufig

    vorkommen

    126SS 2016 126

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 126

  • Beobachtung: Nicht jeder Buchstabe kommt gleich hufig vor Z.B. kommen x,y und z in der deutschen Sprache viel

    seltener vor als e, n oder rIdee: Benutze kurze Bitstrings fr Symbole die hufig

    vorkommen Effekt: Gesamtlnge der Kodierung einer Symbolfolge (eines

    Textes) wird reduziert

    127SS 2016 127

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 127

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90000 0001 0010 0011 0100 0101 0110 0111 1000 1001

    128SS 2016 128

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 128

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90000 0001 0010 0011 0100 0101 0110 0111 1000 1001

    Lnge der Kodierung:4 17 = 68 Bits

    129SS 2016 129

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 129

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101 11110 11111

    130SS 2016 130

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 130

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101 11110 11111

    Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits

    131SS 2016 131

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 131

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101 11110 11111

    Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits

    132SS 2016 132

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 132

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101 11110 11111

    Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits

    133SS 2016 133

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 133

  • Grundlegendes Problem: Eingabe: Text ber dem Alphabet Gesucht: Eine binre Kodierung von , so dass die Lnge

    des Textes in dieser Kodierung minimiert wirdBeispiel: ={0,1,2,,9} Text = 00125590004356789 (17 Zeichen)

    0 1 2 3 4 5 6 7 8 90 11000 11001 11010 11011 10 11100 11101 11110 11111

    Lnge der Kodierung:5 1 + 3 2 + 9 5 = 56 Bits

    134SS 2016 134

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 134

  • MorseCode: Elektrische Pulse ber Kabel Punkte (kurze Pulse) Striche(Lange Pulse)

    Beispiele aus dem MorseCode: e ist 0 (ein einzelner Punkt) t ist 1 (ein einzelner Strich) a ist 01 (Punkt Strich)

    Problem: Ist 0101 eta, aa, etet, oder aet ?

    135SS 2016 135135135

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 135

  • Problem Mehrdeutigkeit: Ist die Kodierung eines Buchstabens ein Prfix der

    Kodierung eines anderen Buchstabens, dann kann es passieren, dass die Kodierung nicht eindeutig ist.

    Beispiel: e = 0, a = 01 0 ist Prfix von 01

    SS 2016

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 136

  • Prfix-Kodierung:Eine Prfix-Kodierung fr ein Alphabet ist eine Funktion ,die jeden Buchstaben x auf eine endliche Sequenz von 0und 1 abbildet, so dass fr x,y, xy, die Sequenz (x) kein Prfix der Sequenz (y) ist.

    137SS 2016 137

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 137

  • Prfix-Kodierung:Eine Prfix-Kodierung fr ein Alphabet ist eine Funktion ,die jeden Buchstaben x auf eine endliche Sequenz von 0und 1 abbildet, so dass fr x,y, xy, die Sequenz (x) kein Prfix der Sequenz (y) ist.

    Beispiel (Prfix-Kodierung):x 0 1 2 3 4 5 6 7 8 9

    (x) 00 0100 0110 0111 1001 1010 1011 1101 1110 1111

    138SS 2016 138

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 138

  • Definition (Frequenz) Die Frequenz f[x] eines Buchstaben x bezeichnet den

    Bruchteil der Buchstaben im Text, die x sind.Beispiel: = {0,1,2} Text =0010022001 (10 Zeichen) f[0] = 3/5 f[1] = 1/5 f[2] = 1/5

    139SS 2016 139

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 139

  • Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n Zeichen bzgl.einer Kodierung ist definert als

    Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b) =101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16

    x

    140SS 2016 140

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 140

  • Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n Zeichen bzgl.einer Kodierung ist definiert als

    Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b) =101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16

    x

    Anzahl der Vorkommen von x im Text

    141SS 2016 141

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 141

  • Definition (Kodierungslnge)Die Kodierungslnge eines Textes mit n Zeichen bzgl.einer Kodierung ist definiert als

    Kodierungslnge = nf[x]|(x)|Beispiel: = {a,b,c,d} (a) = 0; (b) =101; (c)= 110; (d)=111 Text = aacdaabb Kodierungslnge = 16

    x

    Lnge der Codierung von x

    142SS 2016 142

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 142

  • Definition (durchschn. Kodierungslnge)Die durchschnittliche Kodierungslnge eines Buchstabensin einem Text mit n Zeichen und bzgl. einer Kodierung ist

    definiert als ABL() = f[x]|(x)|

    Beispiel: = {a,b,c,d} (a) = 0; (b) =101; (c)= 110; (d)=111 Text = aacdaabb Durchschnittliche Kodierungslnge = 16/8 = 2

    x

    143SS 2016 143

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 143

  • Problem einer optimalen Prfix-Kodierung:

    Eingabe: Alphabet und fr jedes x seine Frequenz f[x]

    Ausgabe: Eine Kodierung , die ABL() minimiert

    SS 2016

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 144

  • Binrbume und Prfix-Kodierungen:

    b

    a

    cd

    145SS 2016 145

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 145

  • Binrbume und Prfix-Kodierungen:

    b

    a

    cd

    0

    0

    0

    1

    1

    1

    146SS 2016 146

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 146

  • b

    a

    cd

    0

    0

    0

    1

    1 x (x)

    a 00

    b 1

    c 011

    d 010

    Binrbume und Prfix-Kodierungen:

    1

    147SS 2016 147

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 147

  • Prfix-Kodierungen und Binrbume:

    x (x)

    a 11

    b 01

    c 00

    d 10

    148SS 2016 148

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 148

  • Prfix-Kodierungen und Binrbume:

    x (x)

    a 11

    b 01

    c 00

    d 10c b d a

    0

    0 0

    1

    1 1

    149SS 2016 149

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 149

  • Definition:Die Tiefe eines Baumknotens ist die Lnge seines Pfadeszur Wurzel.

    b

    a

    cd

    0

    0

    0

    1

    1

    1

    Tiefe(c) = 3

    150SS 2016 150

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 150

  • Neue Problemformulierung: Suche Binrbaum T, dessen Bltter die Symbole aus

    sind und der ABL(T) = f[x] TiefeT(x)

    minimiert.x

    SS 2016

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 151

  • Definition:Ein Binrbaum heit voll, wenn jeder innere Knoten genauzwei Kinder hat.

    b

    a

    cd

    0

    0

    0

    1

    1

    1

    Ein voller Binrbaum

    152SS 2016 152

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 152

  • Definition:Ein Binrbaum heit voll, wenn jeder innere Knoten genauzwei Kinder hat.

    b

    a

    d

    0

    0

    01

    1

    Ein nicht voller Binrbaum,da der rote innere Knoten keine zwei Kinder hat

    153SS 2016 153

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 153

  • Lemma 19.7:Der Binrbaum, der einer optimalen Prfix-Kodierung entspricht, ist voll.

    b

    ad

    0

    0

    1

    1

    1

    154SS 2016 154

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 154

  • Lemma 19.7:Der Binrbaum, der einer optimalen Prfix-Kodierungentspricht, ist voll.

    b

    v

    a

    u

    d

    0

    0

    1

    1

    1

    Beweis: Annahme: T ist optimal und

    hat inneren Knoten u mit einem Kind v

    Ersetze u durch v Dies verkrzt die Tiefe einiger

    Knoten, erhht aber keine Tiefe Damit verbessert man die

    Kodierung

    155SS 2016 155

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 155

  • Lemma 19.7:Der Binrbaum, der einer optimalen Prfix-Kodierungentspricht, ist voll.

    b

    a

    v

    d

    0

    0

    1

    1

    Beweis: Annahme: T ist optimal und

    hat inneren Knoten u mit einem Kind v

    Ersetze u durch v Dies verkrzt die Tiefe einiger

    Knoten, erhht aber keine Tiefe Damit verbessert man die

    Kodierung

    156SS 2016 156

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 156

  • Ein Gedankenexperiment: Angenommen, jemand gibt uns den optimalen Baum T*,

    aber nicht die Bezeichnung der Bltter Wie schwierig ist es, die Bezeichnungen zu finden?

    SS 2016

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 157

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • Lemma 19.8:Seien u und v sind Bltter von T* mit Tiefe(u)

  • BeobachtungSei v der tiefste Blattknoten in T*. Dann hat v einen Bruder

    und dieser ist ebenfalls ein Blattknoten.

    d

    c

    ba

    0

    0

    0

    1

    1

    1

    vw(Bruder von v)

    SS 2016 165

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 165

  • BeobachtungSei v der tiefste Blattknoten in T*. Dann hat v einen Bruder

    und dieser ist ebenfalls ein Blattknoten.

    d

    c

    ba

    0

    0

    0

    1

    1

    1

    vw(Bruder von v)

    Beweis: Da ein optimaler Baum

    voll ist, hat v einen Bruder w

    Wre w kein Blatt, dannhtte ein Nachfolger vonw grere Tiefe als v

    SS 2016 166

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 166

  • Zusammenfassende Behauptung Es gibt eine optimale Prfix-Kodierung mit zugehrigem Baum T*,

    so dass die beiden Blattknoten, denen die Symbole mit denkleinsten Frequenzen zugewiesen wurden, Bruderknoten in T* sind.

    167SS 2016 167

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 167

  • Zusammenfassende Behauptung Es gibt eine optimale Prfix-Kodierung mit zugehrigem Baum T*, so

    dass die beiden Blattknoten, denen die Symbole mit den kleinsten Frequenzen zugewiesen wurden, Bruderknoten in T* sind.

    d

    c

    ba

    0

    0

    0

    1

    1

    1

    x f[x]a 10%b 12%c 18%d 60%

    168SS 2016 168

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 168

  • Zusammenfassende Behauptung Es gibt eine optimale Prfix-Kodierung mit zugehrigem Baum T*, so

    dass die beiden Blattknoten, denen die Symbole mit den kleinsten Frequenzen zugewiesen wurden, Bruderknoten in T* sind.

    d

    c

    ba

    0

    0

    0

    1

    1

    1

    x f[x]a 10%b 12%c 18%d 60%

    a und b erfllen die Bedingungen der Behauptung!

    169SS 2016 169

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 169

  • Idee des Algorithmus: Die beiden Symbole y* und z* mit den niedrigsten

    Frequenzen sind Bruderknoten Fasse y* und z* zu einem neuen Symbol zusammen Lse das Problem fr die brigen n-1 Symbole

    (z.B. rekursiv)

    z*y*

    170SS 2016 170

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 170

  • Idee des Algorithmus: Die beiden Symbole y* und z* mit den niedrigsten

    Frequenzen sind Bruderknoten Fasse y* und z* zu einem neuen Symbol zusammen Lse das Problem fr die brigen n-1 Symbole

    (z.B. rekursiv)

    y*z*

    171SS 2016 171

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 171

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    172SS 2016 172

    Gierige Algorithmen Datenkompression

    DuA - Kapitel 19 172

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%

    173SS 2016 173

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 173

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%

    Q: 10% 12% 23% 55%

    174SS 2016 174

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 174

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=1

    Q: 10% 12% 23% 55%

    175SS 2016 175

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 175

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%

    10%

    i=1

    x:

    Q: 12% 23% 55%

    176SS 2016 176

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 176

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=1

    x:

    y:

    Q: 23% 55%

    10%

    12%

    177SS 2016 177

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 177

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=1

    z:

    Q: 23% 55%

    10% 12%

    22%

    178SS 2016 178

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 178

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=1

    z:

    Q: 23% 55%

    10% 12%

    22%

    179SS 2016 179

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 179

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=1

    Q: 23% 55%

    10% 12%

    22%

    180SS 2016 180

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 180

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q: 23% 55%

    10% 12%

    22%

    181SS 2016 181

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 181

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q: 23% 55%

    10% 12%

    22%x:

    182SS 2016 182

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 182

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q:

    23%

    55%

    10% 12%

    22%x: y:

    183SS 2016 183

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 183

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q:

    23%

    55%

    10% 12%

    22%

    z: 45%

    184SS 2016 184

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 184

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q:

    23%

    55%

    10% 12%

    22%

    z: 45%

    185SS 2016 185

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 185

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=2

    Q: 55%

    23%

    10% 12%

    22%

    45%

    186SS 2016 186

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 186

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q: 55%

    23%

    10% 12%

    22%

    45%

    187SS 2016 187

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 187

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45%55%x:

    188SS 2016 188

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 188

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45% 55%x: y:

    189SS 2016 189

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 189

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45% 55%z:

    100%

    190SS 2016 190

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 190

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45% 55%z:

    100%

    191SS 2016 191

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 191

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45% 55%

    100%

    192SS 2016 192

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 192

  • x f[x]

    a 23%

    b 12%

    c 55%

    d 10%i=3

    Q:

    23%

    10% 12%

    22%

    45% 55%

    100%

    193SS 2016 193

    Gierige Algorithmen Datenkompression

    Huffmann()1. n | |2. Q /* Priority Queue bzgl. f[x] */3. for i 1 to n-1 do4. x deleteMin(Q)5. y deleteMin(Q)6. znew BinTree(x, f[x]+f[y],y)7. f[z] f[x] + f[y]8. Q Q {z}9. return deleteMin(Q)

    DuA - Kapitel 19 193

  • Satz 19.9Algorithmus Huffman() berechnet eine optimale Prfix-Kodierung.Beweis: Durch Induktion ber Anzahl Symbole in . ||=2: Algo Huffman() offensichtlich optimal nn+1: seien x und y die Symbole mit kleinsten Frequenzen in .

    Verschmelze x und y zu einem Symbol z mit f[z]=f[x]+f[y] und sei = (\{x,y}){z}.

    Betrachte einen optimalen Baum T fr und ersetze den Knoten z mit einem Knoten mit Kindern x und y. Der resultierende Baum T hat die Kosten

    ABL(T) = x f[x] TiefeT(x) = ABL(T) + f[x]+f[y]. Angenommen, T sei nicht optimal fr S, aber ein Baum T ist es. Nach

    Lemma 19.8 sind (o.B.d.A.) x und y Bruderknoten in T. Deren Verschmelzung zu einem Knoten mit Symbol z ergibt dann einen Baum T fr mit

    ABL(T) = ABL(T)-f[x]-f[y] < ABL(T)-f[x]-f[y] = ABL(T) Wir wissen: Algo Huffman() konstruiert optimalen Baum fr . Dann

    konstruiert Huffman() auch optimalen Baum fr .

    SS 2016DuA - Kapitel 19 194

    Gierige Algorithmen Datenkompression

    Widerspruch!

  • Kann man an einem Problem erkennen, ob ein Greedy Algorithmus eine optimale

    Ausgabe liefert?

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 195

  • Definition 19.10: Sei M eine endlichen Menge und T eine nichtleere Menge von Teilmengen von M.

    Das Mengensystem (M,T ) heit Teilmengensystem fr alle A,BM gilt:

    AT und BA BTD.h. die Teilmengen in T sind bezglich abgeschlossen.

    Das zu (M,T ) gehrige Optimierungsproblem besteht darin, fr eine beliebige gegebene Gewichtsfunktion w:M eine in T maximale Menge T zu finden, deren Gesamtgewicht

    w(T):=eT w(e)

    maximal (bzw. minimal) ist.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 196

  • Beispiele fr ein Teilmengensystem: T = { } { {x} | xM} T = P(M) (P(M): Potenzmenge von M)

    Kein Teilmengensystem: T = { {x,y} | x,yM} Beweis: betrachte beliebige x,yM. Sei

    A={x,y} und B={x}. Dann sind A,BM, AT und BA, aber BT.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 197

  • Gegeben sei ein Teilmengensystem (M,T ) und eine Gewichtsfunktion w:M.

    Greedy-Algorithmus:1. Sortiere die Elemente in M nach absteigen-

    dem Gewicht (Maximierung). Sei M={x1,...,xm} mit w(x1) ... w(xm).

    2. T3. Fr k1 bis m:4. Falls T{xk}T , dann TT{xk}5. Gib T aus

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 198

  • Bemerkung 19.11: Der Greedy-Algorithmus liefert nicht immer eine Menge T mit maximalem Gewicht.

    Beispiel: M={a,b,c} T={, {a}, {b}, {c}, {a,b}} w(a)=w(b)=2, w(c)=3 Dafr berechnet der Greedy-Algorithmus

    T={c} mit w(T)=3, aber die optimale Lsung ist T={a,b} mit w(T)=4.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 199

  • Beispiel: Traveling Salesman Problem (TSP): Gegeben

    eine Knotenmenge V mit Distanzen d:VV+, finde eine Rundtour TP(VV) ber alle Knoten mit minimaler Lnge d(T)= eT d(e), die jeden Knoten genau einmal besucht.

    Teilmengensystem zum TSP:M =VVT ={ EM | ET fr eine Rundtour T}

    Das TSP ist ein NP-schweres Problem, die Greedy-Methode kann also in der Regel keine optimale Lsung liefern.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 200

  • Beispiel: Rucksack Problem: Gegeben eine Objektmenge

    M mit Gewichten w:M+und ein Rucksack mit maximaler Traglast W, finde eine Teilmenge T der Objekte mit maximalem Gewicht, die in den Rucksack passt, d.h. w(T):= xT w(x) W.

    Teilmengensystem zum Rucksack Problem:M wie oben definiertT ={ TM | w(T)W }

    Das Rucksackproblem ist auch ein NP-schweres Problem, d.h. auch hier wird die Greedy-Methode im Allgemeinen keine optimale Lsung liefern.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 201

  • Definition 19.12: Ein Teilmengensystem (M,T ) heit Matroid fr alle A,BT das Austauschaxiomgilt:

    |A|=|B|+1 aA\B: B{a}TDie Mengen in T werden unabhngige Mengen genannt. Jede maximale (d.h. nicht erweiterbare) unabhngige Menge heit Basis.

    Beispiele: Sei G=(V,E) ein Graph. Dann ist (M,T ) mit M=E

    und T = { TM | (V,T) ist ein Wald} ein Matroid. Die Teilmengensysteme zum TSP und zum

    Rucksackproblem sind dagegen keine Matroide.SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 202

  • Satz 19.13: Sei (M,T ) ein Teilmengensystem. Der Greedy-Algorithmus lst genau dann das zu (M,T ) gehrige Optimierungsproblem (fr jede Gewichtsfunktion w), wenn (M,T ) ein Matroid ist.

    Beweis:: Alle maximalen Mengen von T haben wegen des

    Austauschaxioms die gleiche Kardinalitt. Sei k diese Kardinalitt und sei S={x1,...,xk} die

    vom Greedy-Algorithmus berechnete Lsung. Es gelte w(x1) ... w(xk).

    Sei T={y1,...,yk} eine andere maximale Menge aus T . Es gelte w(y1) ... w(yk).

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 203

  • Annahme: es existiert ein i mit w(yi)>w(xi). Sei i der kleinste solche Index, also

    w(y1)w(x1),...,w(yi-1)w(xi-1). Definition 19.12 liefert mit A={y1,...,yi} und

    B={x1,...,xi-1} ein yjA\B, so dass B{yj}T . Wegen w(yj)w(yi)>w(xi) htte der Greedy-

    Algorithmus vor xi schon yj genommen, wir erhalten also einen Widerspruch zur Annahme.

    Also ist w(yi)w(xi) fr alle 1 ik und somit w(T)w(S).

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 204

  • : Das Austauschaxiom gelte nicht. Dann gibt es A,BT mit |A|=|B|+1, so dass

    B{a}T fr alle aA\B. Sei r=|A| und w:VV gegeben durch

    r+1 falls xBw(x):= r falls xA\B

    0 sonst Der Greedy-Algorithmus whlt dann eine Menge T

    mit TB und T(A\B)= mit Gewicht w(T)=|B|(r+1) = r2-1

    Whlt man stattdessen ein S mit SA, dann ergibt sich w(S)|A|r = r2 > w(T).

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 205

  • Gegeben sei eine Menge J={1,...,n} von Jobs. Jeder Job habe einen Fertigstellungstermin f(i)

    und eine Strafe s(i), die bei nicht rechtzeitiger Fertigstellung gezahlt werden muss.

    Pro Tag kann nur ein Job erledigt werden. Wie muss man die Jobs einplanen, so dass die

    Gesamtstrafe minimiert wird?

    Beispiel:

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 206

    Job 1 2 3 4 5 6f(i) 1 1 2 3 3 6s(i) 10 9 6 7 4 2

  • Modellierung als Matroid: M = J T = { PJ | jP: Job j ist pnktlich planbar}

    Man nehme s(i) als Gewichtsfunktion und wende den Greedy-Algorithmus an.

    Terminplan:

    Strafe: 13

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 207

    Job 1 2 3 4 5 6f(i) 1 1 2 3 3 6s(i) 10 9 6 7 4 2

    Reihe 1 - 3 2 - 4

  • Beispiel: minimale Spannbume Gegeben sei ein Graph G=(V,E) mit

    Kantenkosten c:E. Finde einen Spannbaum (V,T) mit TE mit mini-malen Kosten.

    Modellierung als Matroid: M = E T = { TE | (V,T) ist ein Wald }Greedy-Algorithmus identisch mit Kruskal.SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 208

  • Satz 19.14: Das System (M,T ) zum Minimalen-Spannbaum-Problem ist ein Matroid.

    Beweis: T : klar AT und BA BT : klar Wir mssen die Austauscheigenschaft

    nachweisen.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 209

  • Zu zeigen: fr alle A,BT gilt|A|=|B|+1 aA\B: B{a}T

    Betrachte zwei kreisfreie Kantenmengen A,BE. Seien V1,...,Vk die Zusammenhangskomponenten von (V,B).

    Da |B||B|, gibt es somit in A eine Kante e, die zwei

    verschiedene Vi verbindet. Diese kann aber in Bkeinen Kreis schlieen, d.h. B{e}T.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 210

  • Beispiel: maximales Matching Ein Matching ist eine Kantenmenge, in der

    jeder Knoten hchstens einmal vorkommt. Gegeben sei ein bipartiter Graph G=(LR,E)

    mit Knotengewichten w:L+. Finde ein Matching FE mit maximalem Gewicht w(F) = (u,v)F w(u).

    Modellierung als Matroid: M=L T = { TL | T hat ein Matching in G }

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 211

  • Satz 19.15: Das System (M,T ) zum Maximalen-Matching-Problem ist ein Matroid.

    Beweis: T : klar AT und BA BT : klar Wir mssen die Austauscheigenschaft

    nachweisen.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 212

  • Zu zeigen: fr alle A,BT gilt|A|=|B|+1 aA\B: B{a}T

    Betrachte Knotenmengen A,BL mit |A|=|B|+1. Sei X ein Matching zu A und Y ein Matching zu B.

    Betrachte den Graphen H=(LR,XY). Seien X die roten und Y die blauen Kanten. H besteht aus

    isolierten Kanten, die rot, blau oder beides sein knnen, und/oder

    disjunkten Wegen, die aus abwechselnd roten und blauenKanten bestehen.

    H hat mehr rote als blaue Kanten. Also gibt es entweder eine isolierte rote Kante oder einen

    Weg der Lnge >1 mit mehr roten als blauen Kanten.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 213

  • Also: es gibt entweder eine isolierte rote Kante (mit linkem Knoten vA\B) oder einen Weg P der Lnge >1 mit mehr roten als blauen Kanten.

    Im ersten Fall: B{v}T . Im zweiten Fall: P hat ungerade Lnge, beginnt und

    endet mit roter Kante.

    B{v}T, da die roten Kanten ein Matching bilden.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 214

    L

    R

    vA\B

  • Fazit: Knnen wir ein Optimierungsproblem als Matroid modellieren, wissen wir, dass der Greedy-Algorithmus eine optimale Lsung findet.

    SS 2016

    Gierige Algorithmen Matroide

    DuA - Kapitel 19 215

  • SS 2016 216

    Changelog

    27.06.16: Folien 11, 12, 106, 107, 13601.07.16: Folie 194

    DuA - Kapitel 19

    19. Gierige AlgorithmenFoliennummer 2Gierige Algorithmen Minimale SpannbumeGierige Algorithmen Idee und PrimGierige Algorithmen Idee und KruskalGieriges 1-Prozessor-Scheduling (1)Gieriges 1-Prozessor-Scheduling (2)Gieriges 1-Prozessor-Scheduling - BeispielGieriges 1-Prozessor-Scheduling (3)Gieriges Mehr-Prozessor-Scheduling Gieriges Mehr-Prozessor-Scheduling (2)Gieriges Mehr-Prozessor-Scheduling - BeispielGierig ist nicht immer optimalGierig ist nicht immer optimalGierig ist nicht immer optimalGierig ist nicht immer optimalFoliennummer 17Foliennummer 18Foliennummer 19Foliennummer 20Foliennummer 21Foliennummer 22Foliennummer 23Foliennummer 24Foliennummer 25Foliennummer 26Foliennummer 27Foliennummer 28Foliennummer 29Foliennummer 30Foliennummer 31Foliennummer 32Foliennummer 33Foliennummer 34Foliennummer 35Foliennummer 36Foliennummer 37Foliennummer 38Foliennummer 39Foliennummer 40Foliennummer 41Foliennummer 42Foliennummer 43Foliennummer 44Foliennummer 45Foliennummer 46Foliennummer 47Foliennummer 48Foliennummer 49Foliennummer 50Foliennummer 51Foliennummer 52Foliennummer 53Foliennummer 54Foliennummer 55Foliennummer 56Gierige Algorithmen Intervall SchedulingFoliennummer 58Foliennummer 59Foliennummer 60Foliennummer 61Foliennummer 62Foliennummer 63Foliennummer 64Foliennummer 65Foliennummer 66Foliennummer 67Foliennummer 68Foliennummer 69Foliennummer 70Foliennummer 71Foliennummer 72Foliennummer 73Foliennummer 74Foliennummer 75Foliennummer 76Foliennummer 77Foliennummer 78Foliennummer 79Foliennummer 80Foliennummer 81Foliennummer 82Foliennummer 83Foliennummer 84Foliennummer 85Foliennummer 86Foliennummer 87Foliennummer 88Foliennummer 89Foliennummer 90Foliennummer 91Foliennummer 92Foliennummer 93Foliennummer 94Foliennummer 95Foliennummer 96Foliennummer 97Foliennummer 98Foliennummer 99Foliennummer 100Foliennummer 101Foliennummer 102Foliennummer 103Foliennummer 104Foliennummer 105Foliennummer 106Foliennummer 107Foliennummer 108Foliennummer 109Foliennummer 110Foliennummer 111Foliennummer 112Foliennummer 113Foliennummer 114Foliennummer 115Foliennummer 116Foliennummer 117Foliennummer 118Foliennummer 119Foliennummer 120Foliennummer 121Foliennummer 122Foliennummer 123Foliennummer 124Foliennummer 125Foliennummer 126Foliennummer 127Foliennummer 128Foliennummer 129Foliennummer 130Foliennummer 131Foliennummer 132Foliennummer 133Foliennummer 134Foliennummer 135Foliennummer 136Foliennummer 137Foliennummer 138Foliennummer 139Foliennummer 140Foliennummer 141Foliennummer 142Foliennummer 143Foliennummer 144Foliennummer 145Foliennummer 146Foliennummer 147Foliennummer 148Foliennummer 149Foliennummer 150Foliennummer 151Foliennummer 152Foliennummer 153Foliennummer 154Foliennummer 155Foliennummer 156Foliennummer 157Foliennummer 158Foliennummer 159Foliennummer 160Foliennummer 161Foliennummer 162Foliennummer 163Foliennummer 164Foliennummer 165Foliennummer 166Foliennummer 167Foliennummer 168Foliennummer 169Foliennummer 170Foliennummer 171Foliennummer 172Foliennummer 173Foliennummer 174Foliennummer 175Foliennummer 176Foliennummer 177Foliennummer 178Foliennummer 179Foliennummer 180Foliennummer 181Foliennummer 182Foliennummer 183Foliennummer 184Foliennummer 185Foliennummer 186Foliennummer 187Foliennummer 188Foliennummer 189Foliennummer 190Foliennummer 191Foliennummer 192Foliennummer 193Foliennummer 194Foliennummer 195Foliennummer 196Foliennummer 197Foliennummer 198Foliennummer 199Foliennummer 200Foliennummer 201Foliennummer 202Foliennummer 203Foliennummer 204Foliennummer 205Foliennummer 206Foliennummer 207Foliennummer 208Foliennummer 209Foliennummer 210Foliennummer 211Foliennummer 212Foliennummer 213Foliennummer 214Foliennummer 215Changelog