94
Cardinality Constrained Knapsack Problem Jan-Philipp Kappmeier, Melanie Schmidt 17. November 2005

Cardinality Constrained Knapsack Problemls11- · Cardinality Constrained Knapsack Problem Jan-Philipp Kappmeier, Melanie Schmidt 17. November 2005

Embed Size (px)

Citation preview

Cardinality Constrained Knapsack Problem

Jan-Philipp Kappmeier, Melanie Schmidt

17. November 2005

Definition

Cardinality Constrained Knapsack Problem /k-item knapsack problem (kKP)

I n Objekte mit Gewichten w1, . . . ,wn und Profiten p1, . . . , pn

I Gewichtsschranke c

I Maximale Gesamtzahl an Objekten: k

Definition

Cardinality Constrained Knapsack Problem /k-item knapsack problem (kKP)

I n Objekte mit Gewichten w1, . . . ,wn und Profiten p1, . . . , pn

I Gewichtsschranke c

I Maximale Gesamtzahl an Objekten: k

Definition

Cardinality Constrained Knapsack Problem /k-item knapsack problem (kKP)

I n Objekte mit Gewichten w1, . . . ,wn und Profiten p1, . . . , pn

I Gewichtsschranke c

I Maximale Gesamtzahl an Objekten: k

Definition

Cardinality Constrained Knapsack Problem /k-item knapsack problem (kKP)

I n Objekte mit Gewichten w1, . . . ,wn und Profiten p1, . . . , pn

I Gewichtsschranke c

I Maximale Gesamtzahl an Objekten: k

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Formulierung als ILP

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi ≤ k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

LP-Relaxation

Ersetze(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

durch(5) ∀i = 1, . . . , n : 0 ≤ xi ≤ 1

Beobachtung

Sei x die optimale Losung einer LP-Relaxation mit zweifraktionalen Werten x1 und x2.

O.B.d.A. sei w1 ≤ w2.

Dann muss auch p1 ≤ p2 sein.

(Sonst ist eine Losung mit x1 = 1 oder x2 = 0 besser.)

Ebenso folgt aus p1 ≤ p2 , dass w1 ≤ w2 sein muss.

Beobachtung

Sei x die optimale Losung einer LP-Relaxation mit zweifraktionalen Werten x1 und x2.

O.B.d.A. sei w1 ≤ w2.

Dann muss auch p1 ≤ p2 sein.

(Sonst ist eine Losung mit x1 = 1 oder x2 = 0 besser.)

Ebenso folgt aus p1 ≤ p2 , dass w1 ≤ w2 sein muss.

Beobachtung

Sei x die optimale Losung einer LP-Relaxation mit zweifraktionalen Werten x1 und x2.

O.B.d.A. sei w1 ≤ w2.

Dann muss auch p1 ≤ p2 sein.

(Sonst ist eine Losung mit x1 = 1 oder x2 = 0 besser.)

Ebenso folgt aus p1 ≤ p2 , dass w1 ≤ w2 sein muss.

Beobachtung

Sei x die optimale Losung einer LP-Relaxation mit zweifraktionalen Werten x1 und x2.

O.B.d.A. sei w1 ≤ w2.

Dann muss auch p1 ≤ p2 sein.

(Sonst ist eine Losung mit x1 = 1 oder x2 = 0 besser.)

Ebenso folgt aus p1 ≤ p2 , dass w1 ≤ w2 sein muss.

Losungsstruktur der LP-Relaxation

In der LP-Relaxationslosung kommen nicht mehr als zwei nichtganzzahlige xi vor.

Bei mindestens drei gebrochenen xi lassen sich die Werte geeignetverschieben, so dass nur zwei weiterhin fraktional sind.

Seien x1, x2, x3 fraktional und O.B.d.A w1 ≤ w2 ≤ w3.Dann muss auch p1 ≤ p2 ≤ p3 sein (Beobachtung!)

Fallunterscheidung:

Falls p1w1≥ p3

w3Falls p1

w1≤ p3

w3

Setze x ′1 = min(1, x1 + x3) Setze x ′

1 = max(0, w1w3

x3 + x1 − 1)

und x ′3 = max(0, x1 + x3 − 1) und x ′

3 = min(1, x3 + w1w3

x1)

(Uberprufung von Gewichtsschranken und Profitwerten)

Losungsstruktur der LP-Relaxation

In der LP-Relaxationslosung kommen nicht mehr als zwei nichtganzzahlige xi vor.

Bei mindestens drei gebrochenen xi lassen sich die Werte geeignetverschieben, so dass nur zwei weiterhin fraktional sind.

Seien x1, x2, x3 fraktional und O.B.d.A w1 ≤ w2 ≤ w3.Dann muss auch p1 ≤ p2 ≤ p3 sein (Beobachtung!)

Fallunterscheidung:

Falls p1w1≥ p3

w3Falls p1

w1≤ p3

w3

Setze x ′1 = min(1, x1 + x3) Setze x ′

1 = max(0, w1w3

x3 + x1 − 1)

und x ′3 = max(0, x1 + x3 − 1) und x ′

3 = min(1, x3 + w1w3

x1)

(Uberprufung von Gewichtsschranken und Profitwerten)

Losungsstruktur der LP-Relaxation

In der LP-Relaxationslosung kommen nicht mehr als zwei nichtganzzahlige xi vor.

Bei mindestens drei gebrochenen xi lassen sich die Werte geeignetverschieben, so dass nur zwei weiterhin fraktional sind.

Seien x1, x2, x3 fraktional und O.B.d.A w1 ≤ w2 ≤ w3.Dann muss auch p1 ≤ p2 ≤ p3 sein (Beobachtung!)

Fallunterscheidung:

Falls p1w1≥ p3

w3Falls p1

w1≤ p3

w3

Setze x ′1 = min(1, x1 + x3) Setze x ′

1 = max(0, w1w3

x3 + x1 − 1)

und x ′3 = max(0, x1 + x3 − 1) und x ′

3 = min(1, x3 + w1w3

x1)

(Uberprufung von Gewichtsschranken und Profitwerten)

Losungsstruktur der LP-Relaxation

In der LP-Relaxationslosung kommen nicht mehr als zwei nichtganzzahlige xi vor.

Bei mindestens drei gebrochenen xi lassen sich die Werte geeignetverschieben, so dass nur zwei weiterhin fraktional sind.

Seien x1, x2, x3 fraktional und O.B.d.A w1 ≤ w2 ≤ w3.Dann muss auch p1 ≤ p2 ≤ p3 sein (Beobachtung!)

Fallunterscheidung:

Falls p1w1≥ p3

w3Falls p1

w1≤ p3

w3

Setze x ′1 = min(1, x1 + x3) Setze x ′

1 = max(0, w1w3

x3 + x1 − 1)

und x ′3 = max(0, x1 + x3 − 1) und x ′

3 = min(1, x3 + w1w3

x1)

(Uberprufung von Gewichtsschranken und Profitwerten)

Losungsstruktur der LP-Relaxation

In der LP-Relaxationslosung kommen nicht mehr als zwei nichtganzzahlige xi vor.

Bei mindestens drei gebrochenen xi lassen sich die Werte geeignetverschieben, so dass nur zwei weiterhin fraktional sind.

Seien x1, x2, x3 fraktional und O.B.d.A w1 ≤ w2 ≤ w3.Dann muss auch p1 ≤ p2 ≤ p3 sein (Beobachtung!)

Fallunterscheidung:

Falls p1w1≥ p3

w3Falls p1

w1≤ p3

w3

Setze x ′1 = min(1, x1 + x3) Setze x ′

1 = max(0, w1w3

x3 + x1 − 1)

und x ′3 = max(0, x1 + x3 − 1) und x ′

3 = min(1, x3 + w1w3

x1)

(Uberprufung von Gewichtsschranken und Profitwerten)

Beobachtung

Seien: x opt. Losung einer Relaxation mit Wert zR ,xi und xj fraktional, wj ≤ wi ,

z der Wert der optimalen Losung des nicht relaxierten Problems.

Dann ist z ≤∑

r 6=i ,j

xrpr + pi .

Denn:

I xi + xj = 1

I pj ≤ pi

I (∑

r 6=i ,j

xrpr ) + pixi + pjxj = zR

⇒ z ≤ zR = (∑r 6=i ,j

xrpr ) + pixi + pjxj ≤ (∑r 6=i ,j

xrpr ) + pi (xi + xj)

= (∑r 6=i ,j

xrpr ) + pi

Die ganzzahligen xr zusammen mit xj = 1 bilden eine Losung furdas nicht relaxierte Problem (Gewichtsschranke testen).

BeobachtungSeien: x opt. Losung einer Relaxation mit Wert zR ,xi und xj fraktional, wj ≤ wi ,

z der Wert der optimalen Losung des nicht relaxierten Problems.

Dann ist z ≤∑

r 6=i ,j

xrpr + pi .

Denn:

I xi + xj = 1

I pj ≤ pi

I (∑

r 6=i ,j

xrpr ) + pixi + pjxj = zR

⇒ z ≤ zR = (∑r 6=i ,j

xrpr ) + pixi + pjxj ≤ (∑r 6=i ,j

xrpr ) + pi (xi + xj)

= (∑r 6=i ,j

xrpr ) + pi

Die ganzzahligen xr zusammen mit xj = 1 bilden eine Losung furdas nicht relaxierte Problem (Gewichtsschranke testen).

BeobachtungSeien: x opt. Losung einer Relaxation mit Wert zR ,xi und xj fraktional, wj ≤ wi ,

z der Wert der optimalen Losung des nicht relaxierten Problems.

Dann ist z ≤∑

r 6=i ,j

xrpr + pi .

Denn:

I xi + xj = 1

I pj ≤ pi

I (∑

r 6=i ,j

xrpr ) + pixi + pjxj = zR

⇒ z ≤ zR = (∑r 6=i ,j

xrpr ) + pixi + pjxj ≤ (∑r 6=i ,j

xrpr ) + pi (xi + xj)

= (∑r 6=i ,j

xrpr ) + pi

Die ganzzahligen xr zusammen mit xj = 1 bilden eine Losung furdas nicht relaxierte Problem (Gewichtsschranke testen).

BeobachtungSeien: x opt. Losung einer Relaxation mit Wert zR ,xi und xj fraktional, wj ≤ wi ,

z der Wert der optimalen Losung des nicht relaxierten Problems.

Dann ist z ≤∑

r 6=i ,j

xrpr + pi .

Denn:

I xi + xj = 1

I pj ≤ pi

I (∑

r 6=i ,j

xrpr ) + pixi + pjxj = zR

⇒ z ≤ zR = (∑r 6=i ,j

xrpr ) + pixi + pjxj ≤ (∑r 6=i ,j

xrpr ) + pi (xi + xj)

= (∑r 6=i ,j

xrpr ) + pi

Die ganzzahligen xr zusammen mit xj = 1 bilden eine Losung furdas nicht relaxierte Problem (Gewichtsschranke testen).

BeobachtungSeien: x opt. Losung einer Relaxation mit Wert zR ,xi und xj fraktional, wj ≤ wi ,

z der Wert der optimalen Losung des nicht relaxierten Problems.

Dann ist z ≤∑

r 6=i ,j

xrpr + pi .

Denn:

I xi + xj = 1

I pj ≤ pi

I (∑

r 6=i ,j

xrpr ) + pixi + pjxj = zR

⇒ z ≤ zR = (∑r 6=i ,j

xrpr ) + pixi + pjxj ≤ (∑r 6=i ,j

xrpr ) + pi (xi + xj)

= (∑r 6=i ,j

xrpr ) + pi

Die ganzzahligen xr zusammen mit xj = 1 bilden eine Losung furdas nicht relaxierte Problem (Gewichtsschranke testen).

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:I x enthalt keine fraktionalen xi . Dann ist z insgesamt die

optimale Losung.I x enthalt ein fraktionales xi . Dann gib max(

∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:

I x enthalt keine fraktionalen xi . Dann ist z insgesamt dieoptimale Losung.

I x enthalt ein fraktionales xi . Dann gib max(∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:I x enthalt keine fraktionalen xi . Dann ist z insgesamt die

optimale Losung.

I x enthalt ein fraktionales xi . Dann gib max(∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:I x enthalt keine fraktionalen xi . Dann ist z insgesamt die

optimale Losung.I x enthalt ein fraktionales xi . Dann gib max(

∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:I x enthalt keine fraktionalen xi . Dann ist z insgesamt die

optimale Losung.I x enthalt ein fraktionales xi . Dann gib max(

∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik

Gegeben sei eine kKP-Eingabe.

1. Berechne die optimale Losung x mit Wert z der relaxiertenVariante.

2. Fallunterscheidung:I x enthalt keine fraktionalen xi . Dann ist z insgesamt die

optimale Losung.I x enthalt ein fraktionales xi . Dann gib max(

∑r 6=i

xrpr , pi ) zuruck.

I x enthalt xi und xj , beide fraktional und wj ≤ wi .Dann gib max(

∑r 6=i,j

xrpr + pj , pi ) zuruck.

Laufzeit: O(n)

Heuristik-Fehlerabschatzung

Fallunterscheidung:

I keine fraktionalen xi ⇒ optimale Losung, kein Fehler.

I ein fraktionales xi , d.h. Ruckgabe zA := max(∑r 6=i

xrpr , pi ).

⇒ z ≤ (∑r 6=i

xrpr ) + pi ≤ 2zA.

I xi und xj , beide fraktional und wj ≤ wi , d.h. RuckgabezA := max(

∑r 6=i ,j

xrpr + pj , pi ).

⇒ z ≤∑

r 6=i ,j

xrpr + pj + pi ≤ 2zA.

Also ist zA mindestens die Halfte von z .Die optimale Losung ohne Relaxation ist nur evtl. kleiner als z .

⇒ Approximationsgute 2

Heuristik-Fehlerabschatzung

Fallunterscheidung:

I keine fraktionalen xi ⇒ optimale Losung, kein Fehler.

I ein fraktionales xi , d.h. Ruckgabe zA := max(∑r 6=i

xrpr , pi ).

⇒ z ≤ (∑r 6=i

xrpr ) + pi ≤ 2zA.

I xi und xj , beide fraktional und wj ≤ wi , d.h. RuckgabezA := max(

∑r 6=i ,j

xrpr + pj , pi ).

⇒ z ≤∑

r 6=i ,j

xrpr + pj + pi ≤ 2zA.

Also ist zA mindestens die Halfte von z .Die optimale Losung ohne Relaxation ist nur evtl. kleiner als z .

⇒ Approximationsgute 2

Heuristik-Fehlerabschatzung

Fallunterscheidung:

I keine fraktionalen xi ⇒ optimale Losung, kein Fehler.

I ein fraktionales xi , d.h. Ruckgabe zA := max(∑r 6=i

xrpr , pi ).

⇒ z ≤ (∑r 6=i

xrpr ) + pi ≤ 2zA.

I xi und xj , beide fraktional und wj ≤ wi , d.h. RuckgabezA := max(

∑r 6=i ,j

xrpr + pj , pi ).

⇒ z ≤∑

r 6=i ,j

xrpr + pj + pi ≤ 2zA.

Also ist zA mindestens die Halfte von z .Die optimale Losung ohne Relaxation ist nur evtl. kleiner als z .

⇒ Approximationsgute 2

Heuristik-Fehlerabschatzung

Fallunterscheidung:

I keine fraktionalen xi ⇒ optimale Losung, kein Fehler.

I ein fraktionales xi , d.h. Ruckgabe zA := max(∑r 6=i

xrpr , pi ).

⇒ z ≤ (∑r 6=i

xrpr ) + pi ≤ 2zA.

I xi und xj , beide fraktional und wj ≤ wi , d.h. RuckgabezA := max(

∑r 6=i ,j

xrpr + pj , pi ).

⇒ z ≤∑

r 6=i ,j

xrpr + pj + pi ≤ 2zA.

Also ist zA mindestens die Halfte von z .Die optimale Losung ohne Relaxation ist nur evtl. kleiner als z .

⇒ Approximationsgute 2

Heuristik-Fehlerabschatzung

Fallunterscheidung:

I keine fraktionalen xi ⇒ optimale Losung, kein Fehler.

I ein fraktionales xi , d.h. Ruckgabe zA := max(∑r 6=i

xrpr , pi ).

⇒ z ≤ (∑r 6=i

xrpr ) + pi ≤ 2zA.

I xi und xj , beide fraktional und wj ≤ wi , d.h. RuckgabezA := max(

∑r 6=i ,j

xrpr + pj , pi ).

⇒ z ≤∑

r 6=i ,j

xrpr + pj + pi ≤ 2zA.

Also ist zA mindestens die Halfte von z .Die optimale Losung ohne Relaxation ist nur evtl. kleiner als z .

⇒ Approximationsgute 2

Exact k-item knapsack problem (E-kKP)

Anderung: Genau k Objekte mussen eingepackt werden

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi = k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

Exact k-item knapsack problem (E-kKP)

Anderung: Genau k Objekte mussen eingepackt werden

Zielfunktion:

(1)n∑

i=1

pi · xi

Nebenbedingungen:

(2)n∑

i=1

wi · xi ≤ c

(3)n∑

i=1

xi = k

(4) ∀i = 1, . . . , n : xi ∈ {0, 1}

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c

⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓

k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Lose kKP mit einem E-kKP-Algorithmus.Wandle kKP-Eingabe in eine E-kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

1. x = x1, . . . , xn ist eine Losung fur kKP

I ⇒n∑

i=1

k · wixi ≤ kn∑

i=1

wixi ≤ ck ≤ ck + k − 1 = k(c + 1)− 1

I Mit Dummyobjekten istn∑

i=1

x ′i = k erfullbar.

⇒ x ′ ist eine Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKPZwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKP

Zwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKPZwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKPZwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKPZwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

kKP mit E-kKP losen

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k k · w1, . . . , k · wn k · p1, . . . , k · pn k(c + 1)− 1

2. x = x1, . . . , xn ist keine Losung fur kKPZwei mogliche Fehlerursachen:

In∑

i=1

xi > k ⇒ E-kKP nicht erfullbar

In∑

i=1

wixi ≥ c + 1 ⇔n∑

i=1

kwixi ≥ ck + k > ck + k − 1

⇒ es gibt kein x ′ als Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c

⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓

k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

Definiere folgende Hilfsvariablen:

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

1. x = x1, . . . , xn ist eine Losung fur E-kKP

In∑

i=1

(W + wi )xi = kW +n∑

i=1

wixi ≤ kW + c

⇒ x ′ ist eine Losung fur E-kKP.

E-kKP mit kKP losen

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

2. x = x1, . . . , xn als Losung fur E-kKP existiert nicht.

I kKP ist Losbar mit weniger als k Objekten.

In∑

i=1

(P + pi )xi ≤ (k − 1)P +n∑

i=1

pixi ≤ (k − 1)P + P = kP

⇒ Jede Losung x ′ die auch E-kKP lost, hatte einen großerenProfit als kP.

E-kKP mit kKP losen

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

2. x = x1, . . . , xn als Losung fur E-kKP existiert nicht.

I kKP ist Losbar mit weniger als k Objekten.

In∑

i=1

(P + pi )xi ≤ (k − 1)P +n∑

i=1

pixi ≤ (k − 1)P + P = kP

⇒ Jede Losung x ′ die auch E-kKP lost, hatte einen großerenProfit als kP.

E-kKP mit kKP losen

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

2. x = x1, . . . , xn als Losung fur E-kKP existiert nicht.

I kKP ist Losbar mit weniger als k Objekten.

In∑

i=1

(P + pi )xi ≤ (k − 1)P +n∑

i=1

pixi ≤ (k − 1)P + P = kP

⇒ Jede Losung x ′ die auch E-kKP lost, hatte einen großerenProfit als kP.

E-kKP mit kKP losen

P :=n∑

i=1

pi W :=n∑

i=1

wi

Wandle E-kKP-Eingabe in eine kKP-Eingabe um:

Gewichte Profite Gewichtsschranke

k w1, . . . ,wn p1, . . . , pn c⇓ ⇓ ⇓ ⇓k W + w1, . . . ,W + wn P + p1, . . . ,P + pn kW + c

2. x = x1, . . . , xn als Losung fur E-kKP existiert nicht.

I kKP ist Losbar mit weniger als k Objekten.

In∑

i=1

(P + pi )xi ≤ (k − 1)P +n∑

i=1

pixi ≤ (k − 1)P + P = kP

⇒ Jede Losung x ′ die auch E-kKP lost, hatte einen großerenProfit als kP.

Losung fur kKP mit dynamischer Programmierung

Definiere yj(q, `) als

minimales Gewicht, um mit

hochstens ` der ersten j Objekte

genau den Wert q zu erreichen.

⇒ yj(q, `) = min

{j∑

i=1

wixi

∣∣∣∣∣j∑

i=1

pixi = q,

j∑i=1

xi = `, xi ∈ {0, 1}

}

Wichtig: Obere Schranke U fur maximalen Wert notig, sonst qunbeschrankt!

Losung fur kKP mit dynamischer Programmierung

Definiere yj(q, `) als

minimales Gewicht, um mit

hochstens ` der ersten j Objekte

genau den Wert q zu erreichen.

⇒ yj(q, `) = min

{j∑

i=1

wixi

∣∣∣∣∣j∑

i=1

pixi = q,

j∑i=1

xi = `, xi ∈ {0, 1}

}

Wichtig: Obere Schranke U fur maximalen Wert notig, sonst qunbeschrankt!

Losung fur kKP mit dynamischer Programmierung

Definiere yj(q, `) als

minimales Gewicht, um mit

hochstens ` der ersten j Objekte

genau den Wert q zu erreichen.

⇒ yj(q, `) = min

{j∑

i=1

wixi

∣∣∣∣∣j∑

i=1

pixi = q,

j∑i=1

xi = `, xi ∈ {0, 1}

}

Wichtig: Obere Schranke U fur maximalen Wert notig, sonst qunbeschrankt!

Losung fur kKP mit dynamischer Programmierung

Definiere yj(q, `) als

minimales Gewicht, um mit

hochstens ` der ersten j Objekte

genau den Wert q zu erreichen.

⇒ yj(q, `) = min

{j∑

i=1

wixi

∣∣∣∣∣j∑

i=1

pixi = q,

j∑i=1

xi = `, xi ∈ {0, 1}

}

Wichtig: Obere Schranke U fur maximalen Wert notig, sonst qunbeschrankt!

Losung fur kKP mit dynamischer Programmierung

Definiere yj(q, `) als

minimales Gewicht, um mit

hochstens ` der ersten j Objekte

genau den Wert q zu erreichen.

⇒ yj(q, `) = min

{j∑

i=1

wixi

∣∣∣∣∣j∑

i=1

pixi = q,

j∑i=1

xi = `, xi ∈ {0, 1}

}

Wichtig: Obere Schranke U fur maximalen Wert notig, sonst qunbeschrankt!

Initialisierung

y0(0, 0) = 0

y0(q, `) = c + 1, ` = 1, . . . , k, q = 0, . . . ,U,

Losungen mit 0 Objekten sind nicht moglich oder irrelevant−→ ungultigen Gewichtswert setzen

Initialisierung

y0(0, 0) = 0

y0(q, `) = c + 1, ` = 1, . . . , k, q = 0, . . . ,U,

Losungen mit 0 Objekten sind nicht moglich oder irrelevant−→ ungultigen Gewichtswert setzen

Initialisierung

y0(0, 0) = 0

y0(q, `) = c + 1, ` = 1, . . . , k, q = 0, . . . ,U,

Losungen mit 0 Objekten sind nicht moglich oder irrelevant−→ ungultigen Gewichtswert setzen

Bellmansche Optimalitatsgleichung

Berechnung der yj(q, `) aus allen yj−1(q′, `′).

I Objekt j kann einen Wert haben, der großer als q ist

I sonst testen, ob Objekt j zu einem niedrigeren Gewicht fuhrt

yj(q, `) =

{yj−1(q, `) , q < pj

min{yj−1(q, `), yj−1(q − pj , `− 1) + wj} , ` > 0, q ≥ pj

Optimum:

max {q | yn(q, `) ≤ c , q = 0, . . . ,U, ` = 0, . . . , k}

Bellmansche Optimalitatsgleichung

Berechnung der yj(q, `) aus allen yj−1(q′, `′).

I Objekt j kann einen Wert haben, der großer als q ist

I sonst testen, ob Objekt j zu einem niedrigeren Gewicht fuhrt

yj(q, `) =

{yj−1(q, `) , q < pj

min{yj−1(q, `), yj−1(q − pj , `− 1) + wj} , ` > 0, q ≥ pj

Optimum:

max {q | yn(q, `) ≤ c , q = 0, . . . ,U, ` = 0, . . . , k}

Bellmansche Optimalitatsgleichung

Berechnung der yj(q, `) aus allen yj−1(q′, `′).

I Objekt j kann einen Wert haben, der großer als q ist

I sonst testen, ob Objekt j zu einem niedrigeren Gewicht fuhrt

yj(q, `) =

{yj−1(q, `) , q < pj

min{yj−1(q, `), yj−1(q − pj , `− 1) + wj} , ` > 0, q ≥ pj

Optimum:

max {q | yn(q, `) ≤ c , q = 0, . . . ,U, ` = 0, . . . , k}

Laufzeit / Speicherplatz

Um alle Tabelleneintrage zu bestimmen, ist Laufzeit O(nkU) notig(Schranken der einzelnen Parameter).

Fur die Bestimmung des optimalen Werts ohne Angabe der Losungselbst braucht man O(n + kU) Speicherplatz.

Fur die Bestimmung des optimalen Werts und Angabe der Losungselbst brauche man O(k2U) Speicherplatz.

Laufzeit / Speicherplatz

Um alle Tabelleneintrage zu bestimmen, ist Laufzeit O(nkU) notig(Schranken der einzelnen Parameter).

Fur die Bestimmung des optimalen Werts ohne Angabe der Losungselbst braucht man O(n + kU) Speicherplatz.

Fur die Bestimmung des optimalen Werts und Angabe der Losungselbst brauche man O(k2U) Speicherplatz.

Laufzeit / Speicherplatz

Um alle Tabelleneintrage zu bestimmen, ist Laufzeit O(nkU) notig(Schranken der einzelnen Parameter).

Fur die Bestimmung des optimalen Werts ohne Angabe der Losungselbst braucht man O(n + kU) Speicherplatz.

Fur die Bestimmung des optimalen Werts und Angabe der Losungselbst brauche man O(k2U) Speicherplatz.

Divide & Conquer-Ansatz

Dynamische Programmierung benotigt viel Platz zum Speichernder Losung.Darum: versuche, nur die Daten zu speichern, die wirklich benotigtwerden.

I Teile die Anzahl der Objekte auf und verringere sie so.

I Es kann irgendwann leicht entschieden werden, ob ein Objektgewahlt wird oder nicht.

Naturlich muß die Gewichtsschranke auch immer verringert werden!

Divide & Conquer-Ansatz

Dynamische Programmierung benotigt viel Platz zum Speichernder Losung.Darum: versuche, nur die Daten zu speichern, die wirklich benotigtwerden.

I Teile die Anzahl der Objekte auf und verringere sie so.

I Es kann irgendwann leicht entschieden werden, ob ein Objektgewahlt wird oder nicht.

Naturlich muß die Gewichtsschranke auch immer verringert werden!

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Divide & Conquer Algorithmus

Gegeben sei eine kKP-Eingabe mit n, k, U.KKP DIVIDE CONQUER(n, k, U)

1. Teile die Objekte in zwei etwa gleichgroße Mengen n1 und n2.

2. Benutze den dynamischen Algorithmus zum Berechnensamtlicher Losungenv(n1, k

′, u) und v(n2, k′, u), u = 0, . . . ,U, k ′ = 0, . . . , k

3. Berechne optimale Losung v(n, k,U) und suche aus denberechneten Losungen eine Losung mit u1 + u2 = U,k1 + k2 = k und v(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U)

4. Wenn n1 oder n2 nur noch aus einem Objekt bestehen, prufeob sie in eine optimale Losung passen und fuge sie hinzu

5. Sonst rufe KKP DIVIDE CONQUER(n1, k1, u1),KKP DIVIDE CONQUER(n2, k2, u2) auf

Bemerkungen

I Das Berechnen der Profitwerte v(n, k,U) geht in Zeit O(nkU)und benotigt O(n + kU) Speicherplatz.

I Falls n nur aus einem Objekt besteht, kann leicht festgestelltwerden, ob es zur optimalen Losung gehort.

I Eine Einteilung, fur die u1 + u2 = U, k1 + k2 = k undv(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U) gilt, existiert.

Bemerkungen

I Das Berechnen der Profitwerte v(n, k,U) geht in Zeit O(nkU)und benotigt O(n + kU) Speicherplatz.

I Falls n nur aus einem Objekt besteht, kann leicht festgestelltwerden, ob es zur optimalen Losung gehort.

I Eine Einteilung, fur die u1 + u2 = U, k1 + k2 = k undv(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U) gilt, existiert.

Bemerkungen

I Das Berechnen der Profitwerte v(n, k,U) geht in Zeit O(nkU)und benotigt O(n + kU) Speicherplatz.

I Falls n nur aus einem Objekt besteht, kann leicht festgestelltwerden, ob es zur optimalen Losung gehort.

I Eine Einteilung, fur die u1 + u2 = U, k1 + k2 = k undv(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U) gilt, existiert.

Bemerkungen

I Das Berechnen der Profitwerte v(n, k,U) geht in Zeit O(nkU)und benotigt O(n + kU) Speicherplatz.

I Falls n nur aus einem Objekt besteht, kann leicht festgestelltwerden, ob es zur optimalen Losung gehort.

I Eine Einteilung, fur die u1 + u2 = U, k1 + k2 = k undv(n1, k1, u1) + v(n2, k2, u2) = v(n, k,U) gilt, existiert.

Divide & Conquer Laufzeitanalyse

Ohne rekursive Aufrufe betragt die Laufzeit O(nkU).

In jedem Level sind die gesamten Kosten durch U beschrankt.In Level ` gibt es durch die halbierung der Objektanzahl in derRekursion nur etwa |n|

2` Objekte.Addition uber jede Ebene im Rekursionsbaum ergibt:

log n∑i=1

|n|2`· k · U ≤ 2nkU

Divide & Conquer Laufzeitanalyse

Ohne rekursive Aufrufe betragt die Laufzeit O(nkU).In jedem Level sind die gesamten Kosten durch U beschrankt.

In Level ` gibt es durch die halbierung der Objektanzahl in derRekursion nur etwa |n|

2` Objekte.Addition uber jede Ebene im Rekursionsbaum ergibt:

log n∑i=1

|n|2`· k · U ≤ 2nkU

Divide & Conquer Laufzeitanalyse

Ohne rekursive Aufrufe betragt die Laufzeit O(nkU).In jedem Level sind die gesamten Kosten durch U beschrankt.In Level ` gibt es durch die halbierung der Objektanzahl in derRekursion nur etwa |n|

2` Objekte.

Addition uber jede Ebene im Rekursionsbaum ergibt:

log n∑i=1

|n|2`· k · U ≤ 2nkU

Divide & Conquer Laufzeitanalyse

Ohne rekursive Aufrufe betragt die Laufzeit O(nkU).In jedem Level sind die gesamten Kosten durch U beschrankt.In Level ` gibt es durch die halbierung der Objektanzahl in derRekursion nur etwa |n|

2` Objekte.Addition uber jede Ebene im Rekursionsbaum ergibt:

log n∑i=1

|n|2`· k · U ≤ 2nkU