Az online algoritmusok k-szerver probléma Bittner Emese, Imreh Csanád, Nagy-György Judit Szegedi Tudományegyetem Online algoritmusok Online problémáról beszélünk azokban az esetekben, ahol nem ismert az egész input, hanem az algoritmus az inputot részenként kapja meg, és a döntéseit a megkapott részletek alapján a további részekre vonatkozó információk nélkül kell meghoznia. Az algoritmusok hatékonyságát általában a versenyképességi analízis alapján mérik (a másik használt elemzési módszer az átlagos eset analízis). Optimalizálási feladatok esetén minden I inputra OPT (I) jelöli az optimális megoldás célfüggvényértékét és egy A algoritmusra A(I) jelöli az algoritmus által az A inputon felvett célfüggvényértéket. Minimalizálási feladatok esetén egy online A algoritmusra azt mondjuk C-versenyképes, ha minden I inputra teljesül A(I) C OPT (I). Gyakran a definícióban megengednek egy inputtól független D additiv konstanst, azaz az A(I) C OPT (I) + D egyenlőtlenségnek kell teljesülnie minden inputra, ekkor enyhe versenyképességről beszélünk. Egy algoritmus versenyképességi hányadosának a legkisebb C számot nevezzük, amire C-versenyképes. Szórakozott professzor Adott egy parkoló, ahol egy professzor a kocsiját tartja. A parkolóhelyeket egy n és n közötti egész szám azonosítja, az azonosító szerint helyezkednek el balról jobbra. (Az egyszerűbb számolás érdekében tegyük fel, hogy 0-ás parkolóhely nincs.) A professzor kijön az egyetemről az 1 és 1 parkolóhelyek között. Nem tudja hol parkol, és meg akarja keresni a kocsiját. Normális algoritmus: Kipróbáljuk a pozitív irányt, elmegyünk a kocsiig vagy a parkoló végéig, és ha nem találjuk meg a kocsit, akkor visszafordulunk és kipróbáljuk a másik oldalt. A legrosszabb input a n, amelyre az algoritmus költsége 3n, az optimális költség n, így a versenyképességnél számolt hányados 3. Normális algoritmus: Kipróbáljuk a pozitív irányt, elmegyünk a kocsiig vagy a parkoló végéig, és ha nem találjuk meg a kocsit, akkor visszafordulunk és kipróbáljuk a másik oldalt. A legrosszabb input a n, amelyre az algoritmus költsége 3n, az optimális költség n, így a versenyképességnél számolt hányados 3. 1
Az algoritmus nem 3-versenyképes, mivel ez a klasszikus értelemben vett legrosszabb eset. Versenyképesség szempontjából a legrosszabb eset a 1, hiszen ott az algoritmus költsége 2n + 1 az optimális költség 1 és a hányados 2n + 1 A következő gondolat, hogy a i-dik fázisban elmegyünk jobbra az i-edik helyig, majd onnan, ha nem találjuk a kocsit balra a i-edik helyig. Ez az algoritmus sem konstans versenyképes, hiszen ha a kocsi a n helyen áll, akkor az optimális költség n az algoritmus költsége 4 n 1 i=1 i + 3n = n(2n + 1). Ezt követően adódik a gondolat, hogy kevesebb irányváltoztatással keressük a kocsit. Az i-dik fázisban elmegyünk jobbra az 2 i -edik helyig, majd onnan, ha nem találjuk a kocsit balra az 2 i -edik helyig. Erről az algoritmusról már belátható, hogy konstans-versenyképes. Tegyük fel, hogy a kocsi a k helyen van. Legyen i olyan kitevő, amelyre 2 i < k 2 i+1. Ekkor az algoritmus által megtett lépések száma kisebb, mint 4 i+1 j=0 2 j < 4 2 i+2 16 k, azaz az algoritmus valóban konstans versenyképes. k-szerver probléma Egy (M,d) párost, ahol M a metrikus tér pontjait tartalmazza, d pedig az M M halmazon értelmezett távolságfüggvény metrikus térnek nevezünk, ha a távolságfüggvényre teljesülnek az alábbi tulajdonságok d(x,y) 0 minden x,y M esetén, d(x,y) = d(y,x) minden x,y M esetén, d(x,y) + d(y,z) d(x,z) minden x,y,z M esetén, d(x,y) = 0 akkor és csak akkor teljesül, ha x = y. A k-szerver problémában adott egy metrikus tér, és van k darab szerverünk, amelyek a térben mozoghatnak. A probléma során a tér pontjaiból álló kérések egy listáját kell kiszolgálni azáltal, hogy a megfelelő kérések helyére odaküldünk egy-egy szervert. A probléma on-line, ami azt jelenti, hogy a kéréseket egyenként kapjuk meg, és az egyes kéréseket a további kérések ismerete nélkül azok érkezése előtt kell kiszolgálnunk. A cél a szerverek által megtett össztávolság minimalizálása. Lapozás mint speciális eset A lapozási probléma a számítógépek gyorsmemóriájának a kezelését modellezi. Adott lapok egy univerzuma, és ebből vett lapok egy sorozata az input. Az algoritmusnak egy k lap kapacítású gyorsmemóriát kell kezelnie. Ha az aktuálisan igényelt lap nincs a memóriában, akkor a lapot az algoritmusnak be kell tennie és ehhez, amennyiben már nincs hely, valamely lapot ki kell raknia. Ezt az eseményt, amikor egy igényelt lap nincs a memóriában hibának hívjuk, és a cél a hibák számának minimalizálása. Ha az univerzum a metrikus tér és a memória celláit a szervereknek feleltetjük meg (egy szerver azon a ponton van, amely lapot a cella tartalmazza), akkor egy k-szerver feladatot kapunk. A metrikus térben bármely két pont távolsága 1. Az ilyen tereket uniform térnek nevezzük. következmény: Uniform tereken vannak k-versenyképes algoritmusok, és nincsen olyan algoritmus, amely versenyképe hányadosa kisebb, mint k. Mohó algoritmus Természetes gondolat a kéréseket mindig a legközelebbi szerverrel kiszolgálni. Lemma A mohó algoritmus nem konstans versenyképes. 2
1. ábra. Munkafüggvény algoritmus Azt a metrikus tér pontjaiból álló multihalmazt, amely megadja mely pontokban helyezkednek el a szerverek (azért kell multihalmazokat használnunk, mert egy pontban több szerver is lehet) a szerverek konfigurációjának nevezzük. Legyen A 0 az on-line szerverek kezdeti konfigurációja. Ekkor a t-edik kérés utáni X multihalmazra vonatkozó munkafüggvény w t (X) a minimális költség, amellyel kiszolgálható az első t kérés az A 0 konfigurációból kiindulva úgy, hogy a szerverek az X konfigurációba kerüljenek a kiszolgálás végén. A munkafüggvény algoritmus a munkafüggvényt használja. Legyen A t 1 a szervereknek a konfigurációja közvetlenül a t-edik kérés érkezése előtt. Ekkor a munkafüggvény algoritmus azzal az s szerverrel szolgálja ki az R t pontban megjelent kérést, amelynek a P helyére a w t 1 (A t 1 \ P R t ) + d(p,r t ) érték a minimális. Példa Tekintsük azt a metrikus teret, amelyben három pont van A, B és C, a távolságok d(a,b) = 1, d(b,c) = 2, d(a,c) = 3. A kezdeti szerver konfiguráció legyen A,B. Ekkor a kezdeti munkafüggvények w 0 ({A,A}) = 1, w 0 ({A,B}) = 0, w 0 ({A,C}) = 2, w 0 ({B,B}) = 1, w 0 ({B,C}) = 3, w 0 ({C,C}) = 4. Legyen az első kérés a C pontban. Ekkor w 0 ({A,B} \ {A} {C}) + d(a,c) = 3 + 3 = 5 és w 0 ({A,B} \ {B} {C}) + d(b,c) = 2 + 2 = 4, így a MUNKAFÜGGVÉNY algoritmus a B pontban levő szerver küldi a kérés kiszolgálására. Tétel A MUNKAFÜGGVÉNY algoritmus enyhén (2k 1)-versenyképes. (Koutsoupias and Papadimitriou 1995) Sejtés A MUNKAFÜGGVÉNY algoritmus enyhén k-versenyképes. Dupla lefedő algoritmus Egy gyakran vizsgált speciális tér az egyenes. Az egyenes pontjait a valós számoknak feleltetjük meg, és két pontnak a-nak és b-nek a távolsága a b. Erre az esetre, ahol a metrikus tér egy egyenes, Chrobak és Larmore (1990) kifejlesztett egy k-versenyképes algoritmust, amelyet dupla lefedő algoritmusnak nevezünk. Az algoritmus a P kérést a P-hez legközelebb eső s szerverrel szolgálja ki, és amennyiben vannak szerverek P-nek az s-el átellenes oldalán is, akkor azon szerverek közül a P-hez legközelebbit d(s, P) egységnyit mozdítja P felé. A továbbiakban a dupla lefedő algoritmust DL-el jelöljük. 3
Tétel A DL algoritmus enyhén k-versenyképes ha a metrikus tér egy egyenes. Példa 0 2 6 0 3 5 0 3 1 2 0 2 2. ábra. Fa metrikus tér Az egyenes általánosításaként kaphatjuk a fa metrikus teret. vegyünk egy tetszőleges súlyozott fát. A metrikus tér pontjai a fa csúcsai továbbá minden élhez és minden 0 < λ < 1 számhoz definiáljuk az élet λ és 1 λ arányban felosztó pontokat. Mivel a fa körmentes ezért bármely két pont között egyetlen út vezet. A két pont közötti távolság a közöttük vezető út hossza. Az élek belső pontjai esetén az él hosszának a felosztásnak megfelelő részét vesszük figyelmebe. Azt mondjuk, hogy egy szerver lát egy pontot, ha a közte és a pont között levő úton nincs másik szerver. Lefedő algoritmus Az algoritmus egy kérést úgy szolgál ki, hogy minden szervert, ami látja a kérés helyét egyenletes sebességgel mozgat a szerver felé. (A kérést látó szerverek halmaza változik a szerverek mozgatása során.) tétel A lefedő algoritmus enyhén k-versenyképes, ha a metrikus tér egy fa. 3. ábra. Visszautasításos online problémák 4
A visszautasításos modellekben az egyes inputrészeknek van egy büntetés értéke is. Az algoritmus visszautasíthatja az egyes részeket a végrehajtásuk helyett, de ekkor ki kell fizetnie a büntetést. Az elfogadott feladatrészekre adott megoldáson vett értékét a célfüggvénynek növeljük a kifizetett büntetésekkel. Bartal et al 00, Seiden 01, Imreh, Németh 09: Visszautasításos ütemezés Dósa, He 06, Nagy-György, Imreh 0: Visszautasításos ütemezés gépköltségekkel Dósa, He 06, Epstein 08: Visszautasításos ládapakolás Epstein et al 08: Visszautasításos gráfszínezés Epstein et al 11: Visszautasításos memóriakezelés Bittner et al 12: Visszautasításos k-szerver feladat Jaillet, Lu 13: Visszautasításos utazó ügynök T HR Algoritmus Uniform terek Minden ponthoz egy számlálót rendelünk 0 kezdeti értékkel. (i) Növeljük a kért pont számlálóját a kérés büntetésével. Ha a számláló értéke eléri az 1-et jelöljük meg a pontot. Amikor a k + 1-dik pont is jelölté válik, akkor töröljük az összes jelölést (az újonnan kért pontét is). Az új pont számlálója csökkenjen 1-el, a többiekét állítsuk 0-ra. (ii) Ha a kérést lefedi egy szerver, akkor nem mozgatunk szervert. Ha a kért pont jelöletlen és nincs rajta szerver, akkor visszautasítjuk. (iii) Ha a kért pont jelölt és nincs rajta szerver, akkor a legrégebben mozgatott szervert küldjük oda a kiszolgálására. Tétel A THR algoritmus (2k + 1)-versenyképes a visszautasításos k-szerver problémára. A MUNKAFÜGGVÉNY algoritmus A MUNKAFÜGGVÉNY algoritmus kiterjeszthető a visszautasításos modellre. A munkafüggvény definíciójában az optimális kiszolgálás költségénél figyelembe kell venni azt is, hogy lehetséges az egyes kérések visszautasítása. Továbbá az aktuális kérésnél is figyelmbe kell venni azt a lehetőséget, hogy nem mozdítunk szervert, hanem visszautasítjuk a kérést. Tétel A MUNKAFÜGGVÉNY algoritmus enyhén 4k 1-versenyképes a visszautasításos k-szerver feladatra. Tétel A MUNKAFÜGGVÉNY algoritmus enyhén 5-versenyképes a visszautasításos k-szerver feladatra, ha k = 2. Tétel A MUNKAFÜGGVÉNY algoritmus enyhén 2k + 1-versenyképes a visszautasításos k-szerver feladatra, ha a metrikus tér az egyenes. Tétel A MUNKAFÜGGVÉNY algoritmus enyhén 2k + 1-versenyképes a visszautasításos k-szerver feladatra, ha a metrikus tér pontosan k + 1 pontot tartalmaz. Egy memóriamentes algoritmus EDC algoritmus Az algoritmus egy r i kérést a következőképpen szolgál ki. 5
(i) Vegyük az r i -hez legközelebbi szerver, jelölje az r i -től vett távolságát d. (ii) Ha d p i /2 akkor az algoritmus kiszolgálja a kérést a legközelebbi szerverrel, továbbá ha van szerver a kérés másik oldalán is, akkor azok közül a legközelebbi is d távolságot mozog a kérés felé. (iii) Ha d > p i /2, akkor a kérést visszautasítjuk, és a legközelebbi szerver mozog p i /2 távolságot a kérés felé. Továbbá ha van szerver a kérés másik oldalán is, akkor azok közül a legközelebbi is p i /2 távolságot mozog a kérés felé. Tétel Az EDC algoritmus 3k-versenyképes. Bizonyítás Vegyünk egy tetszőleges sorozatát a kéréseknek, jelölje ezt az inputot I. Az eljárás elemzése során feltételezzük, hogy párhuzamosan fut a EDC algoritmus és egy optimális off-line algoritmus OPT. Szintén feltesszük, hogy minden kérést elsőként az off-line algoritmus szolgál ki, utána pedig az on-line algoritmus. Az on-line algoritmus szervereit és egyben a szerverek pozícióit, (amelyek valós számok az egyenesen) s 1,...,s k jelöli, az optimális off-line algoritmus szervereit és egyben a szerverek pozícióit x 1,...,x k jelöli. Mivel a szerverek rendszeres átjelölésével ez elérhető feltételezzük, hogy s 1 s 2 s k és x 1 x 2 x k mindig teljesül. A tétel állítását a potenciálfüggvény technikájával igazoljuk. A potenciálfüggvény a szerverek aktuális pozíciójához rendel egy értéket, az on-line és az off-line költségeket a potenciálfüggvény változásainak alapján hasonlítjuk össze. Legyen a potenciálfüggvény Φ = k k i=1 x i s i + (s j s i ). i< j Legyen a potenciálfüggvény értéke Φ i az i-edik kérés kiszolgálása után. És legyen EDC i és OPT i az i-edik kérés kiszolgálásának a költsége az EDC és OPT algoritmusoknál. Igazoljuk, hogy Φ i Φ i 1 k OPT i 1/3 EDC i. OPT kiszolgálja a kérést és EDC csak 1 szervert mozgat. Feltehetjük, hogy a kérés kisebb, mint s 1. Elsőként OPT szolgálja ki és OPT i -t mozog. Ezzel Φ első része legfeljebb k OPT i -vel nő, a második nem változik. Legyen δ = min{d(r i,s 1 ), p i /2}. Ekkor EDC szervere δ távolságot mozog. Ha δ = d(r i,s 1 ) p i /2, akkor eléri a kérést, majd kiszolgálja, és ekkor EDC i = δ. Ha δ = p i /2 < d(r i,s 1 ), akkor EDC nem éri el, így kifizeti a büntetést is, ami 2δ, tehát ekkor EDC i = 3δ. Φ első részében x 1 s 1 csökken δ-val, a második részben az s j s 1 értékek növekednek δ-val. Tehát Φ i Φ i 1 k OPT i k δ + (k 1)δ = k OPT i δ k OPT i 1/3 EDC i. OPT visszautasítja a kérést és EDC csak 1 szervert mozgat. Ismét feltehetjük, hogy a kérés kisebb, mint s 1. OPT visszautasítja a kérést így a költsége p i és Φ nem változik OPT lépése alatt. Legyen δ = min{d(s 1,r i ), p i /2}. Ekkor EDC szervere δ távolságot megy. Ha δ = d p i /2, akkor eléri a kérést, majd kiszolgálja és EDC i = δ. Ha δ = p i /2 < d(r i,s 1 ), akkor EDC nem éri el, így kifizeti a büntetést is, ami 2δ, tehát ekkor EDC i = 3δ. 6
Φ első részében x 1 s 1 csökken δ-val, a második részben az s j s 1 értékek növekednek δ-val. Tehát Φ i Φ i 1 k δ + (k 1)δ = 2k δ δ 2kp i /2 δ k OPT i 1/3 EDC i. OPT kiszolgálja a kérést és EDC két szervert mozgat. Ekkor EDC-nek van a kérés mindkét oldalán szervere, legyenek a legközelebbi s j és a másik oldalról a legközelebbi s j+1. Az offline mozgás növeli Φ első részét legfeljebb k OPT i -vel, a másik rész nem változik. EDC két szervert mozgat, mindkettőt δ = min{d(s j,r i ), p i /2} távolságot. Ha δ = d(s j,r i ) p i /2, akkor kiszolgálja a kérést és EDC i = 2δ. Egyébként büntetést is fizet, ami 2δ, így EDC i = 4δ. Φ első részében a j-dik és j + 1-dik tag változik. Mivel x l = r i valamely l-re, ezért az egyik tag csökken, így az első rész nem nő. Kiszámolható, hogy a második rész változása 2δ. Tehát Φ i Φ i 1 k OPT i 2 δ k OPT i 1/2 EDC i k OPT i 1/3 EDC i. OPT visszautasítja a kérést és EDC két szervert mozgat. Ekkor EDC-nek van a kérés mindkét oldalán szervere, legyenek a legközelebbi s j és a másik oldalról a legközelebbi s j+1. Az offline algoritmus lépése nem változtatja meg Φ-t. EDC két szervert mozgat, mindkettőt δ = min{d(s j,r i ), p i /2} távolságot. Ha δ p i /2, akkor kiszolgálja a kérést és EDC i = 2δ, egyébként büntetést is fizet, így EDC i = 4δ. Φ első részében a j-dik és j + 1-dik tag változhat mindkettő legfeljebb δ-val nő. Kiszámolható, hogy a második rész változása 2δ. Tehát Φ i Φ i 1 2k δ 2δ 2kp i /2 2δ k OPT i 1/2 EDC i k OPT i 1/3 EDC i. Alsó korlát Tétel Tetszőleges, legalább k + 1 pontot tartalmazó metrikus térre igaz, hogy nincs olyan online algoritmus a visszautasításos k-szerver problémára, amelynek kisebb a versenyképességi hányadosa, mint 2k + 1. Következmény A MUNKAFÜGGVÉNY algoritmus eléri a lehetséges legkisebb versenyké- pességi hányadost a visszautasításos 2-szerver problémára, továbbá tetszőleges k-ra, ha a metrikus tér k + 1 pontot tartalmaz vagy a metrikus tér az egyenes. Következmény A THR algoritmus eléri a lehetséges legkisebb versenyképességi hányadost a visszautasításos k-szerver problémára uniform terek esetén. Következmény Az EDC algoritmus eléri a lehetséges legkisebb versenyképességi hányadost az egyenesen a visszautasításos 1-szerver problémára.