ALG4

ALG4



194 Rozdział 7. Algorytmy przeszukiwania

•    powinna być tatwo obliczalna, tak aby ciężaru przeszukiwania zbioru danych nie przenosić na czasochłonne wyliczanie H(v):

•    różnym wartościom klucza v powinny odpowiadać odmienne indeksy w tablicy T, tak aby nie powodować kolizji dostępu (np. elementy powinny być rozkładane w tablicy T równomiernie.

Pierwszy punkt nie wymaga komentarza, do drugiego zaś jeszcze powrócimy, gdyż porusza on bardzo ważny problem. W następnym paragrafie poznamy typowe metody konstruowania funkcji H. W rzeczywistych aplikacjach stosuje się przeróżne kombinacje cytowanych tam funkcji i w zasadzie nie można tu podać reguł postępowania! Transformacja kluczowa jest bardzo silnie związana z aplikacją końcową i często etap uruchamiania może znacznie się wydłużać.

7.3.2.Najbardziej znane funkcje H

Najwyższa już pora zaprezentować kilka typowych funkcji matematycznych używanych do konstruowania funkcji stosowanych w transformacji kluczowej. Są to metody w miarę proste, jednak samodzielnie niewystarczające - w praktyce stosuje się raczej ich kombinacje niż każdą z nich osobno. Czytelnik, który z pojęciem transformacji kluczowej spotyka się po raz pierwszy, ma prawo być nieco zbulwersowany poniższymi propozycjami (modu/o, mnożenie etc.). Brakuje tu bowiem pewnej „naukowej” metody: nic nie jest do końca zdeterminowane, programista może w zasadzie wybrać, co mu się żywnie podoba, a algorytmy poszu-kiwania/wstawiania danych będą i tak działały. W dalszych przykładach będziemy zakładać, żc „klucze” są ciągami znaków, które można łączy ć ze sobą i dość dowolnie interpretować jako liczby całkowite. Każdy znak alfabetu będziemy dla uproszczenia obliczeń w naszych przykładach kodować przy pomocy 5 bitów (patrz tablica 7 -1)-wybór kodu nie jest niczym zdeterminowany.

Tabela 7- /.

Kodowanie U ter przy pomocy 5 bilów.

A—00001

13-00010

c=000ll

D-00100

E-00101

I--00110

0=00111

11=01000

I-O1001

J-01010

K=01011

L=01100

M=01101

N-OIIIO

0=01111

P-10000

Q-10001

RH 0010

SH001I

T=10100

U=I0I0I

V=I0I 10

W= 10111

X=l 1000

Y=l 1001

Z=11010

Wspomniany wyżej „brak metody” jest na szczęście pozorny. Wiele podręczników algorytmiki błędnie prezentuje transformację kluczową, koncentrując się na tym JAK, a nie omawiając szczegółowo POCO chcemy w ogóle wykonywać operacje arytmetyczne na zakodowanych kluczach. Tymczasem sprawa jest względnie prosta:

kodowanie jest wykonywane w celu zamiany wartości klucza (niekoniecznie numerycznej!) na liczbę: sam kod jest nieistotny, ważne jest


Wyszukiwarka

Podobne podstrony:
ALG0 190 Rozdział 7. Algorytmy przeszukiwania Odnalezienie liczby .1 w tablicy tub jest sygnalizowa
ALG2 192 Rozdział 7. Algorytmy przeszukiwani; gdy maksymalna ilość elementów należących do pewnej d
ALG8 198 Rozdział 7. Algorytmy przeszukiwania pod indeks ///, stwierdzimy, że już wcześniej ktoś si
1080701720293389272442031315352 n Aspekty pozytywne powinny być ciągle doskonalone tak, aby edukacj
takie powinno być jak najtańsze, tak aby każdy niepełnosprawny, często nie pracujący miał możliwość
takie powinno być jak najtańsze, tak aby każdy niepełnosprawny, często nie pracujący miał możliwość
ALG4 54 Rozdział 3. Analiza sprawności algorytmów Tematyką tego rozdziału jest tzw. złożoność oblic
ALG4 64 Rozdział 3. Analiza sprawności algorytmów3.4. Przykład 3: Wpadamy w pułapkę Zadania z dwóch
ALG4 74 Rozdział 3. Analiza sprawności algorytmów • funkcja d(n) musi spełniać następującą własność
ALG6 Rozdział 7. Algorytmy przeszukiwania r > dzielenie modulo RmM: H(v) = v% Rmax Przykład: Dla
ALG 0 200 Rozdział 7. Algorytmy przeszukiwania Rekordy E i F zostały zapamiętane w momencie stwierdz
ALG 2 202 Rozdział 7. Algorytmy przeszukiwani! gdzie a jest współczynnikiem zapełnienia tablicy T. A
ALG 4 204 Rozdział 7. Algorytmy przeszukiwania i (gdzie a jest, tak jak poprzednio, współczynnikiem
ET4 194 Rozdział 11. Turystyka międzynarodowa •    administracyjne, •
ALG4 24 Rozdział 1. Zanim wystartujemy Aby zaradzić zaanonsowanym wyżej problemom, przyjęło się zwy
Alg4 44 Rozdział2. Rekurencja ( if (lg>0) ( lineto(x+lg,y); lineto(x+lg,y+lg); lineto

więcej podobnych podstron