cardinality constrained knapsack problemls11- · cardinality constrained knapsack problem...
TRANSCRIPT
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}
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