• 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