WYBRANE METODY DOSTĘPU DO DANYCH. WSTĘP Coraz doskoalsze, szybsze i pojemiejsze pamięci komputerowe pozwalają gromadzić i przetwarzać coraz większe ilości iformacji. Systemy baz daych staowią więc jedo z podstawowych zastosowań iformatyki. Efektywa orgaizacja daych wymaga specjalego oprogramowaia. W kolejych podpuktach zostaą przedstawioe pojęcia i problemy związae z gromadzeiem i przetwarzaiem daych. Zaczijmy od zdefiiowaia pojęcia bazy daych. Baza daych jest to zbiór daych o określoej strukturze, zapamiętay w pamięci pomociczej komputera, mogący zaspokoić potrzeby wielu użytkowików korzystających z iego w sposób selektywy w dogodym dla siebie czasie (defiicja sformułowaa w latach 962-96). Oprogramowaie umożliwiające współpracę użytkowika z bazą daych jest azywae systemem zarządzaia bazą daych. Oprogramowaie to zarządza przede wszystkim orgaizacją daych w pamięci oraz umożliwia ich przetwarzaie. Wyróżia się trzy główe klasy modeli daych, różiące się rodzajem istiejących między daymi powiązań. Są to modele: hierarchicze, sieciowe i relacyje. Obecie ajbardziej rozpowszechioy jest model relacyjy, w którym zależości między daymi reprezetowae są przez rekordy daych zawierające odpowiedie klucze. W ogólie rozumiaych zagadieiach baz daych ależy wyróżić trzy podstawowe problemy:. Problem rozmieszczeia, polegający a podaiu takiego algorytmu A, który a podstawie klucza K i zawartego w rekordzie R i przydzieli miejsce (adres) dla tegoż rekordu w określoej strukturze S. 2. Problem odszukaia rekordu R i w strukturze S polega a ustaleiu adresu tego rekordu, a podstawie klucza K i i algorytmu A.. Problem wyszukaia, występuje wówczas, gdy a podstawie atrybutów iych iż klucz ależy wyszukać odpowiedi rekord. Rozwiązaie tego problemu polega a przetesto-waiu pól wszystkich rekordów i porówaiu ich zawartości z wartością zadaego atrybutu. 2. CHARAKTERYSTYKA WYBRANYCH STRUKTUR DANYCH Istiejące struktury daych moża ogólie podzielić a dwie grupy: struktury stałe, iezależe od zebraych w ich elemetów oraz struktury dyamiczie zmiee, zależe od zgromadzoych w ich elemetów. Do struktur stałych ależą: wektory, macierze, rekordy i tablice, do struktur dyamiczych: listy liiowe, ieliiowe i sieci. Prezetację struktur zacziemy od tablicy. Tablica jest strukturą jedorodą, składającą się ze składowych tego samego typu zwaego typem podstawowym, jest strukturą o dostępie swobodym bowiem wszystkie elemety mogą być wybrae w dowolej kolejości i są jedakowo dostępe. Tablica jedowymiarowa o rozmiarze ozaczaa jest T[]. Tablica dwuwymiarowa jest aalogiem macierzy prostokątej. Przedstawić ją moża jako m szeregowo ustawioych tablic o rozmiarze. W odróżieiu od tablicy rekord jest uporządkowaym zbiorem daych iekoieczie tego samego typu. Powyżej opisae struktury zwae są często podstawowymi, gdyż staowią elemety, z których tworzy się bardziej złożoe struktury. Zdefiiowaie typu daych i astępie określeie specyfikacji zmieych tego typu ozacza, że zakres wartości przyjmowaych przez te zmiee i rówocześie ich wzorzec pamięciowy są ustaloe raz a zawsze. Zmiee zadeklarowae w te sposób azywae są statyczymi. Jedakże, jest wiele zagadień wymagających daleko bardziej skomplikowaych struktur daych. Charakterystyczą cechą tych struktur, wyróżiającą je spośród struktur podstawowych (tablic, rekordów czy zbiorów), jest możliwość zmieiaia ich rozmiarów. Tak więc ie moża przydzielić stałej ilości pamięci dla tego typu struktur, w kosekwecji czego kompilator ie może określić kokretych adresów składowych takich zmieych. Struktury takie azywamy strukturami dyamiczymi. Główymi reprezetatami tych struktur są listy, drzewa i sieci. Wszystkie rekordy wchodzące w skład takich struktur mają jedo lub kilka dodatkowych pól, zwaych polami łączikowymi lub polami wskaźikowymi. W praktyce pola te zawierają adresy elemetów połączoych z daym rekordem.
Wybrae metody dostępu do daych Zbiór, w którym każdy elemet ma co ajwyżej jede poprzedik i jede astępik, azywamy listą liiową. Szczególymi przypadkami listy liiowej są: lista cyklicza, w której ie moża wyróżić początkowego ai końcowego elemetu oraz listy o specjalych metodach dostępu takie jak: stos - w którym dopisywaie i usuwaie elemetów odbywa się z jedego końca, kolejka - rekordy są dopisywae z jedego końca a usuwae z drugiego (tz. usuięty może być tylko ajwcześiej wpisay elemet). Strukturę, w której elemet może posiadać wiele astępików, lecz jede poprzedik azywamy listą ieliiową lub drzewem. Drzewo, w którym liczba astępików wyosi zero, jede lub dwa, to drzewo biare. W przypadku istieia elemetów o wielu poprzedikach i wielu astępikach mówimy o sieci.. CHARAKTERYSTYKA WYBRANYCH METOD DOSTĘPU DO DANYCH Po krótkim scharakteryzowaiu ajczęściej występujących struktur daych przejdziemy do aalizy efektywości różych metod dostępu do zbiorów. Orgaizacja daych w pamięci komputera jest ściśle związaa z przyjętą metodą przeszukiwaia, zaś wybór metody jest zależy od sposobu przetwarzaia daego zbioru. Jeśli a przykład przetwarzaie polega a częstym przeglądaiu całego zbioru wystarcza sekwecyja metoda jego przeszukiwaia i orgaizacja liiowa, gdy wyszukuje się często wybrae, pojedycze rekordy ależy rozpatrzyć metodę ideksową, metodę biarego drzewa poszukiwań lub metodę fukcji mieszającej. Pociąga to za sobą odpowiedią orgaizację zbiorów daych. W celu porówaia omawiaych metod zostaie przyjęty pewie parametr porówawczy, będzie im średia liczba porówań jakich ależy dokoać, by zaleźć dowoly rekord, lub iaczej średi czas przeszukiwaia. Parametr te wyraża się wzorem: L= cip i i= gdzie : L - średi czas przeszukiwaia ; c i - liczba prób wykoaych w celu odalezieia i-tego rekordu; p i - prawdopodobieństwo odwołaia do i-tego rekordu. Zakładając, że prawdopodobieństwo odwołaia do każdego rekordu jest takie same (p i=p=/=cost) powyższy wzór przyjmuje postać: L= p ci i=.. Przeszukiwaie sekwecyje Jak już stwierdzoo wcześiej w przypadku częstego przeglądaia całego zbioru stosuje się sekwecyją metodę przeszukiwaia i liiową orgaizację daych. Algorytm przeszukiwaia sekwecyjego sprowadza się do kolejego testowaia rekordów i sprawdzaia czy zalezioo rekord, którego klucz jest idetyczy z zadaym. Średi czas przeszukiwaia w tej metodzie wyosi: L= p ci i= przy czym: c i= i p=/ stąd otrzymujemy: L= i a więc ostateczie: i L= 2 2
Wybrae metody dostępu do daych.2. Metoda biarego drzewa poszukiwań Jeżeli drzewo jest tak zorgaizowae, że dla każdego węzła t i wszystkie klucze z lewego poddrzewa węzła t i są miejsze od kluczy węzła t i, a klucze z prawego poddrzewa są od iego większe, to takie drzewo jest azwae drzewem poszukiwań. W drzewie takim moża zaleźć określoy klucz posuwając się wzdłuż drogi poszukiwaia, począwszy od korzeia i przechodząc do lewego lub prawego poddrzewa daego węzła w zależości tylko od wartości klucza w tym węźle. Postępując w sposób rekurecyjy (schodząc w dół drzewa), za każdym razem odrzucamy (miej więcej) połowę elemetów (z tej iedobrej połówki drzewa). Jest to iewątpliwa oszczędość czasu w stosuku do list liiowych i przeszukiwaia sekwecyjego. Każde drzewo biare może po odpowiedim rozmieszczeiu elemetów, idetyfikowaych za pomocą kluczy, stać się biarym drzewem poszukiwań, dotyczy to rówież drzew wyważoych. Drzewo jest dokładie wyważoe jeżeli dla każdego węzła liczby węzłów w jego prawym i lewym poddrzewie różią się co ajwyżej o jede. Średia liczba porówań koieczych do zlokalizowaia klucza w drzewie dokładie wyważoym o węz-łach wyosi w przybliżeiu h=log()-. Jedak ie każde drzewo poszukiwań jest wyważoe. Obliczymy zatem średi czas poszukiwaia dla dowolie ukształtowaego drzewa. Zakładając, że każdy klucz może stać się korzeiem, prawdopodobieństwo tego, że i-ty klucz jest korzeiem wyosi / (- liczba rekordów w zbiorze). Lewe poddrzewo zawiera wówczas i- węzłów, prawe -i. Przyjmując, że: a i- - ozacza średią długość drogi w lewym poddrzewie a -i - średią długość drogi w prawym poddrzewie oraz, że wszystkie permutacje z pozostałych - kluczy są jedakowo możliwe. Średia długość drogi w drzewie o węzłach jest sumą iloczyów poziomu każdego węzła i prawdopodobieństwa dostępu do iego: a = pi i gdzie p i jest długością drogi dla węzła i. W przedstawioym powyżej drzewie węzły moża podzielić a trzy klasy:. i- węzłów w lewym poddrzewie ma średią długość drogi a i-+; 2. korzeń ma długość drogi rówą ;. -i węzłów w prawym poddrzewie ma średią długość drogi a -i+. Tak więc, poprzedi wzór moża przedstawić jako sumę trzech składików: i + + (a-i+) i a ( ) i = (a i-+) Po odpowiedich przekształceiach (wykorzystując fukcję harmoiczą) otrzymujemy: a 2(l()+ ) - = 2 l() - c gdzie - liczba kluczy, - stała Eulera.577 Poieważ średia długość drogi w drzewie dokładie wyważoym wyosi w przybliżeiu a ' = log()- to otrzymujemy: a 2 l( ) lim -> = = 2 l 2.86 ' a log( ) Powyższy wyik mówi o tym, że dzięki pracy włożoej w skostruowaie drzewa dokładie wyważoego moża spodziewać się średiego skróceia drogi poszukiwaia o około 9%. Należy podkreślić słowo średio,
Wybrae metody dostępu do daych gdyż zysk te może być iewspółmierie większy, w iekorzystym przypadku, w którym drzewo całkowicie degeeruje się do listy. Przypadek taki ma miejsce, gdy strukturę drzewiastą wykorzystamy dla uporządkowaych (w jakikolwiek sposób) daych. Przykładowo jeśli do drzewa będą wstawiae po kolei elemety:,2,,4,5,6,7,8,9,, wówczas struktura staie się ie drzewem, lecz listą liiową, bo za każdym razem owy elemet (jako ajwiększy ze wszystkich), będzie podczepiay do prawego astępika elemetu wysuiętego ajbardziej a prawo... Orgaizacja dostępu za pomocą B-drzew Metoda drzew biarych stosowaa jest przede wszystkim wtedy, gdy przeszukiway zbiór zajduje się całkowicie w pamięci operacyjej. Gdy zbiór rozmieszczoy jest w pamięci zewętrzej zasadicze zaczeie ma liczba trasmisji z pamięci zewętrzej do pamięci operacyjej. Operacja ta wymaga około 4 razy więcej czasu iż operacja porówaia. Przyjmijmy, że węzły drzewa są przechowywae w pamięci pomociczej (p. dyskowej). Użycie drzewa biarego dla, powiedzmy, milioa obiektów wymaga średio około log 2 6 2 kroków szukaia. Poieważ w każdym kroku wymaga się dostępu do dysku (z ieodłączym opóźieiem czasowym), to zaczie bardziej pożądaa byłaby taka orgaizacja pamięci, która zmiejszyłaby liczbę odwołań. Ideale rozwiązaie tego problemu staowi drzewo wielokierukowe. Wraz z dostępem do pojedyczego obiektu w pamięci pomociczej możemy pobrać bez dodatkowych kosztów całą grupę daych. Sugeruje to podzieleie drzewa a poddrzewa staowiące jedostki o jedoczesym dostępie. Te poddrzewa azwiemy stroami. Na rysukach pokazao drzewo biare podzieloe a stroy zawierające po węzły oraz odpowiadające mu drzewo wielokierukowe. 2 4 7 5 5 5 5 7 4 7 4 5 6 Biare drzewo podzieloe a stroy po elemety 2 4 5 7 45 5 6 5 7 4 5 7 Drzewo wielodrogowe utworzoe w wyiku pogrupowaia wierzchołków drzewa z poprzediego rysuku 4
Wybrae metody dostępu do daych Idea omówioa w powyższym przykładzie doprowadziła do zapropoowaia kocepcji tzw. B-drzew. Są oe wykorzystywae do wyszukiwaia rekordów w bazach daych. Drzewo azywamy B-drzewem klasy t (h,m) jeżeli jest oo drzewem pustym (h = ) lub spełioe są astępujące waruki:. Wszystkie drogi prowadzące z korzeia drzewa do liści są jedakowej długości rówej h, liczbę h azywamy wysokością drzewa 2. Każdy wierzchołek, z wyjątkiem korzeia i liści, ma co ajmiej m + potomków, korzeń jest albo liściem albo ma co ajmiej 2 potomków. Każdy wierzchołek ma co ajwyżej 2m + potomków. Z maksymalym wypełieiem B-drzewa klasy t(h,m) mamy do czyieia wtedy, gdy w każdym jego wierzchołku zapamiętaych jest 2m elemetów, a z miimalym gdy w wierzchołkach pośredich i w liściach zapamiętaych jest m elemetów a w korzeiu zapamiętay jest elemet. Przy tych 2 skrajych możliwościach wypełieia, przy ustaloej liczbie N elemetów ideksu, otrzymujemy astępujące ograiczeie liczby h poziomów w ideksie zorgaizowaym według struktury B-drzewa klasy t(h,m): log 2 m ( N ) h log m N 2... Odszukiwaie w B-drzewie Przy zaej wartości klucza x problem odszukaia sprowadza się do zalezieia stroy a której zajduje się elemet o kluczu rówym x. Poszukiwaa stroa może być korzeiem, wierzchołkiem pośredim bądź też liściem. Wyszukiwaie realizowae jest zgodie z poiższym algorytmem.. Pod p podstaw idetyfikator stroy korzeia. 2. Czy p jest wartością iezerową? - Tak, przejdź do kroku - Nie, koiec algorytmu, brak poszukiwaego elemetu w ideksie. Sprowadź stroę wskazywaą przez p. 4. Czy x jest miejsze od ajmiejszego klucza a stroie p? - Tak, pod p podstaw skrajie lewy wskaźik stroy potomka, przejdź do kroku 2 - Nie, przejdź do kroku 5 5. Czy a stroie p zajduje się klucz o wartości x? - Tak, koiec algorytmu, zalezioo szukay elemet - Nie, przejdź do kroku 6 6. Czy a stroie p zajduje się klucz o wartości większej od x? - Tak, pod p podstaw ajbardziej prawą stroę potomka zawierającą wartości kluczy miejsze bądź rówe ajmiejszemu kluczowi o wartości większej od x z aktualej stroy i przejdź do kroku 2 - Nie, pod p podstaw skrajie prawą stroę potomka, przejdź do kroku 2 Poieważ w trakcie wyszukiwaia liczba sprowadzoych stro jest co ajwyżej rówa wysokości B-drzewa, zatem złożoość czasowa powyższego algorytmu jest rzędu O(log mn)...2. Dołączaie elemetu ideksu Dołączaie poprzedzoe jest algorytmem wyszukiwaia i, ma ses tylko wtedy, gdy tamte zakończył się iepomyślie. Wówczas zaa jest stroa liścia, do której ma być dołączoy elemet. Dołączeie to może być bezkolizyje lub może spowodować przepełieie stroy (gdy a stroie zapamiętaych jest już 2m elemetów). W pierwszym przypadku owy elemet dołączay jest w te sposób, by zachować rosące uporządkowaie wartości klucza a stroie, atomiast w drugim przypadku stosuje się metodę kompesacji lub podziału. Metodę kompesacji moża stosować wtedy, gdy jeda ze stro sąsiadujących ze stroą z przepełioą zawiera miej iż 2m elemetów. Wtedy porządkujemy elemety z obu stro z uwzględieiem elemetu dołączaego oraz elemetu ojca (tj. tego elemetu, dla którego wskaźiki zajdujące się po jego obu stroach wskazują stroy uczesticzące w kompesacji). Elemet środkowy uporządkowaego ciągu wstawiamy w miejsce elemetu ojca. Wszystkie elemety miejsze od środkowego wstawiamy a jedą z kompesowaych stro, a wszystkie większe a drugą (zachowując uporządkowaie a stroie). Gdy kompesacja ie jest możliwa ależy zastosować metodę podziału przepełioej stroy a dwie. W tym celu porządkujemy rosąco wszystkie elemety rozważaej stroy (uwzględiamy także dołączay elemet) otrzymując ciąg 2m + elemetów. Elemet środkowy tego ciągu dodajemy do stroy ojca, elemety miejsze od środkowego tworzą jedą stroę a elemety większe drugą stroę potomą. W trakcie dołączaia elemetu środkowego do stroy ojca może także a tej stroie powstać przepełieie (gdy stroa ojca jest całkowicie zapełioa). Należy wtedy dokoać jej podziału, co może wywołać potrzebę podziału a jeszcze wyższym 5
Wybrae metody dostępu do daych poziomie i tak aż do korzeia. Kosekwecją podziału stroy korzeia może być utworzeie 2 owych stro i powiększeie wysokości drzewa. W celu utrzymaia wysokości drzewa a jak ajiższym poziomie ależy stosować przy dołączaiu w pierwszym rzędzie metodę kompesacji. Dopiero wtedy, gdy kompesacja jest iemożliwa dokoywać podziału...2. Usuwaie elemetu ideksu Usuwaie poprzedzoe jest algorytmem wyszukiwaia i ma ses tylko wtedy, gdy poszukiwaie zakończyło się sukcesem. Wówczas zmiea s wskazuje stroę zawierającą elemet przezaczoy do usuięcia. Jeśli stroa ta jest stroą liścia to elemet jest z iej usuway. Może to jedak spowodować iedomiar, to zaczy liczba elemetów a stroie może spaść poiżej wartości m. Jeśli atomiast stroa ie jest liściem to w miejsce usuwaego elemetu, wpisyway jest elemet E mi o ajmiejszej wartości klucza z poddrzewa wskazywaego przez wskaźik p, stojący bezpośredio po prawej stroie usuwaego elemetu. Elemet E mi jest astępie wstawiay w miejsce elemetu usuwaego i usuway ze stroy liścia, co także może spowodować iedomiar. W przypadku wystąpieia iedomiaru stosujemy jedą z metod jego likwidacji, a miaowicie metodę łączeia lub kompesacji. Łączeie Przypuśćmy, że a stroie s wystąpił iedomiar, to zaczy zawiera oa obecie j < m elemetów, a jedocześie jeda z jej stro sąsiedich (ozaczmy ją symbolem s ) zawiera k elemetów i j + k < 2m. Możemy wtedy stosować metodę łączeia stro s i s. Wszystkie elemety ze stroy s są przeoszoe a stroę s (z zachowaiem uporządkowaia). Ze stroy rodzica usuway jest elemet rozdzielający stroy s i s (i także przeoszoy do łączoej stroy). Wyłączeie elemetu ze stroy rodzica może tam spowodować iedomiar. Likwidacja tego iedomiaru może z kolei spowodować iedomiar a stroie jej ojca, itd. w skrajym przypadku aż do korzeia B-drzewa. Stosowaie operacji łączeia jest jedyą metodą zmiejszeia wysokości drzewa. Kompesacja Jeśli wśród sąsiadów stroy s, a której wystąpił iedomiar ie ma kadydata do połączeia ze stroą s (gdyż ie są spełioe wymagae do tego waruki), stosuje się metodą kompesacji. W metodzie tej postępujemy aalogiczie jak w przypadku kompesacji przy dołączaiu z tym, że obecie ie ma oczywiście potrzeby uwzględiaia dodatkowego (dołączaego) elemetu..4. B*-drzewa Na podstawie tej samej idei co B-drzewa, tworzoe są tzw. B*-drzewa. Różica między B-drzewami a B*-drzewami polega a tym, że B-drzewa są drzewami o orietacji wierzchołkowej atomiast B*-drzewa mają orietację liściową (w wierzchołkach ie będących liśćmi zawarte są jedyie wartości klucza, atomiast związae z imi dae umieszczae są jedyie w liściach). 5 5 5 5 2 5 7 2 2 5 6 5 52 6 Przykład B*-drzewa klasy t*(,2,2) z łączikami między liśćmi 6
Wybrae metody dostępu do daych Każde B*-drzewo charakteryzują trzy astępujące parametry: h* wysokość B*-drzewa, tj. długość dróg z korzeia do liści. m* liczba wartości klucza w korzeiu B*-drzewa i wierzchołkach ie będących liśćmi (korzeń zawiera od do 2m* wartości klucza, atomiast każdy wierzchołek pośredi zawiera od m* do 2m* wartości klucza) m liczba elemetów w liściach (liść zawiera od m do 2m elemetów ideksu) Rysuek a poprzediej stroie pokazuje przykładową orgaizację B*-drzewa. Zauważmy, że podstawową różicę w stosuku do B-drzew staowi umieszczeie wszystkich daych w liściach drzewa (klucze zajdujące się w korzeiu i wierzchołkach pośredich są powieloe w liściach). Algorytmy postępowaia przy wyszukiwaiu, dołączaiu i usuwaiu z B*-drzewa iewiele różią się od tych stosowaych do B-drzew dlatego też ie będziemy ich tu omawiać szczegółowo. Iteresujące jest zastosowaie idei B*-drzew do orgaizacji sekwecyjego przeglądaia daych uporządkowaych według wartości klucza (a także filtrowaia daych wg klucza). By to umożliwić wystarczy uzupełić strukturę B*- drzewa o listę dwukierukową łączącą ze sobą sąsiedie liście. Przykład takiej orgaizacji struktury daych przedstawioo a rysuku powyżej..5. Metoda fukcji mieszającej Koleją dość często wykorzystywaą strukturą jest tablica. Dla tablicy ieuporządkowaej średia liczba testów potrzebych do odszukaia elemetu wyosi /2, atomiast dla tablicy uporządkowaej przy stosowaiu metody dychotomiczych podziałów (dzieleie przedziałów a połowy) liczba testów redukuje się do /2 log 2. Wspomiaa metoda polega a testowaiu elemetu zajdującego się w połowie aktualego przedziału. Jeśli elemet te ie jest elemetem szukaym, to ustala się kolejy przedział, który jest jedą z połówek ostatio testowaego przedziału i przeprowadza się kolejy test. Ią metodą stosowaą w odiesieiu do tablic jest metoda fukcji mieszającej. Zadaiem fukcji mieszającej jest trasformacja kluczy K w ideksy tablicy. Podstawową trudość w użyciu trasformacji kluczy staowi fakt, że zbiór możliwych wartości kluczy jest zaczie większy od zbioru adresów (ideksów tablicy). Mając zaday klucz K w pierwszym kroku operacji ależy obliczyć związay z im ideks, w drugim zaś sprawdzić, czy obiekt o kluczu K jest rzeczywiście pod adresem wyzaczoym przez fukcję h. Przypadek zalezieia pod daym adresem iego klucza iż żąday azywamy kolizją. Natomiast algorytm wyzaczający alteratywe ideksy azywamy algorytmem usuwającym kolizje. Jeśli liczbę możliwych adresów ozaczymy przez N (pojemość bazy), to wystąpieie każdego adresu ADR i z przedziału [,N] powio być jedakowo prawdopodobe, tz. że dla każdego ADR i zachodzi: P{h(K i) = ADR i} = /N Obliczmy liczbę prób jaką ależy wykoać aby umieścić l+ rekord w tablicy - elemetowej l L l+ = cjpj j gdzie: L l+ - liczba prób jaką ależy wykoać aby rozmieścić (odaleźć) l+ rekord c j - kolejo wykoywae próby p j - prawdopodobieństwo odszukaia (rozmieszczeia) rekordu p = l p 2 = l l p = l l l 2... stąd: l l l j 2 l p j =... j 2 j L l+ = l 7
Wybrae metody dostępu do daych Poieważ liczba prób przy rozmieszczaiu jest taka sama jak przy odszukiwaiu, to wartość powyższą moża wykorzystać do obliczeia średiej liczby prób potrzebych do zalezieia losowego klucza w tablicy: l l = l k (H+ - H -l+) L = lk = l k k 2 l gdzie: H = +/2+...+/ jest fukcją harmoiczą, w przybliżeiu rówą l() +, a jest stałą Eulera.577. Podstawiając = l/(+) otrzymamy L = -/ l(- ) - jest w przybliżeiu iloczyem liczby zajętych i dostępych adresów, azwaym współczyikiem wypełieia: = ozacza, że tablica jest pusta, = /(+) ozacza, że tablica jest peła. Kodowaie mieszające jest efektywiejsze pod względem liczby porówań, potrzebych do wyszukiwaia lub wstawiaia, od biarego drzewa poszukiwań, ależy jedak wziąć pod uwagę fakt, że operacja porówaia dla każdej z tych metod może wymagać zupełie iego czasu. Jeśli przykładowo metoda fukcji mieszającej wymaga średio dwóch porówań a drzewo sześciu, to ie jest to rówozacze z tym, że haszowaie w tym przypadku jest trzykrotie szybsze co więcej, może się awet okazać, że wykorzystaie metody drzewa poszukiwań jest szybsze, bo p. fukcja mieszająca ma bardzo dużą złożoość obliczeiową. Wadą kodowaia mieszającego w stosuku do metod dyamiczego przydzielaia pamięci jest stała wielkość tablicy, co uiemożliwia dopasowaie jej do aktualych potrzeb. Dlatego jest tu iezbęde możliwie dokłade określeie a priori liczby obiektów w celu uikięcia złego wykorzystaia pamięci lub słabej efektywości (a czasami - przepełieia tablicy). Nawet wtedy, gdy zaa jest dokładie liczba obiektów (przypadek bardzo rzadki) troska o dużą efektywość metody dyktuje iewielkie zwiększeie tablicy (o około %). Drugą ważą iedogodością są trudości występujące przy usuwaiu elemetu z tablicy. Podsumowując ależy przyzać, że orgaizacja drzewiasta jest zalecaa wtedy, gdy ilość daych jest truda do określeia lub często się zmieia. Przykładowe fukcje mieszające i algorytmy rozwiązywaia kolizji:. - wycięcie cyfr z klucza i ormalizacja do zakresu pamięci h(k) = ( cyfra klucza: 4,5 i 6-ta) *M/) 2. - podział, składaie i dzieleie przez ajwiększą liczbę pierwszą <=M h(k) = (lewe 6 bitów k + prawe 6 bitów k) mod M. - dzieleie przez ajwiększą liczbę pierwszą <=M h(k) = k mod M 4. - mieszaie multiplikatywe Fiboacciego h(k) = M *(.684*k) mod M Algorytmy rozwiązywaia kolizji:. - sodowaie liiowe z krokiem a i = (a i- + ) mod M 2. - sodowaie liiowe z krokiem 7 a i = (a i- + 7) mod M. - podwóje mieszaie zależe (sodowaie z krokiem zależym od wartości h(k)) a i = [a i- +h 2(a )] mod M gdzie krok sodowaia: h 2(a ) = gdy a M a gdy a 4. - podwóje mieszaie iezależe (sodowaie z krokiem zależym od k) a i = [a i- + h 2(k)] mod M gdzie krok sodowaia: h 2(k) = + [k mod (M-2)] Gdzie: k klucz M rozmiar tablicy a i i-ta próba wyzaczeia adresu 4. ZADANIA DO WYKONANIA. Przygotować zbiór z daymi testowymi. 8
Wybrae metody dostępu do daych 2. Przeprowadzić eksperymety z metodą przeszukiwaia sekwecyjego dla daych przypadkowych, dla daych posortowaych. Porówać wyiki. W wyiku powiy się zaleźć tablica z daymi, liczba przeprowadzoych prób wyszukaia, średia liczba testów (eksperymetala), miimala i maksymala liczba testów.. Te same testy przeprowadzić dla wyszukiwaia metodą podziałów dychotomiczych. Porówać uzyskae wyiki. 4. Przeprowadzić eksperymety z drzewami biarymi. Porówać uzyskae wyiki dla zwykłych drzew (bez wyważeia) i drzew dokładie wyważoych. Czy średia liczba porówań w obu przypadkach różi się zacząco? 5. Określić przykładową kolejość wprowadzaia do drzewa liczb tak by uzyskać dokładie wyważoe drzewo biare. 6. Przeprowadzić eksperymety dotyczące wyszukiwaia w B-drzewach, dla różych wielkości stroy. Określić optymaly ze względu a czas wyszukiwaia rozmiar stroy. 7. Obliczyć miimalą i maksymalą liczbę elemetów jakie moża umieścić w B-drzewie klasy t(h,m). 8. Przeprowadzić eksperymety dotyczące wyszukiwaia w B*-drzewach, dla różych wielkości stroy. Określić optymaly ze względu a czas wyszukiwaia rozmiar stroy. 9. Porówać wyiki uzyskae dla B-drzew i B*-drzew.. Przeprowadzić eksperymety dotyczące wstawiaia daych do tablicy mieszającej. Sprawdzić wpływ rozmiaru tablicy, wybraej fukcji mieszającej i fukcji rozwiązywaia kolizji a liczbę kolizji występujących podczas wstawiaia. Porówać uzyskae wyiki z przewidywaiami teoretyczymi. 9