Algoritmusok s Adatszerkezetek I Pnzvltsi feladat Dinamikus Programozsi

  • Slides: 6
Download presentation
Algoritmusok és Adatszerkezetek I. Pénzváltási feladat Dinamikus Programozási (DP) megoldása 2020. szeptember 3. hét

Algoritmusok és Adatszerkezetek I. Pénzváltási feladat Dinamikus Programozási (DP) megoldása 2020. szeptember 3. hét – 4. videó S 03 E 04

Dinamikus Programozás (DP) • Részfeladatokra való bontással oldjuk meg a problémát. • DP –

Dinamikus Programozás (DP) • Részfeladatokra való bontással oldjuk meg a problémát. • DP – és nem oszd-meg-és-uralkodj – ha a részproblémák nem függetlenek, azaz közös részproblémáik vannak (optimalizálási feladatoknál tipikus!). • Alapgondolat: a már megoldott részproblémák optimális megoldásának értékét memorizáljuk és ha még egyszer fel kell használni felidézzük

Dinamikus Programozás (DP) DP minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja

Dinamikus Programozás (DP) DP minden egyes részfeladatot és annak minden részfeladatát pontosan egyszer oldja meg, az eredményt egy táblázatban tárolja, és ezáltal elkerüli az ismételt számítást, ha a részfeladat megint felmerül.

Pénzváltási feladat – dinamikus programozási megoldás min. Penz[0] ← 0 for p ← 1

Pénzváltási feladat – dinamikus programozási megoldás min. Penz[0] ← 0 for p ← 1 to F min. Penz[p] ← ∞ for j ← 1 to n if p ≥ Pj min. Penz[p] ← min(min. Penz[p], min. Penz[p- Pj]+1) return min. Penz[F] futásidő: O(Fn)

Dinamikus Programozás • Iteratív megvalósítás (táblázatkitöltés): – Minden részmegoldást kiszámolunk – Alulról felfele (bottom-up)

Dinamikus Programozás • Iteratív megvalósítás (táblázatkitöltés): – Minden részmegoldást kiszámolunk – Alulról felfele (bottom-up) építkezünk • Rekurzív megvalósítás memorizálással: – Részmegoldásokat kulcs-érték formájában tároljuk (feljegyzéses módszer) – Felülről lefele (top-down) építkezünk – Csak akkor használjuk ha nem kell minden megoldást kiszámolni! (pl. minden érme 10 többszöröse)

Dinamikus Programozás P 1=1, P 2=5, P 3=6, F=9 • Rekurzív megvalósítás memorizálással Felülről-lefelé

Dinamikus Programozás P 1=1, P 2=5, P 3=6, F=9 • Rekurzív megvalósítás memorizálással Felülről-lefelé (top-down): 0 1 2 3 4 ? 0 1 ? 2 ? 3 ? 4 ? 5 6 1 ? 7 8 9 2? ? 3 4 ? • Iteratív megvalósítás (táblázatkitöltés) Alulról-felfelé (bottom-up): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 1 1 2 3 4