İKİLİ ARAMA AGAÇLARINDA DÜGÜMLERE HlZLI ULAŞMAK İÇİN

advertisement
•
Ikili Arama
SAU Fen Bllimleri Enstitüsü Dergis1
7 .Ci lt, 2.Sayı (Temmuz
2003)
Ağaçlarında Dü�ün1le-re
Htıh
Ulaşmak Için
•
Bir Yöntem Ve Gerçeldenmesi
I.Ateş, N.Yumuşak
•
İKİLİ ARAMA AGAÇLARINDA DÜGÜMLERE HlZLI ULAŞMAK İÇİN
BİR YÖNTEM VE GERÇEKLENMESİ
Ihrahim
ATEŞ, Nejat YUMUŞAK
•
Özet-Bu ntakalede
arama ağaçları
üzerindeki işlemlerin daha hızlı yapılmasına yö nelik
yöntemin
sözcükler
ve
sayılar
nasıl
için
kullanılabileceğine ve mevcut ağaç yapılarıyla (AVI.J,
RB Ağacı gibi) kaırşılaştırı1masına yer verilmiştir. Bu
amaçla bir bash t ablosu ve dengeli bir ikili arama
ağacı
kullanılmaktadar.
Veriye uygun
alt ağaçlar oluştuırul1113kta ve bu alt
olarak anlamlı
ağaçlara bash
tablosu
yardınuyla ulaşılnıaktadır. Çok sayıdaki
verileri n tek bir ağaçta t oplanıp bu büyük ağaçta
işleın yapmaktansa alt ağaçlara bölerek daha az veri
üzerinde işlem yapmak amaçlanmıştır. Bu şekilde
veriler üzerindeld işlemler daha az eleman üzerinde
yapılmaktadır.
Bu
performansı
da
etkilemektedi r.
Analıtar kelbtıeler
ağacı,
-
o lumlu
Ağaç veri yapısı, RB
yönde
ağacı, AVL
ağaçların perforınans karşılaştırmaları.
Abstract-In this study,
değeriyle tutar. Bu uygun
olma yan bir yapıdır çünkü istenile n bir elarrıana
uL a ş abilmek için O(n) adet t ar:ıma gerektirir Bu nedenle
veriyi anahtanyla saklayabi]en ve bu sayed e daha hızlı bir
erişinıe olanak veren yapılara ihtiyaç du yu lmaktadır. Bu
tip yapılar il şkisel veri yapılan olarak isinılendirilirler. Bu
tip yapılarda veıiler pozisyonlarına göre d eğil değerlerine
göre
güncellenirler.
Öınek ol arak ağaç yap ıl an
.
verilebilir[ J].
AVL (Adelson-Velskii ve Landis) ağacı dengelerınllş bir
to make process in the search trees. Also it
a data structure using this method. It is
ikili arama ağacıd ır Ağac ın derinli ği O(logn) seklin de
method
proposed a
explained how th!s method is used for strings and
numbers.
lt
is
shown
performance
hetwcen other trees (like AVL,
and
Ardışıl veri yapıları, verileri
that
it is
nıakes easy
is g ivc n
veri yapısı öneınlidir. Eğer
yazılım büyük miktarda verilerle çahşıyorsa k ulland ığı
veri yapısı dah a da önem taşımaktadır. Veri silme, v eri
ekleme veya veriler üzerinde arama, sıralama işle ml eri
ne kadaı hızb yapılabilirse yazılım o kadar etkin çalışu�.
V eriyi yerleştirme a çısınd an veri yapıları ikiye ayrılırlar�
Ardış ı l (sequence) ve ilişkili (associative)(3].
Bir yazılım için kulland ığı
bir yö ntem ve birleşik bir veri yapısı önerilmektedir.
Bu
ı. GİRİŞ
(Search Tree)
a blanced
lbinary
implement this data
RB tree)
search
stru c t ure
tree
.
It
.
comparison
A bash tabi e
are
used
to
i s builded the
catcgorized s ubtrees according to data. Has h table is
used to access data in the subtrees. It is aimed to
process above relatively little amount of data instead
of huge amount of data. In this way the nuınber of the
process will be decrease.
It
will be g ood affect for tbc
progran1 performance.
Keywords-
.
ayaı·lanmaktadır. B unun anlamı sağ ve sol alt a ğaçlann ın
H.=:rhangi bir düğüme
derinliğe sahip olmasıdır.
bağlı alt ağaç ların yü kseklikleri arasındaki fark en fazla
bir olmal ıdır. Ağacı dengeli kurmak i çin A vL ağacı
kullanılırsa, ağaç üzerindeki ekleme, arama ve silme gibi
işlemleri yapan algorit nıaların k armaşıkhğl O(logN)
aynı
kadar olur[2].
ağacı her düğümü RED veya BLACK renk
özeliği ne saltip özel bir ikili arama ağacıdır Ekleme hariç
diğer ağaç iş lemle ri O(logn) zamanda yapılır. Herha ngi
bir eleman e klendiğ ind e tün1 ağac ı n tekrar güncel1enn1esi
gerekmektedir Çünkü bir eleman ekl endiğinde ağacın
dengesi bozulmaktadır. Yeniden d en g el e n1e işi dönüşüm
olarak bilinen
basit
bir değişiklikl e
(rotation)
sağlanmaktadır[ 1].
Red-Black
.
.
Tree Data Structures, RB Tree, A VL Tree,
Performance comparision of trees.
I.Ateş;Bilgisayar
ve
Bilişiın Mühendisliği
Bölümü,
Fen
Bilimleri
Enstitüsü, Sakarya Üniversitesi, 54187 Esentepe Sakarya
e-posta:[email protected]
N.Yunıuşak;Bilgisayar MOhendisliği Bölümü, Muhendishk Fakultesi,
Sakarya Üniversitesi, 54 ı 87 Esentepe Sakarya
e-posta: nyumusak@sakarya .edu.tr
İkili Arama A�nçlnnudu l>Oğümlcrt' Ilaılı Ulaşmak i�in
SAU Fen Bilimleri Enstitüsü Dcrgısı
7.Cilt,
II.
Uiı· \'llntrm Ve GrrçekJcn
mesi
I.Att$, N.Yumuşak
2.Sayı (Temnıuz 2003)
•
bir adres yoksa bu sözcüğün ağaçta
o]nıadığına k a ra r verilir. Aksi taktirde wl" alt ağacına
dal lanı lır ve bu alt ağaçta aı anıa ya p ıln1 1 Ş ol ur
ÖNERİLEN YÖNTEM (SALI{IJ\1 \'ERİ YAPlSI)
Bu yön tem de
,
veri yapısı
o l ara
k bir hash tablosu
ve
Rl3
.
ikili arama ağacı b i r likte kullanılmaktadır. Hash t a b1 osu
bir durun1 ola n
için is tenme y e n
çatışnıa
RB ikili ağacında ay n ı sözcük aransaydı verinin ağaçta
ol nıa n-ıas ı dunınnında hi 1 c t ii nı nğ,1cn1 bu sözcük için
( collision)
durumunun ver i le r i sıruflandım1ak için kullanılnıası söz
konusudur. Kullanılan bash fonksiyonu aynı
herhaııgi
Eğer
kategoriye
taraıu11ası
ait değerler için aynı indis değerini üretmektedir[4.J.
gcrckccckti.
ı
A
13
OX6FOO
� lJl.L
-
------
ikili aran1a ağacın ı n özcllcştirilıniş bir şeklinde
saklanır. Bu ağaç yapısında k ök tek elcnıanJıdır ve sadece
Veriler
hash tablosuyla
aras ı ndakj
ağaç
bağlantlyı
amacıyla kullanılmaktadır. Kök, ara ma
ağacına
26
y
z
NUI..L
ox
6
-------
sağ1aınak
bağl a n t ı J ı
liste yardınuy la bağlanmaktadır. Veri l er, te k bir
saklanmak yerine, an lamlı alt
saklann1 akta dır .
V eriler üzerinde
2'>
-------
ağaçta
ağaçlara
bölünerek
herhangi
bir
A
i ş len1
yap ılmak istendiğinde, tüm ağ aç ye rin e v eri ni n a i t olduğu
alt ağaç üzerinde işlemler yapılınaldır.
II.l. Sözcükler
İçin Gerçekierne
Sözcükler için bu yapı ku lla n ıldığın da
harf için hash t ablosunda bir kayıt
tablosuna yerleşim,
,
alfabedeki her
oluş turu lu r.
Hash
\
1'
\
1
\
\
\
1
1'
' ·"
1
\
H(x) =asciicode(x)-65;
bash fonksiy onu ya rd uruyla bulunan indis değerine b ağlı
olarak yapılmaktadır. İn dis d eğeri hash tablosw1da, harfin
hangi sırada ya zıldığını gösteren bir değerdir. Hash
tablosunu n ikinci bölmesinde ise i lgi h alt ağacın kök
•.
•
ı
•
elernamnın adre s i bulunmaktadır. Bu adres yardın11yla alt
z
ağa ç l ara dall anı l ı r.
Hash tablos u statik ola rak yaratılmaktadır. Sözcükler için
yaratılan haslı tablosunun birinci bölı nesi nde A 'dan Z,ye
,
kadar harfler yer almaktadır. Hash tablosunun ikinci
bölmesinde ise bu harflerle ilgilı alt ağaç lann adresleri
NULL
bulunmaktadır.
Başlangıçta adre s alanları,
d eğ eri ni göstermektedirler.
1
Bir harfe ait her hang i bir katar eklenrnek i stendiğind e o
harfe ait alt ağaç olup olınadığına bakılır. Eğer varsa o
ağaca giderek eklenıe işlemi y ap ılır Aksi taktirde
.
1
\
alt
Şekil
alt
ağaç için biı kök ya ratılır ve katar, bu alt ağaca eklenir.
Yaratılan kökün ad r es i hash tablosunda ilgili yere yazılır.
Arama yapınak
için
ö n celikle
,
ilgili
bir
aram a
işlemine
oln1adığına karar
gerek
duyulmadan,
ele nıa nı n
o
1
1
/
\
tablosuyla alt ağaçlanı
h e rh ang i
sözcüğün
\
'
\
/
1
\
dallann1a.
biJ·
yardımcı
yöntem
�t�l�anılınadan RB ik il i aran1a ağacın d a veya herhangi bir
ıkılı
araına
sözcüğü
düğün1
verilir. Aksi taktirde i lg ili alt ağaca
dallanarak aran1a işlemi
1. Hash
Bir
al t ağacın olup
olmadığına bakılır. Eğer alt ağaç yaratılnıarmşsa, başka
1
1
ağac ı n da
ı
a r aı say d ı
z iya re t
,
saklanması
d urumund a "Train"
"T" haı-flne gelene kadar blı· çok
edilıniş
olacak
bu
da arama işJemini
yavaş lat:ınış olacaktı.
alt ağaçta yapılır.
Örnek o ]aı·�k 26000 elcnıanl ı dengel i
bir arama ağac ı nda
.
he��angı bır eleınan ı n aranm a mali
yeti yak laş ık olarak
15 tır. Buna karşın bu yönte mde
"T" h ar fi ile başlayan
elemanları n sayısı 1000 v a rsa y ıl ırsa
aran1a mal iyeti
yaklaşık olarak 1 O olur.
Öınek olarak "n·ain" sözcüğünü bu yapı da aradığımızı
düşünelinı. Önc e lik le "T" harfinin hash tablosundaki
indisi hash fonksiyonu yardınuyla bulunur. "T" h ar fm i n
1 9 'dur. H aslı tablosunun 19 uncu gözüne
indis de ğeri
gidilir. Adres gözünde bir adres olup olmadığ111a bakılır.
,
'
126
İkili
SAU Fen Bilim1er1 Enstitüsü Dergisi
7 .Cilt, 2.Say1
(Temmuz 2003)
1\ toplan1 elenıarı s ayısı ve Ni> i har fi
ile
başlayan
elemanların say ı s ı olmak üzere�
için
Bir Yöntem Ve Gerçeklenınesi
i.Ateş, N. Yumuşak
Arama Ağaçlannda Düğüınlerc Hızh Ulaşmak
\'erinin logaritma on tabanına g öre logaritması al ı n ı r ve
sonuçtan küçük
çıkan
tamsayı d eğ eri indis
kabul
ve p ozitif s ay ı lar iç i n iki ayrı hash tablosu
yaratmak
uygun
olacakt ı r.
�egatif
tamsayıların
logaritması a l ı nma d a n önce n1ut lak değeri alınmalıdır.
Ayrıca logaritma O tan ımsız olduğu için O sayı sına
doğrudan O in d isi verilir.
edilir. Negati f
sözcüklerin hepsinin i harfi ile baş lamadığ ı varsayımına
dayanarak aş ağ 1 dak i durum sözkonusudur�
ilk
.
.
için indi s olarak 2 üretecektir.
ll O için de 2 üretmektedir. 1 000 için 3, 10000 içi n 4
ür e tme k ted ir
Bu şekilde aralıkiara göre alt ağaç l ar
üretilmektedir. o halde 1o alt ağacında nunimum ı o
de ğe r i maksimuın 99 değeri bulunacaktır. l 000 alt
ağacı nda ise minimun1 1 000 tnaksiınuın ise 9999 say ı sı
Ornek olarak 100 sayısı
O halde, burada sunulan yöntemin, genellikle sıradan bir
ikjli aranıa ağacından, daha iyi sonuç verdiği söylenebi1ir.
rı. ı. Sayılar Için Gerçeldeme
•
2
ı
ı
NULL
ox
10
bulunacaktıı·.
4
3
1000
100
OX3F26
NULL
.
----
Bir arama yapı laca ğ ı zaman bash tablosu yardımı yla
ilgili olan alt ağaca dallanılır ve aranıa bu alt a ğaçt a
Sayılar iç in üretilen bash tablosu dinamik
yapılır.
o lmakt ad ır. Gelen sa yılara bağ l ı olarak bash tab l os u
...
'
----
1
,
1
-----
'
oluşturul mak tadır.
III. ÖLÇÜMLER
lO
Beş farklı dosya
için üç veri yapısına ait, ağaç o luşttınna
incelenmiştir. B irinci dosyada 25 .O1 O,
perfoıınanslar ı
dos yada 275.293, üçüncü dosyada 350.552,
dördüncü
d osya d a
550.551,
beşinci dosyada ise
1 .1 O 1 .100
eleman bulunmaktadır. Şekil 3 \ün X
ikinci
raka mlar
eksenindeki
1
1
1
/
1
\
'
\
1
/
sayıları
temsil etmektedi r
Ağaç Oluştunna Pe rfonna nslan
15 -
.
1
1
•
'
ı
'
•
1000
o
1
AVL
Salkım
-+-'J
2
3
Yeri
4
5
Sayısı
�----- --------- ----�
Şekıl 3
1
1
/
/
1
1
/
1
1
)eki!
1
1
1
1
2. Sayılar için alt
Sayılar için
1
bu
/
1
\
'
\
\
\
ağaçlara dallanma.
veri
yap ıs ın nı
Tablo 1
1
1
1
1
/
\
\
\
'
kullanılabilnıesi
aşağıdaki gibi bir hash fonksiyonu kullanılabilir.
J-f(x)-=floor (abs(logx))
.
Örneğin grafikte, 275.293 eleman bulunan dosya 1 ile
1 .1 O 1. 100 eleman bulunan dosya ise 5 ile gösterilmiştir.
'
\
\
\
1'
bu
,
1
.
Ağaç oluşturma performansları.
A.gaç o 1 uşturma ya ı. ış
Veri Sayısr
25.010
2 275.293
ıçın
3
4 550.551
5
127
350. 552
1. ı 0 1 .100
·ın
AVL
ö çüm d eğerleri.
RB
Salkım
O, 17
0 15
1,956
1,833
2,46
2,303
2,18
5,56
4,506
4,156
14,006
ı ı ,237
9, 1 24
O, 17
2, 17 3
,
t ll
'
•
f
rnstitlisti lkı!!l�l
ieri
Diliın
SAli FGn
7 c ıtt, 2. Sn yı
( r�mınu; 200J >
r
ıl
kı ı )
·ı
•t
q
d
ı
ıı
ü
ç
il
ıt
a
i�leıninc
c
nı
k
k
e
n
a
m
le
e
a
c
a
Ağ
(l( t (ıtı
O
ı
ılı.
:ı
)
la
�
:ı
h
ıı
e
'd
00 OOO
4'te göıiilmcktcdır. 1
. al',H,
k
.
ıe
ye
k
k
e
ıı
ıa
:n
lt
t'
0.000 adet
0
.0
0
1
e
v
0
0
.0
0
0
.0
5
ıı ı ıı -;. t ıı
ı
k
t'
K
ıı
ı
ı
a
..,l
ıı
a
m
ır
f(
ıc [K'r
yapılarının elenımı ekleıı
_..
----
ı
S,ıU ııu
\\1
lc-Luın
nıu
\C
RB
rt)•tdUHl)tlll
•
prılnınun'
40 -- - -- .
,_.._
c
w
-
•
-
--
hclıı
-
30
.._.
c
ro
E
ro
N
20
•.
--"-·
10
f •
�-·-icr..�
.-
1
ı
ı
�
• ..:ı ı
...
"
Şekil
4. Ağ<.ıca dcınan t.:kkıııc ıwrft>ı 111an�l&lrı
Tablo
c�lcmt.:\l'
i§hın
·
"
-
S ll
Elern�m
Ek ı c nı c Suyı�ı
1 00. 000
t"!,;llııı
-
AVI.
-
-
..-..
1.000.000
-
--
ı
-
ı 0.000.000
lll
'
1 (l
'
1)( ,.ı
Sema n Arama Perfonnansıan
1
ı
60
.
fıO
�4
c
(/)
...__.
..
...._ ........
-------
---
-----
-
.
1
..
0
c:
ro
30
ro
20 .
E
.
--·--·
-
-
--
----
N
--
-
-
10
of1
3
4
l\ ra ma Sa yı s ı
---·--
S
-
·
Lleınan
Tablo 4. JJicnıan
�
3
�-
a ra
. ma
Pl'tlnıınan �da rı
arama�cı
-
A ra m a S�yısı
1 0 0 .0 0 0
1.000.000
� 000 . 00 0
ı·ı·I S\
1 1
1
ıı
.
j �J}
.... lt lt ı ı
( lJ
ı \ �� .:.
.
!\ VL
R trrıce
-
O, 42 ı
-
.
1 0.000.000
3, �C))
2( ),92
0,3J
--
---
ı4 g,037
-
111
1
U ll
1
•
2, 744
-
-
13,71
.......__
_
J2.öJ7
-----
c
tıb c
•
ll all,
•
--
--
S:ılkı
ın
0.1·ll
1.50c�2
7, 75}
1 · 1 01
.
ıu (
s ( Illi 1>
ısı
.\ll 1.
'
•
•
.ııd
ı
1
1
4
1
ı
\ppllld(IUU-.
1 lJ ı
�tr' h 1 t 11 r
.
"
.
lU
(
t\ tl h
1101 "IIAI·I·J·f.
Sı: u\
tull
.uul
.
1
t
•
1
.
s.rc•ı.
1 1 . (
( 1( )"
d(
•'
'
] Jf '
� .l\11\l,ıtı }CJl)f)
----
ı
•
ı J
,
arda aıaına işlcnıi y;:ıpılarak
ağa,· yaptl.ırıtıııl elcuı.ıll
ararna pcrfonnans lan ınce le n ın i ştir.
ı -
c. < H K 1
\ 11.1 h ı
S,·l7.1
2X,7c,2
-
l'rcnta
1
( C11llp.111\ ' Jl)t)fJ
l h \\ 1 1 s
1l
11,7(1,.,
()
l)�.!')
ı 4 ..� �/ ı
16,7:'\4
5.000.000
\.ıl�.
e-=
----
,
('JI'<>JtS(l
d\·geı'rr
1.000.0000, 5.000.000 ve 10.000.000 eleınan ı\ ın
2
,1
1 ,
1
P.ar.at\.1 \ t\lllllh
1 RH
--
013,11
----
[ ·1
Şekil s·te ağa�· Ü!.erinde clellli.lll ararll�l ı�klJllllC ,\lt
ölçüın değerleri gür(ilınektt·dir. 1 00.()1)()\kn ha� Id\ .tı.:k
1
\t\1
'
2.
J
..
__
Se
k11
•
iu
\\c .k\ 00 ...
ı � 1 ( ) 1< ı ) \' 1
ı.
4
Ic
1
#
J·kkrw s �ı v
ı sı
•
ı
3
1.
ı ı 1 1 ı 1 Bl
1 )(''rı, 'J1 nrnt"". P1
�liHıl\ 1
1
ı
3
ı
2
rls
1
,
•
o
1
(�C h )
•trık,ınr
,,
Illi
•
\Cfl
l\lclllllic,
nsJart
Sernan EJ<Ieme Perforn1a
.
ll.
< n
"1
••
.
..
l
ıt
••
1r
�,
nt1u \
n
oı
1l 9i
Download