You are on page 1of 31

November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.

1
Algoritmalara Giri
6.046J/18.401J
Ders 15
Dinamik Programlama
En uzun ortak altdizi
En uygun altyap
Altproblemlerin akmas

Prof. Charles E. Leiserson
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.2
Dinamik Programlama
Bl-ve-fethet gibi bir tasarm teknii.
rnek: En uzun ortak altdizi (LCS)
ki tane, x[1 . . m]ve y[1 . . n] dizisi verilmi,
ikisinde de ortak olan en uzun altdiziyi bulun.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.3
Dinamik Programlama
Bl-ve-fethet gibi bir tasarm teknii.
rnek: En uzun ortak altdizi (LCS)
ki tane, x[1 . . m]ve y[1 . . n] dizisi verilmi,
ikisinde de ortak olan en uzun altdiziyi bulun.
En uzun altdizi tek deildir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.4
Dinamik Programlama
Bl-ve-fethet gibi bir tasarm teknii.
rnek: En uzun or|ak a||d|z| (/C5)
ki tane, x[1 . . m]ve y[1 . . n] dizisi verilmi,
ikisinde de ortak olan en uzun altdiziyi bulun.
x: A B C B D A B
y: B D C A B A
En uzun altdizi tek deildir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.5
Dinamik Programlama
Bl-ve-fethet gibi bir tasarm teknii.
rnek: En uzun or|ak a||d|z| (/C5)
ki tane, x[1 . . m]ve y[1 . . n] dizisi verilmi,
ikisinde de ortak olan en uzun altdiziyi bulun.
x: A B C B D A B
y: B D C A B A
En uzun altdizi tek deildir.
BCBA =
LCS(x, y)
fonksiyonel gsterim,
ama fonksiyon deil.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.6
Kaba-kuvvet algoritmas
x[1 . . m]' nin her altdizisini
y[1 . . n]' nin de altdizisi mi diye kontrol edin.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.7
x[1 . . m]' nin her altdizisini
y[1 . . n]' nin de altdizisi mi diye kontrol edin.
Analiz
Kontrol etme = her altdizi iin O(n) zaman.
x' in 2
m
sayda altdizisi var.(m uzunluunda her
bir bit-vektr, x'in farkl bir altdizisini belirler.)
En kt durum koma sresi = O(n2
m
)
= stel zaman.
Kaba-kuvvet algoritmas
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.8
Daha iyi bir algoritmaya doru
Basitletirme:
1.En uzun ortak bir altdizinin uzunluuna bakalm.
2.Algoritmay LCS' yi kendisi bulacak ekilde
geniletin.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.9
Simgelem: s dizisinin uzunluunu
| s | ile belirtin.
Daha iyi bir algoritmaya doru
Basitletirme:
1.En uzun ortak bir altdizinin uzunluuna bakalm.
2.Algoritmay LCS' yi kendisi bulacak ekilde
geniletin.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.10
Strateji: x ve y'nin neklerini dnn.
Define(tanmlama) c[i, j] = | LCS(x[1 . . i], y[1 . . j]) |.
Then(sonra), c[m, n] = | LCS(x, y) |.
Daha iyi bir algoritmaya doru
Basitletirme:
1.En uzun ortak bir altdizinin uzunluuna bakalm.
2.Algoritmay LCS' yi kendisi bulacak ekilde
geniletin.
Simgelem: s dizisinin uzunluunu
| s | ile belirtin.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.11
zyinelemeli formlleme
Teorem.
c[i, j] =
c[i1, j1] + 1 if x[i] = y[j] ise,
max{c[i1, j], c[i, j1]} aksi takdirde.
(eer)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.12
Kant. Durum x[i] = y[ j]:
L
1 2 i m
L
1 2
j
n
x:
y:
=
zyinelemeli formlleme
Teorem.
c[i, j] =
c[i1, j1] + 1 if x[i] = y[j] ise,
max{c[i1, j], c[i, j1]} aksi takdirde.
(eer)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.13
L
1 2 i m
L
1 2
j
n
x:
y:
=
c[i, j]= k iken z[1 . . k] = LCS(x[1 . . i], y[1 . . j]) olsun.
Sonra, z[k] = x[i], ya da baka z geniletilebilir.
Bylece, z[1 . . k1], x[1 . . i1] ve y[1 . . j1]'nin CS'sidir.
zyinelemeli formlleme
Teorem.
c[i, j] =
c[i1, j1] + 1 if x[i] = y[j] ise,
max{c[i1, j], c[i, j1]} aksi takdirde.
Kant. Durum x[i] = y[ j]:
(eer)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.14
Kant (devam)
ddia: z[1 . . k1] = LCS(x[1 . . i1], y[1 . . j1]).
Diyelim ki w, x[1 . . i1] ve y[1 . . j1]' nin daha
uzun bir CS'si,yani | w| > k1. yleyse, kes ve
yaptr: w || z[k] (w, z[k]ile bititirilmi.)
x[1 . . i] ve y[1 . . j]' nin ortak altdizisidir
ve |w|| z[k] |> k' dr. eliki, iddiay kantlar.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.15
ddia: z[1 . . k1] = LCS(x[1 . . i1], y[1 . . j1]).
Diyelim ki w, x[1 . . i1] ve y[1 . . j1]' nin daha
uzun bir CS'si,yani | w| > k1. Sonra, kes ve
yaptr: w || z[k] (w, z[k]ile bititirilmi.)
x[1 . . i] ve y[1 . . j]' nin ortak altdizisidir
ve |w|| z[k]|> k' dr.eliki, iddiay kantlar.
Bylece, c[i1, j1] = k1'dir ki bu
c[i, j] = c[i1, j1] + 1 anlamna gelir.

Dier durumlar benzerdir.
Kant (devam)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.16
Dinamik-programlama
kalite iareti #1
Optimal altyap
Bir probleme optimal zm
(rnek) alt-problemlere optimal
zmler ierir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.17
Dinamik-programlama
kalite iareti #1
Optimal altyap
Bir probleme optimal zm
(rnek) alt-problemlere optimal
zmler ierir.
Eer z = LCS(x, y) ise, z nin her neki ,x' in ve
y' nin neklerinin LCS' sidir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.18
LCS iin zyinelemeli algoritma
LCS(x, y, i, j)
if x[i] = y[ j]
then c[i, j] LCS(x, y, i1, j1) + 1
else c[i, j] max{LCS(x, y, i1, j),
LCS(x, y, i, j1)}
(eer)
(sonra)
(baka)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.19
LCS iin zyinelemeli algoritma
LCS(x, y, i, j)
if x[i] = y[ j]
then c[i, j] LCS(x, y, i1, j1) + 1
else c[i, j] max{LCS(x, y, i1, j),
LCS(x, y, i, j1)}
En kt durum: x[i] y[ j], bu durumda
algoritma, tek parametrenin azaltld
iki alt-problemi deerlendirir.
(eer)
(sonra)
(baka)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.20
zyineleme aac
m = 3, n = 4:
3,4
3,4
2,4
2,4
1,4
1,4
3,3
3,3
3,2
3,2
2,3
2,3
1,3
1,3
2,2
2,2
2,3
2,3
1,3
1,3
2,2
2,2
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.21
zyineleme aac
m = 3, n = 4:
3,4
3,4
2,4
2,4
1,4
1,4
3,3
3,3
3,2
3,2
2,3
2,3
1,3
1,3
2,2
2,2
m+n
2,3
2,3
1,3
1,3
2,2
2,2
Ykseklik = m + n i potansiyel olarak steldir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.22
zyineleme aac
ayn
altproblem
,
ama biz zaten zlm olan altproblemleri zyoruz!
m = 3, n = 4:
3,4
3,4
2,4
2,4
1,4
1,4
3,3
3,3
3,2
3,2
2,3
2,3
1,3
1,3
2,2
2,2
Ykseklik = m + n i potansiyel olarak steldir,
2,3
2,3
1,3
1,3
2,2
2,2
m+n
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.23
Dinamik-programlama
kalite iyareti #2
Altproblemlerin akmas
zyinelemeli bir zm, az sayda
birbirinden farkl altproblemin
birok kere tekrarlanmasn ierir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.24
m ve n uzunluklarnn 2 dizgisi iin farkl LCS
altproblemlerinin says mn' dir.
Dinamik-programlama
kalite iyareti #2
Altproblemlerin akmas
zyinelemeli bir zm, az sayda
birbirinden farkl altproblemin
birok kere tekrarlanmasn ierir.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.25
Hatrlama algoritmas
Memoization(Hatrlama): Bir altprobleme ait zm
hesapladktan sonra onu bir tabloda depolayn.
Ardk armalar, ilemi tekrar yapmamak iin
tabloyu kontrol eder.
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.26
LCS(x, y, i, j)
if c[i, j] = NIL
then if x[i] = y[j]
then c[i, j] LCS(x, y, i1, j1) + 1
else c[i, j] max{LCS(x, y, i1, j),
LCS(x, y, i, j1)}
nceki
gibi

Hatrlama algoritmas
Memoization(Hatrlama): Bir altprobleme ait zm
hesapladktan sonra onu bir tabloda depolayn.
Ardk armalar, ilemi tekrar yapmamak iin
tabloyu kontrol eder.
(eer)
(sonra)
(baka)
(sonra eer)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.27
Sre = (mn) =her tablo girii iin sabit miktarda i.
Yer(alan) = (mn).
LCS(x, y, i, j)
if c[i, j] = NIL
then if x[i] = y[j]
then c[i, j] LCS(x, y, i1, j1) + 1
else c[i, j] max{LCS(x, y, i1, j),
LCS(x, y, i, j1)}
nceki
gibi
Hatrlama algoritmas
Memoization(Hatrlama): Bir altprobleme ait zm
hesapladktan sonra onu bir tabloda depolayn.
Ardk armalar, ilemi tekrar yapmamak iin tabloyu
kontrol eder.
(eer)
(sonra)
(baka)
(sonra eer)
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.28
Dinamik-programlama
algoritmas
Fikir:
Aadan yukarya
tabloyu hesaplayn.
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
2
2
2
2
2
D 2
0
0
0
0
1
1
2
2
2
2
2
2
2
2
2
C 2
0
0
1
1
1
1
2
2
2
2
2
2
3
3 A
3
3
0
0
1
1
2
2
2
2
3
3
3
3
3
3
4
4
0
0
1
1
2
2
2
2
3
3
3
3
A A B C B D B
4
B
B
4
4
4 A
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.29
Dinamik-programlama
algoritmas
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
2
2
2
2
2
D 2
0
0
0
0
1
1
2
2
2
2
2
2
2
2
2
C 2
0
0
1
1
1
1
2
2
2
2
2
2
3
3 A
3
3
0
0
1
1
2
2
2
2
3
3
3
3
3
3
4
4
0
0
1
1
2
2
2
2
3
3
3
3
A A B C B D B
4
B
Sre = (mn).
B
4
4
4 A
Aadan yukarya
tabloyu hesaplayn.
Fikir:
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.30
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
2
2
2
2 D
2
2
0
0
0
0
1
1
2
2
2
2
2
2
2
2 C
2
2
0
0
1
1
1
1
2
2
2
2
2
2
3
3 A
3
3
0
0
1
1
2
2
2
2
3
3
3
3
3
3 B
4
4
0
0
1
1
2
2
2
2
3
3
3
3
A
Dinamik-programlama
algoritmas
Fikir:
Aadan yukarya
tabloyu hesaplayn.
A B C B D B
B
A
4
4
4
4
Sre = (mn).
LCS' yi, geriye
giderek
tekrar oluturun.
0
A
4
0
B
B
1
C
C
2
B
B
3
A
A
D
1
A
2
D
3
B
4
November 7, 2005 Copyright 2001-5 by Erik D. Demaine and Charles E. Leiserson L15.31
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
2
2
2
2 D
2
2
0
0
0
0
1
1
2
2
2
2
2
2
2
2 C
2
2
0
0
1
1
1
1
2
2
2
2
2
2
3
3 A
3
3
0
0
1
1
2
2
2
2
3
3
3
3
3
3 B
4
4
0
0
1
1
2
2
2
2
3
3
3
3
A
Dinamik-programlama
algoritmas
Fikir:
Aadan yukarya
tabloyu hesaplayn
A B C B D B
B
A
4
4
4
4
Sre = (mn).
LCS' yi, geriye
giderek
tekrar oluturun.
0
A
4
0
B
B
1
C
C
2
B
B
3
A
A
D
1
A
2
D
3
B
4
Alan = (mn).
Altrma:
O(min{m, n}).

You might also like