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, 2015. március 20-22.

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 935 0123 00000 210000 920111 530112 740112

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<j): (2, 1, 4, 2, 2) ( c[i][j]=2+c[i+1][j-1], ha a[i]=a[j] ) 2, 1, 4, 2, 2 (1, 4, 2, 2) ( c[i][j]=max{c[i][j-1], c[i+1][j] }) 1, 4, 2, 2 421422 12345 2111133 1201112 4300112 2400012 2500001 12345 11 201 3001 40001 500001

7 Leghosszabbak SZÁMA 21422 12345 111133 201112 300112 400012 500001 21 21 (i,j) [1] [0] (i,j-1)(i+1,j-1)(i+1,j) 21422 12345 111133 201112 300112 400012 500001 22 22 (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]=0+2 21422 12345 111133 201112 300112 400012 500001 214 2114 (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) 1 21422 12345 111133 201112 300112 400012 500001 422 4222 (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 21422 12345 111133 201112 300112 400012 500001 21422 2142 (i,j) [3][2] [1] (i,j-1) (i+1,j-1) (i+1,j) {2}{2} {3}{3} {1} {5}=2+3 [3]=1+2 1421422

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]<c[i+1][j], akkor d[i][j]=d[i+1][j] – ha c[i][j-1]=c[i+1][j]≠c[i+1][j-1], akkor d[i][j]=d[i][j-1]+d[i+1][j] – ha c[i][j-1]=c[i+1][j]=c[i+1][j-1], akkor d[i][j]=d[i][j-1]+d[i+1][j]-d[i+1][j-1] Ha a[i]=a[j], akkor – ha (2+c[i+1][j-1] ≠ c[i][j-1]) ÉS (2+c[i+1][j-1] ≠ c[i+1][j]), akkor d[i][j]=d[i+1][j-1] – ha (2+c[i+1][j-1] = c[i][j-1]), d[i][j]=d[i][j-1]+d[i+1][j-1] – ha (2+c[i+1][j-1] = c[i+1][j]), d[i][j]=d[i+1][j]+d[i+1][j-1]

10 Leghosszabbak SZÁMA 421422 12345 211,11,21,33,23,5 120,11,11,21,32,1 4300,11,11,22,1 24000,11,12,1 250000,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