„Rendszeroptimalizálás, 17. tétel” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
1. sor: | 1. sor: | ||
==Polinomiális approximációs séma a RÉSZÖSSZEG problémára== | |||
== | |||
===Polinomiális approximációs séma=== | ===Polinomiális approximációs séma=== | ||
*Def.*: egy probléma polinomiális approximációs sémával közelíthető, ha ∀ε>0-ra van rá (1+ε)-approximáció. | *Def.*: egy probléma polinomiális approximációs sémával közelíthető, ha ∀ε>0-ra van rá (1+ε)-approximáció. | ||
Ez nem mindig elég, mert ha a közelítő algoritmus lépésszáma 2<sup>1/ε</sup>n<sup>4</sup>, még mindig exponenciálisan hosszú ideig fut. <br> | Ez nem mindig elég, mert ha a közelítő algoritmus lépésszáma 2<sup>1/ε</sup>n<sup>4</sup>, még mindig exponenciálisan hosszú ideig fut. <br> | ||
16. sor: | 7. sor: | ||
===Részösszeg probléma=== | ===Részösszeg probléma=== | ||
Adott _A_ = {<i>a</i><sub>1</sub>, <i>a</i><sub>2</sub>, ..., <i>a<sub>n</sub></i>} és _t_. <br> | Adott _A_ = {<i>a</i><sub>1</sub>, <i>a</i><sub>2</sub>, ..., <i>a<sub>n</sub></i>} és _t_. <br> | ||
Kérdés: létezik-e <i>B</i>⊆<i>A</i> úgy, hogy Σ<i>b<sub>i</sub></i> = _t_? <br> | Kérdés: létezik-e <i>B</i>⊆<i>A</i> úgy, hogy Σ<i>b<sub>i</sub></i> = _t_? <br> | ||
22. sor: | 12. sor: | ||
===Részösszeg optimalizálási probléma=== | ===Részösszeg optimalizálási probléma=== | ||
Adott _A_ = {<i>a</i><sub>1</sub>, <i>a</i><sub>2</sub>, ..., <i>a<sub>n</sub></i>} és _t_. <br> | Adott _A_ = {<i>a</i><sub>1</sub>, <i>a</i><sub>2</sub>, ..., <i>a<sub>n</sub></i>} és _t_. <br> | ||
Keressük <i>B</i>⊆<i>A</i>-t úgy, hogy Σ<i>b<sub>i</sub></i> maximális és Σ<i>b<sub>i</sub></i> ≤ _t_ legyen. <br> | Keressük <i>B</i>⊆<i>A</i>-t úgy, hogy Σ<i>b<sub>i</sub></i> maximális és Σ<i>b<sub>i</sub></i> ≤ _t_ legyen. <br> | ||
29. sor: | 18. sor: | ||
===Közelítő algoritmus a részösszeg optimalizálási problémára=== | ===Közelítő algoritmus a részösszeg optimalizálási problémára=== | ||
*Tétel*: a probléma teljesen polinomiális sémával közelíthető. | *Tétel*: a probléma teljesen polinomiális sémával közelíthető. | ||
87. sor: | 75. sor: | ||
-- [[PallosPeter|Peti]] - 2006.12.18. | -- [[PallosPeter|Peti]] - 2006.12.18. | ||
[[Category:InfoMsc]] | |||
[[Category: |
A lap 2013. október 16., 13:43-kori változata
Polinomiális approximációs séma a RÉSZÖSSZEG problémára
Polinomiális approximációs séma
- Def.*: egy probléma polinomiális approximációs sémával közelíthető, ha ∀ε>0-ra van rá (1+ε)-approximáció.
Ez nem mindig elég, mert ha a közelítő algoritmus lépésszáma 21/εn4, még mindig exponenciálisan hosszú ideig fut.
- Def.*: egy probléma teljesen polinomiális approximációs sémával közelíthető, ha ∀ε>0-ra van rá (1+ε)-approximáció, ami 1/ε-ban is polinomiális.
- Pl.*: a metrikus utazó ügynök problémára nincs P approximációs séma, de az euklideszi utazó ügynök problémára van teljesen P approximációs séma.
Részösszeg probléma
Adott _A_ = {a1, a2, ..., an} és _t_.
Kérdés: létezik-e B⊆A úgy, hogy Σbi = _t_?
Speciális eset: partíció probléma, amikor _t_ = Σai/2, még ez is NP-teljes.
Részösszeg optimalizálási probléma
Adott _A_ = {a1, a2, ..., an} és _t_.
Keressük B⊆A-t úgy, hogy Σbi maximális és Σbi ≤ _t_ legyen.
A feladat NP nehéz, mert a részösszeg probléma visszavezethető rá. Bizonyítás: ha találunk olyan a _B_ halmazt, amire Σbi = _t_, akkor igen a válasz a részösszeg problémára, különben nem.
A feladat nem NP-beli, mert nem eldöntési probléma, tehát nem is NP-teljes.
Közelítő algoritmus a részösszeg optimalizálási problémára
- Tétel*: a probléma teljesen polinomiális sémával közelíthető.
A bizonyítás egy konkrét algoritmus lesz:
- Pontos megoldást adó algoritmus:
Tegyük fel, hogy a1 ≤ a2 ≤ ... ≤ an.
Definiálunk két halmazsorozatot:
- L0 = {0}
- Li' = {l+ai | l∈Li}
- Li+1 = Li ∪ Li'
- a1=3, a2=5, a3=7
- L0 = {0}
- L0' = {3}, L1 = {0,3}
- L1' = {5,8}, L2 = {0,3,5,8}
- L2' = {7,10,12,15}, L3 = {0,3,5,7,8,10,12,15}
- Polinomiális közelítő algoritmus:
Egyrészt vegyük észre, hogy az Li' halmazokból nincs szükségünk a t-nél nagyobb elemekre. Képezzük a halmazokat a következő módon: Li' = (Li+ai) ∩ [0..t].
Def.: δ-val ritkítás
<i>L</i> növekvő sorrendbe rendezett halmaz. foreach (l'''∈L''') { ''m'' az ''l''-et megelőző, halmazban hagyott elem, vagy ha nincs ilyen, 0. if (''l''lt;m(1+''δ'')) ''l''-et kidobjuk. }
A ritkítás után bármely két szomszédos elem hányadosa legalább 1+δ. A ritkított halmaz mérete felülről becsülhető: |Lritkított ≤ log1+δt+2.
- *Tétel*: ha az algoritmus során a halmazok t-nél nagyobb elemeit minden lépésben levágjuk és az eredményt δ=ε/2n-vel ritkítjuk, (1+ε)-approximációt kapunk a problémára, és a lépésszám n-ben, log t-ben és 1/ε-ban is polinomiális lesz.
- Biz.*: az algoritmus (1+ε)-approximációs. %P%
- Biz.*: az algoritmus lépésszáma mindhárom mennyiség szerint polinomiális.
-- Peti - 2006.12.18.