{{Sources| Ze zápisků k zkoušce z ZSV

09/10, 14/15: Aproximacní algoritmy a schémata.

}}

Aproximační algoritmy - definice a příklad (6×🎓)

{{Zkazky|

  • Aproximacní algoritmy (2015) - Definice, chtel pomerovou i relativni chybu. Ukazal jsem algoritmus pro BIN PACKING, ktery je nejhure 2x horsi nez optimalni algoritmus. Pak definice aproximacniho schematu, polynomialniho apr. sch. i uplnepolynomialniho apr. schematu. Byl jsem dotazan, zda znam nejake schema (Batoh podle poznmek pana Kucery) a jake schema to je (uplne polynomialni nebo jen polynomialni).

  • Aproximacni schemata (2014, konzultace) - definice Aproximační algoritmy a schémata a jejich souvislost s pseudopolynom. algoritmy, příklad schémata pro batoh nebo soucet podmnozin

  • Aproximacni schemata (2014, Kučera) - definicia optimalizacnej ulohy, definicia aproximacneho algoritmu, aproximacneho pomeru, aproximacneho schema, PAS a UPAS, - schema pre BATOH

  • Aproximacne alg a schemy (2009, Fiala) - Pripraveny papier posluzil na prvu minutu, kedy si to skusajuci precital. Mal som tam plus minus vsetko. Este sa opytal preco nemozem TSP aproximovat s lubovolne malou chybou (v nejakom rozumnom case). Nevedel som , tak mi pomohol otazkou: Co sa stane, ak mi niekto da graf na 100 vrcholoch a povoli chybu pod 1%? Musel by som najst optimalne riesenie. Velmi rychla odpoved.

  • Aproximacne algoritmy (2009, Loebl?) - Pripravil som si 2 a4 s definiciami AA, pom. rel. chyba, AS, PAS, UPAS. Nakoniec som dal priklad vrch.pokrytie s dokazom ze pom.chyba je 2. Skusajuci to asi za 5s preletel ocami a spytal sa ci viem zlozitejsi algortimus, na co som odpovedal ze nie a on ze ok a koniec. Odhad:2

  • Aproximační algoritmy a schémata (2009, Majerech) - Definice AA, poměrová a relativní chyba, AS, PAS, ÚPAS, ÚPAS pro SP (pozor na písmena v popisu PROŘEŽ (1-d)z < y < z), AA pro TSP

  • Pseudopolynomiální algoritmy a aproximační schémata (2008, Trpělivý teoretik) - Napsal jsem špatnou definici pseudopolynomiálních algoritmů, aproximací, AS, a ÚPAS. Na dotaz jestli znám nějaké AS jsem zmínil UPAS pro SP, a to že patrně obsahuje nějakou proceduru co cosi prořezává. Posléze se mi podařilo přijít na správnou definici pseudopolynomiálních algoritmů, a to jak by zhruba měl vypadat pseudopolynomiální algoritmus pro problém batohu. Tou dobou ale už všichni ze zkoušky odešli tak mě nechal jít :-)

}} Optimalizační úloha A je buď maximalizační nebo minimalizační a skládá se z těchto tří částí:

  1. Množina instancí DA ⊆ {0, 1}*

  2. Množina přípustných řešení SA(I) ⊆ {0, 1}* , ∀I DA

  3. Hodnota řešení σ je fce μA(I, σ)'' '', která ∀I DA a ∀přípustnému řešení σ ∈ SA(I) přiřadí kladné racionální číslo μA(I, σ)

  • Optimální řešení σSA(I), pro něž je μA(I, σ) maximální (pro maximalizační úlohu A) nebo minimální (pro minimalizační A)

    • 💡 tj. pro maximalizační: μA(I, σ) = max{ μA(I, σ) | σ ∈ SA(I) }

    • 💡 tj. pro minimalizační: μA(I, σ) = min{ μA(I, σ) | σ ∈ SA(I) }

    • OPTA(I) je hodnota optimálního řešení instance IDA

      • 💡 tj. OPTA(I) = μA(I, σ), kde σ je optimální řešení intance I

  • ALG je aproximačním algoritmem pro optimalizační úlohu A, pokud ∀vstup I DA vrátí řešení σ ∈ SA(I)

    • 💡 pro SA(I) = ∅ ohlásí že přípustné řešení neexistuje

  • ALG(I) je hodnota řešení ALG na instanci I DA

    • 💡 v tj. ALG(I) = μA(I, σ), kde σ ∈ SA(I) je přípustné řešení vrácené algoritmem ALG

  • Aproximační poměr ε ≥ 1 algoritmu ALG pokud ∀I DA platí: <math>ε ≥ max\left\{ \frac{OPT(I)}{ALG(I)}, \frac{ALG(I)}{OPT(I)} \right\}</math>

    • tj. OPT(I) ≤ ε·ALG(I) (maximalizační úlohy)

    • ALG(I) ≤ ε·OPT(I) (minimalizační úlohy)

    • 💡 nekdy se nazývá také poměrová chyba a značí se ρ(n)

  • <math>\text{"relativní chyba"} ≥ \frac{|ALG(I)-OPT(I)|}{OPT(I)}</math>

Příklad aproximačního algoritmu pro Bin Packing

Bin Packing – BP, úloha
  • Instance : Konečná množina předmětů U = {u₁, .., uₙ}, s každým předmětem asociovaná velikost 0 ≤ s(u) ≤ 1, což je racionální číslo.

  • Cíl : Najít rozdělení všech předmětů do co nejmenšího počtu po dvou disjunktních množin U₁, .., Uₘ takové, že každá množina může mít velikost max 1.

💡 Naším cílem je tedy minimalizovat m.

Algoritmus (First Fit pro Bin Packing – FF-BP - 💡 zřejmě polynomiální)
  • Ber jeden předmět po druhém,

    • ∀ předmět u najdi první koš, do nějž se tento předmět ještě vejde,

    • pokud takový koš neexistuje, přidej nový koš obsahující jen předmět u

{{theorem

| ∀ instanci IDBP platí, že FF-BP(I) <2·OPT<sub>BP | Aproximační poměr FF-BP je 2 - tj. max 2x horší než optimum

}} {{collapse|Dk:|2=

V řešení, které vrátí <math>FF-BP</math> je nejvýš jeden koš, který je zaplněn nejvýš z poloviny. Kdyby totiž existovaly dva koše <math>U_i</math> a <math>U_j</math> pro <math>i <j</math>, které jsou zaplněny nejvýš z poloviny, tak by <math>FF-BP</math> nepotřeboval zakládat nový koš pro předměty z <math>U_j</math>, všechny by se vešly do <math>U_i</math>.

Pokud <math>FF-BP(I) > 1</math>, pak z toho plyne, že: <math>FF-BP(I) <⌈2 Σ_{i = 1}^n s(u_i)⌉ ≤ 2⌈Σ_{i = 1}^n s(u_i)⌉</math>, kde první nerovnost plyne z toho, že po zdvojnásobení obsahu jsou všechny koše plné až na jeden, který může být zaplněn jen částečně.

Rovnosti bychom přitom dosáhli jedině ve chvíli, kdy by byly všechny koše zaplněné právě z poloviny, což není podle našeho předpokladu možné.

Druhá nerovnost plyne z vlastností zaokrouhlování.

Na druhou stranu musí platit, že <math>OPT(I) ≥ ⌈Σ_{i = 1}^n s(u_i)⌉</math>.

Dohromady tedy dostaneme, že <math>FF-BP(I) <2.OPT(I)</math>. Pokud <math>FF-BP(I) = 1</math>, pak i <math>OPT(I) = 1</math> a i v tomto případě platí ostrá nerovnost.

}}

Aproximační schémata (🎓)

ALG(I, ε) je aproximačním schématem pro úlohu A, pokud pro I DA a racionální číslo ε > 0 vydá řešení σ ∈ SA(I), jehož hodnota se od optimální liší s aproximačním poměrem <math> (1 + ε) ≥ max\left\{ \frac{OPT(I)}{ALG(I, ε)}, \frac{ALG(I, ε)}{OPT(I)} \right\}</math>

  • Tj. pro maximalizační úlohu platí, že: OPT(I) ≤ (1 + ε) ALG(I, ε)

  • a pro minimalizační úlohu platí, že: ALG(I, ε) ≤ (1 + ε) OPT(I)

ALG'''ε''' je instance algoritmu ALG se zafixovanou ε

  • ALG je polynomiální aproximační schéma (PAS), pokud ALGε má časovou složitost polynomiální v len(I) (💡 tj. délce vstupu n, ∀ε)

  • ALG je úplně polynomiální aproximační schéma (ÚPAS), pokud ALG má časovou složitost polynomiální v len(I) a 1/ϵ

    • 💡 tj. PAS může mít 1/ϵ v exponentu čas.složitosti (např. O(n1/ϵ)) ale ÚPAS nesmí

u BAPX to ani není nutné

Příklad ÚPAS pro Batoh - BAPX
  • Vstup: Velikost batohu B, pole 0 <s[1..n] ≤ B velikostí předmětů a pole v[1..n] cen předmětů, racionální číslo ε > 0.

  • Otázka: Množina M předmětů, jejichž souhrnná velikost nepřesahuje B, maximalizujeme celkovou cenu.

BAPX(s, v, B, ε)

  1. urči v[m] největší cenu

  2. if (1 + ε ≥ n) return {m} <font color="grey"> //nemá cenu pokračovat, zaokrouhlili bysme moc</font>

  3. t = ⌊log₂( ε·v[m] / n )⌋ - 1

  4. c je nové pole délky n

  5. for (i = 1; in; i++) c[i] = ⌊v[i] / 2ᵗ⌋

  6. return Batoh(s, c, B) <font color="grey"> //volání původního pseudopolynomiálního algoritmu iterující přes V = Σv</font>

💡 není nutné znát všechny logaritmy v algoritmu, jenom nějak stručně vysvětlit myšlenku

💡 snažíme se omezit celkovou cenu V = Σv, algoritmus přeškáluje (normalizuje) ceny předmětů pomocí ε a v[m] a zaokrouhlí na ⌊⌋

💡 Předpokládáme, že (∀i ∈ {1, ..., n}) [0 < s[i] ≤ B]

  • Schéma BAPX pracuje v čase O(n³ / ε)

{{Statnice I2}}