C.C. McGeoch, Toward an experimental method for algorithm simulation algorithm simulation = algoritmin testaus, experimental algorithmics testiparametrit, esim. tapauksen koko, erilaiset tietorakennevaihtoehdot, jne. design point, kokeessa kiinnitetty parametrien kombinaatio periaate: - tarkastelun kannalta epäolennaiset parametrit kiinnitetään - oleellisten parametrien arvoja varioidaan - parametrit, joiden merkitystä ei ymmärretä tai joita ei voida kontrolloida, satunnaistutetaan
esim. bin-packing ( lokerointiongelma, muuttolaatikon pakkausongelma ) - syötteenä n reaalilukua väliltä (0,1] - luvut on jaettava mahdollisimman pieneen määrään osajoukkoja siten, että kunkin osajoukon alkioiden summa on korkeintaan 1 - lukuisia approksimointialgoritmeja - first-fit (FF): numeroidaan luvut johonkin järjestykseen sijoitetaan luvut vuorollaan ensimmäiseen mahdolliseen lokeroon - first-fit-decreasing (FFD): sama kuin FF, mutta luvut on järjestetty laskevaan järjestykseen - best-fit (BF): sama kuin FF, mutta lokeroksi valitaan se, mihin jää vähiten tyhjää tilaa lisäyksen jälkeen - best-fit-decreasing (BFD): sama kuin BF, mutta luvut on järjestetty laskevaan järjestykseen - heuristiikkoja helppo keksiä lisää...
voidaan todistaa, että FF:n ja BF:n tulos on aina korkeintaan 1.7 OPT + 2 lokeroa, missä OPT on optimitulos voidaan todistaa, että FFD:n ja BFD:n tulos on aina korkeintaan 1.22 OPT + 4 lokeroa bin-packing ei kuulu luokkaan PTAS (ei voida tuottaa mielivaltaisen hyviä approksimaatioita polynomisessa ajassa) mikä tarkoittaa että... Tarkastellaan jotain optimointiongelmaa ja sen approksimointialgoritmia A. Jos kaikilla tapauksilla algoritmin tuottamalle arvolle C ja optimitulokselle OPT pätee C εopt, niin sanotaan, että algoritmin A suhteellinen virhe on ε.
Lause 1. FF:n suheellinen virhe on 2. Tod. Tarkastellaan bin packing -ongelman tapausta, jossa luvut ovat a 1,..., a n. Optimitulokselle OPT pätee siis OPT a 1 +... + a n. Oletetaan, että FF tarvitsee m lokeroa. Näistä (m 1) lokeroa on enemmän kuin puoliksi täynnä. (Muuten lokeroita tarvittaisiin vähemmän.) On siis (m 1) / 2 < a 1 +... + a n OPT m 1 < 2 OPT m 2 OPT
Lause 2. Bin packing -ongelmalle ei ole olemassa approksimointialgoritmia, jonka suhteellinen virhe olisi pienempi kuin 3/2 (paitsi jos P = NP). Tod. Jos tällainen approksimointialgoritmi olisi olemassa, niin voitaisiin ratkaista NP-täydellinen PARTITION-ongelma polynomisessa ajassa. (Olkoon annettuna joukko S lukuja. Voidaanko S jakaa kahteen osaan niin, että lukujen summa molemmissa joukoissa on sama.) Olkoon annettuna PARTITION-ongelman tapaus. Muodostetaan bin packing -ongelman tapaus PARTITION-ongelman luvuista ja asetetaan lokeron kooksi puolet kaikkien lukujen summasta. Jos alkuperäisellä PARTITION-ongelmalla on ratkaisu, niin bin packing ongelman optimitulos on 2. Toisaalta on helppoa sijoittaa luvut kolmeen lokeroon. Saadaan siis approksimointialgoritmi, jonka suhteellinen virhe on 3/2. Jos suhteellinen virhe pienenee, löytyy optimi 2. Jos siis olisi approksimointialgoritmi, jonka suhteellinen virhe on pienempi kuin 3/2, löytyisi optimi 2 ja samalla ratkeaisi alkuperäinen PARTITION-ongelma. Tämä on mahdollista vain jos P = NP.
Määr. Ongelma kuuluu luokkaan PTAS, jos kaikilla ε > 0 on olemassa tapauksen koon suhteen polynomisessa ajassa toimiva approksimointialgoritmi A ε jonka suhteellinen virhe (1 + ε ). Lauseen 2 perusteella bin packing ei kuulu luokkaan PTAS. Määr. Ongelma kuuluu luokkaan APTAS, jos kaikilla ε > 0 on olemassa polynomisessa ajassa toimiva approksimointialgoritmi A ε jonka suhteellinen virhe (1 + ε ) + k, missä k on jokin vakio. Bin packing kuuluu luokkaan APTAS (todistus sivuutetaan). ----- Määr. Ongelma kuuluu luokkaan FPTAS, jos kaikilla ε > 0 on olemassa tapauksen koon ja (1/ ε):n suhteen polynomisessa ajassa toimiva approksimointialgoritmi A ε jonka suhteellinen virhe (1 + ε ).
PTAS FTAS APTAS