20.11.2012 Views

Kis-Benedek Ágnes Dinamikus programozás a gráfelméletben

Kis-Benedek Ágnes Dinamikus programozás a gráfelméletben

Kis-Benedek Ágnes Dinamikus programozás a gráfelméletben

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

12 2. FEJEZET. ÚTKERESÉS ÉS RÉSZGRÁFOK<br />

Bár ezek polinomiális időben megoldhatók, R. Karp [8] bebizonyította, hogy közös<br />

általánosításuk, a Steiner-fa problémája NP-teljes még c ≡ 1 esetén is.<br />

Dreyfus és Wagner [9] kimutatta, hogy dinamikus <strong>programozás</strong> segítségével megad-<br />

ható olyan algoritmus, amely |V |-ben polinomiális, és csak |T |-ben exponenciális.<br />

Tehát rögzített T -re a futásidő már polinomiális lesz. Például |T | = 3-ra ∀v ∈ V -re<br />

meghatározunk a terminálpontokba egy-egy minimális költségű utat, és amelyik v-re<br />

ezen utak uniója minimális, az adja az optimális Steiner-fát.<br />

A következő jelöléseket vezessük be:<br />

P [uv] jelölje az u és v pontok közti (egyik) minimális költségű utat. Ennek költ-<br />

sége c(P [uv]) ≥ 0.<br />

sb(K +v) értékét a következőképp definiáljuk: ha a K ∪v terminálhalmazhoz tar-<br />

tozó minimális Steiner-fák között van olyan, amelyben v belső pont, akkor sb(K + v)<br />

értéke legyen ennek a fának a költsége, ha pedig ilyen nincs, akkor az érték legyen<br />

végtelen.<br />

s(K +v) legyen a K ∪v terminálhalmazhoz tartozó minimális Steiner-fa költsége.<br />

Az algoritmus során ∀K ⊂ T -re és ∀v ∈ V -re kiszámoljuk az sb(K + v), majd az<br />

s(K + v) értékeket. Ezek száma |V |-ben polinomiális, és csak |T |-től függ exponen-<br />

ciálisan. A keresett minimumot azon s(K + v)-k egyike adja, melyekre K ∪ v = T .<br />

Az algoritmus k-adik fázisában (k = 1, 2, . . . , |T | − 2) már ∀v ∈ V -re, és T -<br />

nek ∀ k-elemű T ′ részhalmazára kiszámítottuk s(T ′ + v)-t. Ekkor ennek segítségével<br />

először meghatározzuk T (k+1)-elemű K részhalmazaira sb(K+v)-t, majd s(K+v)-t<br />

az alább látható módon.<br />

|K| = 1 esetén ∀ sb(K + v) értéke legyen végtelen, s(K + v) pedig a minimális<br />

út költsége.<br />

K legyen a terminálok egy részhalmaza, F pedig egy ezekre vonatkozó minimális<br />

Steiner-fa, melyben a v pont minimum másodfokú. A v-ből kiinduló faéleket két<br />

nemüres osztályba sorolva meghatározzuk a fának egy olyan két részre osztását,<br />

melyeknek egyetlen közös pontja v. A két részfát jelölje F ′ , illetve F ′′ , a hozzájuk<br />

tartozó terminálhalmazokat pedig K ′ , illetve K ′′ . Ezekre nyilván igaz, hogy F ′ mi-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!