Megj.: Lehet hogy egy altalanosan nehez feladatot kapunk, de ha valami spec esetet akarunk megoldani akkor lehet hogy meg lehet oldani polinomialis idoben.

Kozelito megoldasok

A kovetkezok adottak:

  • input megengedett megoldasok halmaza
  • kiertekelesi fuggveny

Feladat: keressunk megengedett megoldast, amire minimalis.

Def.: Egy algoritmust -kozelitonek hivunk, ha inputra, melyre , kiad egy -et, melyre .
Ahol azt a megoldast jeloli amire minimalis.

Megj.: Ha maximumot keresunk akkor

Egyszeru peldak:

  1. Adott iranyitott graf, keressunk reszgrafot, ami aciklikus es maximalis.
    -kozelites konnyen elerheto a kovetkezo modon:
    Szamozzuk meg a csucsokat es legyen az elore elek halmaza es a vissza elek halmaza. Nyilvan egyik sem tartalmaz kort mert mindketto topologikusan van rendezve. Mivel ezert
  1. Adott iranyitatlan graf, keressuk -t legkisebb lefogo csucshalmaz
    -kozelito algoritmus:
    Legyen egy nem bovitheto parositas. Ekkor

Igy ez nyilvan egy -kozelito algoritmus.

Metrikus utazo ugynok

Input: graf,

Def.: Egy tura egy olyan seta amely minden csucsot legalabb egyszer erint.

Feladat: Egy minimalis koltsegu turat talalni.

-kozelito algoritmus a metrikus utazo ugynok feladatra:

  1. Keressuk meg a minimalis koltsegu feszito fat
  2. -bol kepzunk egy koltsegu turat ugy, hogy a feszito fat bejarjuk ugy. Ekkor minden elen pontosan ketszer fogunk atmenni.
    Ekkor belathato a kovetkezo:

Def.: Az algoritmus relativ hibaval kozelit, ha -kozelito
Megj.: max:

Def.: Polinomial Time Approximation Scheme (PTAS)
Minden -hoz adunk egy polinomialis algoritmust, ami relativ hibaval kozelit.

Def.: Fully PTAS (FPTAS)
Letezik algoritmus relativ hibaval

Def.: Efficient PTAS (EPTAS)
Letezik algoritmus relativ hibaval

Hatizsak feladat (again)

Dinamikus Programozas algoritmus

Tudunk egy felso korlatot adni az optimum-ra: .
Peldaul de ennel tudnk jobbat is adni.

kiszamoljuk, hogy mi a legkisebb hatizsak, amibe ki tudunk vinni erteket az elso targy kozul.

T(0, 0) = 0
FOR j = 1 .. E:
	T(0, j) := W + 1  // ez jeloli, hogy nem tudunk kivinni

FOR i = 1 .. n:
	FOR j = 0 .. E:
		T(i, j) := T(i-1, j)
	FOR j = e_i .. E:
		IF T(i-1, j-e_i) + w_i < T(i, j) THEN
			T(i, j) := T(i-1, j-e_i) + w_i

FOR j = E .. 0 (-1):
	IF T(n, j) <= W THEN
		e := j
		j := 0

I := {}  // a kivitt targyak halmaza
FOR i = n .. 1 (-1):
	IF T(i, e) < T(i-1, e) THEN
		I := I U {i}
		e := e - e_i

de ez nem polinomialis, mert az input a targyak sulyai es ertekei amik szamjegyekkel vannak megadva. Tehat az input merete

Ibarra–Kim approximációs algoritmusa

Legyen adva darab tárgy pozitív egész súlyokkal és értékekkel, valamint egy súlykorlát, továbbá egy pontossági korlát. Tegyük fel, hogy minden -re , hiszen a súlykorlátnál nehezebb tárgyakat úgysem vihetnénk magunkkal. Legyen

valamint legyen egy olyan részhalmaz, amire a maximum éppen eléretik.

Legyen most egy késöbb alkalmasan választandó szám, ezzel készítsük el a súlyokat és értékeket, erre a dinamikus programozási algoritmussal keressük meg a méretű hátizsákban elvihető legnagyobb értéket, legyen ez OPT’. Ezen optimum vétessen fel valamely részhalmazon, ezt egyébként a dinamikus programozási algoritmussal visszalépéssel (minden minimumszámításnál annak megjegyzésével, hogy a két tag közül melyik eredményezi a minimumot) ki lehet számítani.

Elöször is vegyuik észre, hogy

valamint hogy optimális valsztása miatt

Másfelol a optimális volta miatt

Ezek alapján tehát látjuk, hogy

most még megmutatjuk, hogy , ezzel azt fogjuk látni, hogy

azaz az algoritmusból adódó a valódi optimumnak legfeljebb hibájú becslése.

Megadjuk végül értékét. Legyen , ezzel legyen

ekkor

hiszen az átlag nem nagyobb a maximumnál valamint bármelyik konkrét egyetlen tárgyat önmagában el tudjuk vinni.

Már csak az algoritmus lépésszáma van hátra, ez

ami valóban polinomiális approximációs algoritmust jelent.