Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

DINAMIKUS PROGRAMOZÁS Szabó Zoltán, Kátai Zoltán V. Kiss Elemér programozói tábor Hargita, 2015. március 20-22.

Hasonló előadás


Az előadások a következő témára: "DINAMIKUS PROGRAMOZÁS Szabó Zoltán, Kátai Zoltán V. Kiss Elemér programozói tábor Hargita, 2015. március 20-22."— Előadás másolata:

1 DINAMIKUS PROGRAMOZÁS Szabó Zoltán, Kátai Zoltán V. Kiss Elemér programozói tábor Hargita, március

2 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

3 Stratégia 1.Meghatározzuk a részfeladatok általános alakját. 2.Eldöntjük, hol fogjuk eltárolni az egyes részfeladatok optimális megoldásait jellemző optimum értékeket (vagy a megoldások számát). 3.Megkeressük azt a rekurzív képletet, amely matematikailag leírja, miként épül fel az általános részfeladat optimális megoldását jellemző optimum érték a részfeladatok optimum értékéből. – A kurrens részfeladat optimuma mely közvetlen fiú- részfeladatok optimumaiból építhető fel, és hogyan? 4.A rekurzív képlet alapján - az egyszerűtől haladva a bonyolult fele - feltöltjük a tömböt a részfeladatok optimum értékeivel.

4 Leghosszabb közös részsorozat n=4, m=3; a[1..4]=(2,9,5,7); b[1..3]=(9,3,5) 1.Általános alak: – a[1..i] és b[1..j] szakaszok leghosszabb közös részsorozatának hossza triviális: i=0 vagy j=0 eredeti: i=n, j=m 2.Tárolás: – c[0..n][0..m] 3.Rekurzív képlet: – (2,9,5)(9,3,5) (2,9,5)(9,3,5) c[i][j]=1+c[i-1][j-1], ha a[i]=b[j] – (2,9,5,7)(9,3,5) (2,9,5,7)(9,3,5) c[i][j]=max{c[i-1][j], c[i][j-1]}, különben

5 Leghosszabb palindrom részsorozatok száma Határozzuk meg egy sorozat leghosszabb palindrom (tűkör) részsorozatának HOSSZÁT, illetve, ha több ilyen lenne, akkor ezek SZÁMÁT. INPUT – 5: (2, 1, 4, 2, 2) OUTPUT – 3, 5 (2,1,2) (2,4,2) (2,2,2)

6 Leghosszabb HOSSZA 1.Általános alak: (i..j) szakasz leghosszabb palindrom részsorozatának hossza triviális: i=j vagy i>j eredeti: i=1, j=n 2.Tárolás: c[1..n][1..n] 3.Rekurzív képlet: (i,j) feladat közvetlen fiúrészfeladatai (i

7 Leghosszabbak SZÁMA (i,j) [1] [0] (i,j-1)(i+1,j-1)(i+1,j) (i,j) [1] [0] (i,j-1)(i+1,j-1)(i+1,j) {1}{1}{1}{1}{1} {2}=1+1 [1]=max(1,1) {1}{1}{1} {1}=1 [2]= (i,j) [1] (i,j-1)(i+1,j-1)(i+1,j) {2}{2}{1}{1}{2}{2} {3}=2+2-1 [1]=max(1,1) (i,j) [1][2][1] (i,j-1)(i+1,j-1)(i+1,j) {2}{1}{1}{1} {1=1} [2]=max(1,2) 2

8 Leghosszabbak SZÁMA (i,j) [3][2] [1] (i,j-1) (i+1,j-1) (i+1,j) {2}{2} {3}{3} {1} {5}=2+3 [3]=

9 Leghosszabbak SZÁMA Ha a[i]≠a[j], akkor – ha c[i][j-1]>c[i+1][j], akkor d[i][j]=d[i][j-1] – ha c[i][j-1]

10 Leghosszabbak SZÁMA ,11,21,33,23,5 120,11,11,21,32,1 4300,11,11,22, ,11,12, ,11,1

11 Implementálás!!! Leghosszabb közös részsorozat – hossza – a sorozat is Leghosszabb palindrom részsorozat – hossza – darabszám – a sorozatok is


Letölteni ppt "DINAMIKUS PROGRAMOZÁS Szabó Zoltán, Kátai Zoltán V. Kiss Elemér programozói tábor Hargita, 2015. március 20-22."

Hasonló előadás


Google Hirdetések