You are on page 1of 25

Algoritmalara Giri

DERS 11
Veri Yaplarnn Geniletilmesi
Dinamik Seviye statistikleri
Metodoloji
Aralk Aalar
Prof. Charles E. Leiserson
6.046J/18.401J
Dinamik Seviye statistikleri
OS-SE(i,S) : dinamik S kmesindeki
i ninci eleman dndrr.
OS-RTBE (i,S) : S kmesinin sralanm elemanlar
arasnda x Sin rankn dndrr.
Fikir : S kmesi iin krmz siyah aac kullann, ama
altaa byklklerini dmlerde saklayn.
anahtar
byklk
Dmlerin Simgelemi :
OS-Aac rnei
M
9
C
5
F
3
A
1
D
1
H
1
P
3
N
1
Q
1
byklk[x] = byklk[sol[x]] + byklk[sa[x]] + 1
Seim
Gerekletirme Hilesi : BOLUK iin
byklk[BOLUK] = 0 gibi bir gzc (kukla kayt)
kullann.
OS-SE(x,i) x kkenli alt aacn i ninci kk eleman.
kbyklk[sol[x]] + 1 k = rtbe(x)
eer i= k ise xi dndr.
eer i< k ise OS-SE(sol[x], i)i dndr.
dier durumlarda OS-SE(sa[x], i k)i dndr.
(Kitaptaki OS-Rtbe)
rnek
M
9
C
5
F
3
A
1
D
1
H
1
P
3
N
1
Q
1
OS-SE (kk, 5)
i=5
k=6
i=5
k=2
i=3
k=2
i=1
k=1
alma Zaman = O(h) = O(lg n) (krmz siyah aalar iin)
Veri Yapsnn Bakm
S. Neden altaa byklkleri yerine dmlerdeki
ranklar (rtbeleri) saklamyoruz?
C. Krmz Siyah Aa deitirildiinde, ranklar
dzenlemek zor olur.
Dzenleme lemleri : EKLE ve SL
Strateji : Ekleme veya silme ilemi srasnda altaa
byklklerini gncelleyin.
Ekleme rnei
M
10
C
6
F
4
A
1
D
1
H
2
P
3
N
1
Q
1
Ekle (K)
K
1
Yeniden Dengelemeyi Ele Almak
YD-EKLE ve YD-SL de dengenin salanmas iin krmz siyah
aac dzenlemeye ihtiya duyabilir.
Yeniden Renklendirmeler: Altaa byklklerinde deiime
neden olmaz.
Dndrmeler: Altaa byklklerini O(1) zamanda dzeltir.
RNEK :
E
16
C
11
C
16
E
8
4
7
7 3
3 4
YD-EKLE ve YD-SL hala O(lg n) zamanda alyor.
Veri Yapsnn Geniletilmesi
Metodoloji: (rn. S ral istatistik aalar)
1. Bir veri yaps sein. (krmz siyah aalar)
2. Veri yapsnda saklanacak ek bilgileri belirleyin. (alt aa
byklkleri)
3. Bu bilgilerin dzenleme ilemleri iin salanabileceini
dorulayn. (YD-EKLE, YD-SL dndrmeleri unutmayn )
4. Bilgileri kullanan yeni dinamik kme ilemleri gelitirin. (OS-
SE, OS-RTBE)
Bu basamaklar yol gstericidir, mecburi deil.
Aralk Aalar
Ama: Zaman aralklar gibi dinamik aralk kmeleri oluturmak.
i=[7,10]
dk[i]=7 10 = yksek[i]
5 11 17 19
15 18 22 23
4 8
Sorgu: Verilen bir i sorgu aral iin, kmede, i ile rten bir
aralk bulun.
Takip Eden Metodoloji
1. Altta yatan bir veri yaps bulun.
Krmz-siyah aa dk (sol) son noktasnda
anahtarlanr.
2. Veri yapsnda tutulacak ek bilgiyi belirleyin.
Her dm xde, x kkl altaacn en byk deeri
m(x)i ve anahtara karlk gelen aralk int(x)i
saklayn.
int
m
Aralk Aac rnei
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
yksek[int[x]]
m[x] = en byk
m[sol[x]]
m[sa[x]]
Dzeltme lemleri
3. Bu bilginin dzenleme ilemleri srasnda salanabileceini
dorulayn.
EKLE : aaya doru yolun zerindeki m leri onarn.
Dndrmeler --- Dzeltme = O(1) her bir dndrme iin:
11,15
30
6,20
30
Toplam EKLEME sresi = O(lg n); SLME de benzer.
19
30 14
6,20
30
30
11,15
19
19 14
Yeni lemler
4. Bilgiyi kullanan yeni dinamik kme ilemleri gelitirin.
ARALIK-ARAMA(i)
x kk
her ne zaman x BOLUK ve (dk[i]>yksek[int[x]]
veya dk[int[x]]>yksek[i])
yap i ve int[x] akmasn
eer sol[x] BOLUK ve low[i] m[sol[x]]
ise x sol[x]
deilse x sa[x]
xi dndr.
rnek 1 : Aralk Arama([14,16])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
x kk
[14, 16] ve [17, 19] akmaz.
14 18 x sol[x]
rnek 1 : Aralk Arama([14,16])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
[14, 16] ve [5, 11] akmaz.
14 > 8 x sa[x]
rnek 1 : Aralk Arama([14,16])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
[14, 16] ve [15, 18] akt.
[15, 18]i dndr.
rnek 2 : Aralk Arama([12,14])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
x kk
[12, 14] ve [17, 19] akmaz.
12 18 x sol[x]
rnek 2 : Aralk Arama([12,14])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
[12, 14] ve [5, 11] akmaz.
12 > 8 x sa[x]
rnek 2 : Aralk Arama([12,14])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
[12, 14] ve [15, 18] akmaz.
12 > 10 x sa[x]
rnek 2 : Aralk Arama([12,14])
17, 19
23
5,11
18
15,18
18
4,8
8
7,10
10
22,23
23
x
x = BOLUK [12, 14] ile
akan herhangi bir aralk yok.
zmleme
Zaman = O(y) = O(lg n) ; Aralk Arama, basit bir yol izlediinden,
her seviyede sabit i yapmakta.
akan btn aralklar listeleyin:
Ara, listele, sil, tekrarla.
Bunlar en sonda tekrar ekleyin.
Zaman = O(k lg n); k akan aralklarn toplam says.
Bu kt - duyarl snrdr.
u ana kadarki en iyi algoritma: O (k + lg n)
Doruluk
Teorem. xdmnn sol altaacndaki aralklar L, sa alt
aacndaki aralklar ise R olsun.
Eer arama saa gider ise,
{ iL: i, i ile akr} = .
Eer arama sola gider ise,
{ iL: i, i ile akr} =
{iR: i, i ile akr} =
Baka bir deyile, 2 ocuktan sadece 1ini almak her zaman
gvenlidir: ya bir eyler buluruz, ya da bulunacak bir ey
yoktur.
Doruluun spat
spat. Aramann nce saa gittiini varsayn.
Eer sol[x] = BOLUK ise, iimiz tamam, L = .
Aksi halde, kod, dk[i]>m[sol[x]] olmas gerektiini dikte
ediyor. m[sol[x]]in deeri, jL olan bir araln son noktasna
denk gelmektedir ve Ldeki herhangi baka bir aralk yksek[j]den
daha byk bir yksek son noktaya sahip deildir.
j i

high[j] = m[left[x]] low(i)


Ayrca, { iL: i, i ile akr} = .
Doruluun spat (Devam)
Aramann nce sola gittiini varsayn ve
{ iL: i, i ile akr} = olduunu varsayn.
Bu durumda, kod, jL iin dk[i] m[sol[x]] = yksek[j]
sylyor.
jL olduu srece, i ile akmaz ve yksek[i]<dk[j] olur.
Ancak, ikili arama aac kural, btn i R iin, dk[j]
dk[i] olduunu sylyor.
yleyse, {iR: i, i ile akr} = .
j i

You might also like