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
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-