Ktai Zoltn ELTE 2018 mjus 14 18 DINAMIKUS

  • Slides: 30
Download presentation
Kátai Zoltán ELTE, 2018. május 14 -18.

Kátai Zoltán ELTE, 2018. május 14 -18.

DINAMIKUS PROGRAMOZÁS

DINAMIKUS PROGRAMOZÁS

Barátságos mérkőzések PÁRBAN • Legyen egy n elemű természetes számsorozat (n páros). A játékosok

Barátságos mérkőzések PÁRBAN • Legyen egy n elemű természetes számsorozat (n páros). A játékosok felváltva választanak egy-egy elemet a számsor valamelyik végéről. Az nyer, aki a nagyobb összeget gyűjti össze. – Meg lehet-e verni a „tanárt”, amennyiben hagyod, hogy ő kezdjen? 19 2 1 2 4 16 3 15 4 14 17 1 3 4 5 6 7 8 9 10

A kezdő minden lépésben, következetesen választhat páros/páratlan indexű elem között 19 2 1 2

A kezdő minden lépésben, következetesen választhat páros/páratlan indexű elem között 19 2 1 2 4 16 3 15 4 14 17 1 3 4 47 5 6 7 48 8 9 10

Mennyi a maximális összeg, amit a kezdő garantáltan összeszedhet? • Input: a[1. . n]

Mennyi a maximális összeg, amit a kezdő garantáltan összeszedhet? • Input: a[1. . n] • Cél: maximalizálni a kezdő garantált összegét – A barátod is mindig jól választ! Persze az általad, mint kezdő által, diktált keretek között.

Döntési fa [1. . 8] [1. . 6] [1. . 2] [2. . 9]

Döntési fa [1. . 8] [1. . 6] [1. . 2] [2. . 9] [2. . 7] [1. . 4] [2. . 5] [2. . 3] Minden fordulóban 2 -vel rövidül a számsor [1. . 10] [3. . 4] [3. . 10] [3. . 8] [3. . 6] [4. . 5] [4. . 7] [5. . 6] [4. . 9] [5. . 8] [6. . 7] [5. . 10] [6. . 9] [7. . 8] [7. . 10] [8. . 9] [9. . 10]

Mennyi a maximális összeg, amit a kezdő garantáltan összeszedhet? • Eredeti feladat: – mi

Mennyi a maximális összeg, amit a kezdő garantáltan összeszedhet? • Eredeti feladat: – mi a teljes tömbre (a[1. . n]) vonatkozó optimum? • Általános részfeladat: – mi az optimum az a[i. . j], páros hosszú tömbszakaszra vonatkozóan, ha a kezdő van soron? … 1 a[i] i a[i+1] a[i+2] … a[j-2] a[j-1] a[j] j … n

Két út áll előttem, melyiket válasszam? a[i]-t vagy a[j]-t? Az előnyösebbet! • Ha én

Két út áll előttem, melyiket válasszam? a[i]-t vagy a[j]-t? Az előnyösebbet! • Ha én a[i]-t választom, akkor – Két út áll előtted, melyiket választod? a[j] vagy a[i+1]? A számomra előnytelenebbet! … a[i+1] a[i+2] … a[j-2] a[j-1] i 1 … 1 a[i] i a[j] … j a[i+1] a[i+2] … a[j-2] a[j-1] a[j] j n … n c[i][j] = max{a[i] + min{c[i+1][j-1], c[i+2][j]}, …}

Két út áll előttem, melyiket válasszam? a[i]-t vagy a[j]-t? Az előnyösebbet! • Ha én

Két út áll előttem, melyiket válasszam? a[i]-t vagy a[j]-t? Az előnyösebbet! • Ha én a[j]-t választom, akkor – Két út áll előtted, melyiket választod? a[i] vagy a[j-1]? A számomra előnytelenebbet! … a[i+1] a[i+2] … a[j-2] a[j-1] i 1 … 1 a[i] i a[j] … j a[i+1] a[i+2] … a[j-2] a[j-1] a[j] n … j c[i][j] = max{a[i] + min{c[i+1][j-1], c[i+2][j]}, a[j] + min{c[i+1][j-1], c[i][j-2]}} n

19 2 1 19 1 2 2 4 (i)3 16 4 3 5 15

19 2 1 19 1 2 2 4 (i)3 16 4 3 5 15 6 4 7 14 8 17 9 1 10 2 4 16 3 15 4 14 17 1 3 4 i, j-2 5 6(j) +a[j] i+1, j-1 7 8 9 10 i, j +a[i] i+1, j c[i][j] = max{a[i] + min{c[i+1][j-1], c[i+2][j]}, a[j] + min{c[i+1][j-1], c[i][j-2]}}

19 2 1 19 1 2 2 4 3 16 4 3 5 15

19 2 1 19 1 2 2 4 3 16 4 3 5 15 6 4 7 14 8 17 9 1 10 4 16 3 15 4 14 17 1 2 3 4 19 +16 23 4 +19 5 6 7 37 18 16 8 9 10 52 +1 65 50 +19 33 31 16 45 31 15 46 46 29 15 30 31 14 21 17 17 c[i][j] = max{a[i] + min{c[i+1][j-1], c[i+2][j]}, a[j] + min{c[i+1][j-1], c[i][j-2]}}

1 Forduló 1 19 2 1 1 19 1 1 2 2 5 4

1 Forduló 1 19 2 1 1 19 1 1 2 2 5 4 3 5 16 4 4 3 5 4 15 6 3 4 7 3 14 8 2 17 9 2 1 10 2 5 5 4 3 3 2 2 4 16 3 15 4 14 17 1 3 19 4 5 23 4 0 4 6 7 37 18 8 9 10 52 +1 65 50 +19 33 +16 16 +15 31 +14 45 +1 46 0 +4 16 +4 31 +4 46 +4 0 15 29 15 30 31 14 21 17 c[i][j] = max{a[i] + min{c[i+1][j-1], c[i+2][j]}, a[j] + min{c[i+1][j-1], c[i][j-2]}} 17

65 [1. . 10] Döntési fa +1 52 [1. . 8] 10 +19 50

65 [1. . 10] Döntési fa +1 52 [1. . 8] 10 +19 50 [2. . 9] 46 [3. . 10] 8 +1 37 [1. . 6] 33 [2. . 7] 45 [3. . 8] 46 [4. . 9] 30 [5. . 10] 6 21 [7. . 10] 4 +14 23 [1. . 4] 18 [2. . 5] 31 [3. . 6] 31 [4. . 7] 29 [5. . 8] 31 [6. . 9] +15 19 [1. . 2] 4 [2. . 3] 16 [3. . 4] 16 [4. . 5] 15 [5. . 6] 15 [6. . 7] 14 [7. . 8] 17 [8. . 9] 17 [9. . 10] 2

Megoldás: optimum-érték. . . for( ; ; ){ //átlóról-átlóra for( ; ; ){ //kurrens

Megoldás: optimum-érték. . . for( ; ; ){ //átlóról-átlóra for( ; ; ){ //kurrens átló mentén c[i][j] = maxi( a[i] + mini(c[i+1][j-1], c[i+2][j]), a[j] + mini(c[i+1][j-1], c[i][j-2])); } }. . .

Stratégia • Egyszerűtől bonyolult fele haladva oldjuk meg a részfeladatokat • Részfeladatonként egy értéket

Stratégia • Egyszerűtől bonyolult fele haladva oldjuk meg a részfeladatokat • Részfeladatonként egy értéket tárolunk el (tömbben) – optimális megoldást képviselő optimum értéket – megoldások számát • Rekurzív képlet írja le, hogy a kurrens részfeladat: – optimuma miként építhető fel a közvetlen fiúrészfeladatok optimumaiból (optimális építkezés: optimumokból optimálisan) – megoldásszáma miként határozható meg a közvetlen fiúrészfeladatok megoldásszámaiból

DP-feladatok osztályozása A dinamikus programozásos építkezés szintről szintre halad A k. szinti részfeladatok optimális

DP-feladatok osztályozása A dinamikus programozásos építkezés szintről szintre halad A k. szinti részfeladatok optimális megoldásai kizárólag 0. . (k-1) szinti optimumoktól függnek 1. 2. 3. 4. Monadikus (monadic) Poliadikus (polyadic) Soros (serial) Nem-soros (non-serial)

Monadikus–soros 1 7 2 5 8 3 9 6 5 4 9 4 2

Monadikus–soros 1 7 2 5 8 3 9 6 5 4 9 4 2 3 5 7 8 1 4 9 a 1 2 3 4 5 4. szint 1 38 3. szint 2 31 26 2. szint 3 26 18 17 1. szint 4 17 12 6 12 0. szint 5 7 8 1 4 9 c 1 2 3 4 5 c[i][j] = max {a[i][j] + c[i+1][j], a[i][j] + c[i+1][j+1]}

Monadikus – nem-soros b a 3 5 4 3 0 1 2 3 4

Monadikus – nem-soros b a 3 5 4 3 0 1 2 3 4 c 4 3 5 7 2 3 0 1 2 3 4 5 6 0 0 0 0 1 1 1 2 0 1 2 2 3 c[i][j] = c[i-1][j-1] + 1, ha 1 i n, 1 j m, a[i]=b[j] c[i][j] = max {c[i][j-1], c[i-1][j]}, 1 i n, 1 j m, a[i]≠b[j]

Poliadikus – soros • FLOYD algoritmusa c 0[i][j] = a[i][j] ck[i][j] = min {ck-1[i][j],

Poliadikus – soros • FLOYD algoritmusa c 0[i][j] = a[i][j] ck[i][j] = min {ck-1[i][j], ck-1[i][k] + ck-1[k][j]}

Poliadikus – nem-soros • Mátrixsorozat optimális összeszorzása

Poliadikus – nem-soros • Mátrixsorozat optimális összeszorzása

Többérzékes tanulás a SAPIENTIAN

Többérzékes tanulás a SAPIENTIAN

1 Ciklus-váz Kihangosít Computer & Education Bedobol 2 3 Teaching and Teacher Education Computer

1 Ciklus-váz Kihangosít Computer & Education Bedobol 2 3 Teaching and Teacher Education Computer Application in Engineering Education

Tíz ALGORITMUS-TÁNC 4

Tíz ALGORITMUS-TÁNC 4

INTERAKTÍV online e-learning környezet Levezényelni véletlen látható sorozaton Rekonstruálás Levezényelni láthatatlan sorozaton

INTERAKTÍV online e-learning környezet Levezényelni véletlen látható sorozaton Rekonstruálás Levezényelni láthatatlan sorozaton

“Best Practices in Education Award„ (2013)

“Best Practices in Education Award„ (2013)

KUTATÁS: reál vs. humán Illusztráció Demonstráció Rekonstrukció JCAL Levezénylés látható véletlen-sor Levezénylés láthatatlan véletlen-sor

KUTATÁS: reál vs. humán Illusztráció Demonstráció Rekonstrukció JCAL Levezénylés látható véletlen-sor Levezénylés láthatatlan véletlen-sor ITi. CSE

KUTATÁS: interkulturális informatikaoktatás “Mennyire tetszett, mint show? ” “Melyik volt a leghatékonyabb? (CIGÁNY /

KUTATÁS: interkulturális informatikaoktatás “Mennyire tetszett, mint show? ” “Melyik volt a leghatékonyabb? (CIGÁNY / ROMÁN / MAGYAR)? ” “Melyik volt a leghatékonyabb? (BUBORÉKOS / KIVÁLASZTÁSOS / BESZÚRÁSOS)? ” “Melyik volt a legkönnyebb? (KIVÁLASZTÁSOS-cig / BESZÚRÁSOS-ro / BUBORÉKOS-hu)? ”

KUTATÁS: interkulturális informatikaoktatás “Mennyire tetszett, mint show? ” RO HU mono. RO mono. HU

KUTATÁS: interkulturális informatikaoktatás “Mennyire tetszett, mint show? ” RO HU mono. RO mono. HU bi. RO bi. HU Gipsy 5, 24 5, 45 5, 23 5, 10 5, 28 5, 73 Romanian 5, 65 5, 40 5, 55 5, 43 5, 83 5, 38 Hungarian 5, 16 5, 96 5, 58 5, 43 4, 44 6, 38 ITi. CSE

KUTATÁS: interkulturális informatikaoktatás n Kódolás n n 1: “saját” – leghatékonyabb -1: “ellentétes” –

KUTATÁS: interkulturális informatikaoktatás n Kódolás n n 1: “saját” – leghatékonyabb -1: “ellentétes” – leghatékonyabb 0: “semleges” – leghatékonyabb Leghatékonyabb algoritmus Átlagok n n mono. RO: [0] 11(saját), 11(ellentétes), 9(semleges) mono. HU: [-0. 04] 9(saját), 10(ellentétes), 2(semleges) bi. RO: [0. 72] 14(saját), 1(ellentétes), 3(semleges) bi. HU: [0. 42] 16(saját), 5(ellentétes), 5(semleges)

Melyik táncot néznétek a meg legszívesebben?

Melyik táncot néznétek a meg legszívesebben?