curs 8 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Curs 8 PowerPoint Presentation
Download Presentation
Curs 8

Loading in 2 Seconds...

play fullscreen
1 / 19

Curs 8 - PowerPoint PPT Presentation


  • 206 Views
  • Uploaded on

Curs 8. Paradigma Programare dinamica Studii de caz distanta intre siruri subsecventa crescatoare de lungime maxima Prezentarea formala a paradigmei. Distanta intre siruri – problema. instanta doua siruri a si b de lungime n asupra lui a se pot face operatiile:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Curs 8' - kamaria


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
curs 8
Curs 8
  • Paradigma Programare dinamica
    • Studii de caz
      • distanta intre siruri
      • subsecventa crescatoare de lungime maxima
      • Prezentarea formala a paradigmei
distanta intre siruri problema
Distanta intre siruri – problema
  • instanta
    • doua siruri a si b de lungime n
    • asupra lui a se pot face operatiile:
      • modificare: M(i, c) daca ai c
      • stergere: S(i)
      • inserare: I(i, c)
  • iesire
    • o secventa de operatii de lungime minima care transforma sirul a in b
  • exemplu
    • a = “armata”, b = “camara”
    • “armata”  “amata”  “camata”  “camara”
    • d[“armata”, “camara”] = 3
distanta intre siruri propretati
Distanta intre siruri – propretati
  • ordinea operatiilor intr-o secventa optima nu are importanta
    • “armata”  “amata”  “camata”  “camara”
    • “armata”  “amata”  “amara”  “camara”
    • “armata”  “carmata”  “camata”  “camara”
    • “armata”  “carmata”  “carmara”  “camara”
    • “armata”  “armara”  “amara”  “camara”
    • “armata”  “armara”  “carmara”  “camara”
distanta intre siruri proprietati cont
Distanta intre siruri – proprietati (cont.)
  • exista o secventa optima in care sirurile intermediare au lungimea  n
  • d[a,b] este o metrica:
    • d[a, a] = 0
    • d[a, b] = d[b, a]
    • d[a, c] d[a, b] + d[b, c]
distanta intre siruri model
Distanta intre siruri – model
  • stare: DES[i,j] = determinarea distantei minime intre subsirurile de lungime i si respectiv j
  • valoarea asociata unei stari: [i,j]
  • functia asociata unei stari: d[i, j] = d[a[1..i], b[1..j]]
  • decizie:
    • presupunem ca b[j] se obtine prin stergere:

DES[i,j]  DES[i-1, j]

    • presupunem ca b[j] se obtine prin modificare:

DES[i,j]  DES[i-1, j-1]

    • presupunem ca a[i] se obtine prin inserare:

DES[i,j]  DES[i, j-1]

distanta intre siruri model cont
Distanta intre siruri – model (cont.)
  • relatia de recurenta

d[0, j] = j, d[i, 0] = i (i, j)

d[i, j] = min{d[i-1, j] + 1, d[i-1, j-1] + [i, j], d[i, j-1] + 1}

[i, j] = if (a[i] = b[j]) then 0 else 1

  • timp:
    • calculului matricii d: O(n2)
    • determinarea secventei de operatii: O(n)
  • spatiu: O(n2)
distanta intre siruri exemplu
Distanta intre siruri - exemplu

c

a

m

a

r

a

2

3

4

5

6

a

1

1

2

3

4

5

r

2

2

2

3

3

4

m

3

3

3

3

4

4

a

4

4

3

3

3

4

t

5

5

4

4

3

4

a

6

6

5

5

4

4

0

1

1

2

2

2

3

3

(

M(5,’r’),

S(2),

)

I(1,’c’)

distanta intre siruri variatii
Distanta intre siruri - variatii
  • alte operatii:
    • transpozitia: schimba ordinea a doua caractere adiacente
  • distanta Levenshtein (de editare)
    • sunt admise numai inserari, stergeri si inlocuiri
    • toate operatiile au costul 1
  • distanta Hamming
    • sunt admise numai inlocuirile
    • costul operatiei este 1
    • este finita ori de cate ori |a| = |b|
  • distanta “episodica” (episode distance)
    • sunt admise numai inserari
    • costul operatiei este 1
    • distanta este sau |b|-|a| sau 
distanta intre siruri variatii1
Distanta intre siruri - variatii
  • distanta data de cea mai lunga subsecventa
    • sunt admise numai inserari si stergeri
    • toate operatiile au costul 1

a = “amxbtycsnma” si b = “bancxstymcxn”

“amxbtycsnma”  “bamxbtycsnma”  “baxbtycsnma” 

“banxbtycsnma”  “bancxbtycsnma”  “bancxtycsnma” 

“bancxstycsnma”  “bancxstymcsnma”  “bancxstymcnma” 

“bancxstymcxnma”  “bancxstymcxna”  “bancxstymcxn” = b

      • (a,x,t,y,c,n) este subsecventa comuna
      • este cea mai lunga?
distanta intre siruri aplicatii
Distanta intre siruri - aplicatii
  • “matching” aproximativ peste siruri (aproximate string matching)
    • problema: dat un text s de lungime n, un patern p de lungime m, o distanta d() intre siruri si un numar k, sa se determine pozitiile j din textul s astfel incat sa existe i cu d(p, s[i..j])  k
    • distanta Levenshtein: “string matching with k differences”
    • distanta Hamming: “string matching with k missmatches”
    • distanta episodica: “episode matching” (modeleaza cazul cand se cauta o secventa de evenimente intr-o perioada scurta de timp)
    • cea mai lunga subsecventa comuna: exact ce spune numele
    • procesul de cautare:
      • a = p, b = s
      • trebuie sa modificam alg. a.i. orice pozitie j din text este startul potential al unei potriviri; asta se realizeaza prin setarea d[0,j] = 0
distanta intre siruri aplicatii1
Distanta intre siruri - aplicatii
  • calculul matricei se face pe coloane
  • initial: d[i, 0] = i pentru i = 0, …, m
  • se proceseaza textul caracter cu caracter
  • presupunem ca la pasul curent se proceseaza sj
  • coloanaj este actualizata:

d[i, j] = if (pi = sj) then d[i-1, j-1]

else 1 + min(d[i-1, j], d[i, j-1], d[i-1, j-1])

  • pozitiile j pentru care d[m,j]  k sunt raportate
  • de remarcat ca numai ultimele doua coloane sunt necesare
subsecventa crescatoare maximala problema
Subsecventa crescatoare maximala – problema
  • instanta
    • o secventa de numere intregi a = (a1, a2, …, an)
    • stergand cateva elemente din a se obtine o subsecventa
    • o subsecventa pastreaza ordinea relativa a elementelor
    • exemplu:
      • a = (9, 3, 15, 12, 7, 4, 13, 6, 8)
      • subsecventa: (3, 12, 7, 6)
      • subsecventa crescatoare: ( 3, 7, 13)
  • iesire: subsecventa crescatoare de lungime maxima
  • exemplu: exista o subsecventa crescatoare de lungime > 3?
  • cum se poate rezolva utilizand distanta de editare?
subsecventa crescatoare maximala model
Subsecventa crescatoare maximala – model
      • a = (9, 3, 15, 12, 7, 4, 13, 6, 8)

1 2 3 4 5 6 7 8 9

  • construim un graf G:
    • varfuri: 0, 1, 2, …, 9
    • arce: { (0,i) | i > 0 }  { (i,j) | a[i] <= a[j] }

0

1

2

3

4

5

6

7

8

9

subsecventa crescatoare maximala model1
Subsecventa crescatoare maximala – model
  • subsecventa crescatoare = drum in G
  • subsecventa crescatoare maximala = drum de lungime maxima in G
  • asociem o matrice de costuri:
    • c[i, j] = 1 daca i < j si (a[i] <= a[j] sau i = 0)
    • c[i,j] = -  altfel
  • stare: SCM(i) = subproblema determinarii celui mai lung drum ce se termina in i
  • L[i] = valoarea optima pentru SCM(i)
  • PO implica L[i] = L[j] + c[j,i], j predecesorul lui i pe drumul optim
  • relatia de recurenta:
    • L[0] = 0
    • L[i] = max { L[j] + c[j,i] | j < i }
subsecventa crescatoare maximala model2
Subsecventa crescatoare maximala – model
      • a = (9, 3, 15, 12, 7, 4, 13, 6, 8)

0 1 2 3 4 5 6 7 8 9

L = (0, 1, 1, 2, 2, 2, 2, 3, 3, 4)

  • extragerea solutiei:
    • s[4] = 9
    • s[3] = 8
    • s[2] = 6
    • s[1] = 2
    • s[0] = 0
  • timp de executie: O(n2)
  • spatiu suplimentar: O(n)
programare dinamica prezentare formala
Programare dinamica – prezentare formala
  • Modelul matematic
    • probleme de optim
      • functia obiectiv: optim R(x1, ..., xn)
      • restrictii: g(x1, ..., xn) ? 0
    • decizie: d: s  s’
    • unei stari s asociem o valoare z si o functie f(z) a.i. daca s corespunde starii initiale atunci f(z) = optim R(x1, ..., xn)
    • politica: d1: s0 s1, d2: s1 s2, . . . , dn: sn-1 sn,
programare dinamica prezentare formala cont
Programare dinamica – prezentare formala (cont.)
  • PO conduce la o relatie de recurenta:
    • daca
      • d: s  s’ (sau d: s’  s)
      • z val. asociata lui s, T(z,y) val. asociata lui s’,
      • H algoritmul care calculeaza f(z) conform lui d,

atunci, aplicind PO, obtinem

f(z) = optimy H(z, y, f(T(z,y)))