ALG 3

ALG 3



7.3. Transformacja kluczowa 203

oznaczonego symbolicznie jako START. Proces poszukiwania zakończy się sukcesem w przypadku „trafienia’' w poszukiwany rekord - aby to stwierdzić, czynimy dość kosztowne6 porównanie T[pos].v *k (patrz algorytm procedury szukaj ze strony 201).

Co więcej, wykonujemy je za każdym razem podczas przesuwania się po liniowo wypełnionej strefie! Informację o ewentualnej porażce poszukiwań dostajemy dopiero po jej całkowitym sprawdzeniu i natrafieniu na pierwsze wolne miejsce. W naszym rysunkowym przykładzie dopiero po siedmiu porównaniach algorytm natrafi na pustą komórkę (oznaczoną etykietą KONIEC), która poinformuje go o daremności podjętego uprzednio wysiłku... Gdyby zaś tablica była zapeł niona w mniej liniowy sposób, statystycznie o wiele szybciej natrafilibyśmy na WOLNE miejsce, co automatycznie zakończyłoby proces poszukiwania zakończonego porażką.

Na szczęście istnieje łatwy sposób uniknięcia liniowego grupowania elementów: tzw. podwójne kluczowanie. Podczas napotkania kolizji następuje próba „rozrzucenia” elementów przy pomocy drugiej, pomocniczej funkcji H.

Procedura wstaw pozostaje niemal niezmieniona:

int pos =K1(x.v); int krok=H2(x.v); while (T[pos) != WOLNE) pes - !pos+krok) % Rmax;

T[pos]=x;

Procedura poszukiwania jest bardzo podobna i Czytelnik z pewnością będzie w stanie ją napisać samodzielnie, wzorując się na przykładzie poprzednim.

Przedyskutujmy teraz problem doboru funkcji H2. Nie tnidno się domyślić, iż ma ona duży wpływ na jakość procesu wstawiania (i oczywiście poszukiwania!). Przede wszystkim funkcja H2 powinna być różna od ///! W przeciwnym wypadku doprowadzilibyśmy tylko do bardziej skomplikowanego tworzenia stref „ciągłych” - a właśnie od tego chcemy uciec... Kolejny wymóg jest oczywisty': musi być to funkcja prosta, która nie spowolni nam procesu poszukiwania/wstawiania. Przykładem takiej prostej i jednocześnie skutecznej w praktyce funkcji może być H2(k)=8-(k%8): zakres skoku jest dość szeroki, a prostota niezaprzeczalna!

Metoda podwójnego kluczowania jest interesująca z uwagi na widoczny zysk w' szybkości poszukiwania danych. Popatrzmy na teoretyczne rezultaty wyliczeń średniej ilości prób przy poszukiwaniu zakończonym sukcesem i porażką. W przypadku poszukiwania zakończonego sukcesem średnia liczba prób wynosi około:

0 Koszt operacji porównania zależy od stopnia złożoności klucza, tzn. od ilości i typów pól rekordu, które go tworzą.


Wyszukiwarka

Podobne podstrony:
ALG5 7,3. Transformacja kluczowa 195 tylko, aby jako wynik otrzymać pewną liczbę, którą można późni
ALG 1 7.3. Transformacja kluczowa 201 int pos=H(x.v); while (TTposl != WOLNE) po3 - (po3il) %
ALG 5 7.3. Transformacja kluczowa 205 liczba jest z dużym prawdopodobieństwem przewidywalna. Nic moż
Zdjęcie1603 • NiCr-NiAl, (oznaczony symbolem K) 2. Termometry rezystancyjne metaliczne Termorezystor
oznaczających symbole lub gesty, które pokazuje. Pojawienie się nowego słowa wypowiadanego przez dzi
Zdjęcie1603 • NiCr-NiAl, (oznaczony symbolem K) 2. Termometry rezystancyjne metaliczne Termorezystor
• NiCr-NiAl, (oznaczony symbolem K) 2. Termometry rezystancyjne metaliczne Termorezystor składa się
skanuj0110 [1600x1200] oddaje im część energii w sposób bezpromienisty jako ciepło. Proces ten odbyw
J. Jabłońska-Bonca Negocjacje jako złożony proces kounikacyjny, w który się angażujemy, jeżeli chcem
CCF20090523046 tif KARL R. POPPER Emergencja oznacza, że wtoku tego procesu może pojawić się coś zu
ALG6 166 Rozdział 6. Derekursywacji kosztuje cenny czas procesora, który dodaje się do ogólnego cza
ALG3 7.3. Transformacja kluczowa 193 Naturalną konsekwencją nowego sposobu zapamiętywania danych je
ALG7 7.3. Transformacja kluczowa 197 Istnieją dwie wartości parametru 67, które „rozrzucają” klucze
ALG9 7.3. Transformacja kluczowa 199 Co jest niepokojące w zaproponowanej powyżej metodzie? Zapreze
img011 (42) 28 Toni I Jeżeli objętość (w m3) jednostki towaru rodzaju i oznaczymy symbolem Si, to dl

więcej podobnych podstron