ALG2
192 Rozdział 7. Algorytmy przeszukiwani;
gdy maksymalna ilość elementów należących do pewnej dziedziny1 5Rjest z góry znana (Einax), natomiast wszystkich możliwych (różnych) elementów tej dziedziny mogłoby być potencjalnie bardzo dużo (O- Tak dużo, że o ile przydział pamięci na tablicę o rozmiarze Emax jest w praktyce możliwy, o tyle przydział tablicy dla wszystkich potencjalnych C elementów dziedziny 9? byłby fizycznie niewykonalny2.
Ponieważ poprzednie zdanie brzmi makabrycznie, być może warto jest podać ilustrujący je przykład:
• chcemy zapamiętać Rimx = 250 słów o rozmiarze 10 (tablica o rozmiarze 250*11=2750 bajtów jest w pełni akceptowalna3;
• wszystkich możliwych słów jest C = 26l0(nie licząc w ogóle polskich znaków!). Praktycznie niemożliwe jest przydzielenie pamięci na tablicę, która mogłaby je wszystkie pomieścić...
Idea transformacji kluczowej polega na próbie odnalezienia takiej funkcji H, która otrzymując w parametrze pewien zbiór danych, podałaby nam indeks w tablicy T, gdzie owe dane znajdowałyby się... gdyby je tam wcześniej zapamiętano!
Inaczej rzecz ujmując: transformacja kluczowa polega na odwzorowaniu: dane ł-» adres komórki w pamięci.
Zakładając taką organizację danych, położenie nowego rekordu w pamięci teoretycznie nie powinno zależeć od położenia rekordów już wcześniej zapamiętanych. Jak zapewne pamiętamy z rozdziału 5, nie był to przypadek list posortowanych, drzew binarnych, steny...
1
' „Dziedziny” w sensie matematycznym.
2
A nawet jeśli tak, to zdrowy rozsądek zatrzymałby nas przed jego realizacją!
3
Jeden dodatkowy bajt na znak *\0' kończący ciąg tekstowy w C++.
Wyszukiwarka
Podobne podstrony:
ALG0 190 Rozdział 7. Algorytmy przeszukiwania Odnalezienie liczby .1 w tablicy tub jest sygnalizowaALG4 194 Rozdział 7. Algorytmy przeszukiwania • powinna być tatwo obliczalna, takALG8 198 Rozdział 7. Algorytmy przeszukiwania pod indeks ///, stwierdzimy, że już wcześniej ktoś siALG2 32 Rozdział 2. Rekurencja Wyżej podaliśmy warunki pozytywnego zakończenie programu. W przypadkALG2 52 Rozdział 3. Analiza sprawności algorytmów Rys. 3 -ALG2 72 Rozdział 3. Analiza sprawności algorytmówn o) = i, i = A + O, A = 1. Po tALG6 Rozdział 7. Algorytmy przeszukiwania r > dzielenie modulo RmM: H(v) = v% Rmax Przykład: DlaALG 0 200 Rozdział 7. Algorytmy przeszukiwania Rekordy E i F zostały zapamiętane w momencie stwierdzALG 2 202 Rozdział 7. Algorytmy przeszukiwani! gdzie a jest współczynnikiem zapełnienia tablicy T. AALG 4 204 Rozdział 7. Algorytmy przeszukiwania i (gdzie a jest, tak jak poprzednio, współczynnikiemET2 192 Rozdział 11. Turystyka międzynarodowa System rachunków narodowych nie zaspokaja zatem wszysALG2 22 Rozdział 1. Zanim wystartujemy programowania nic znikły bynajmniej z horyzontu: Dijkstra, HALG2 42 Rozdział 2. Rekurencja 2. m.in. wartości zmiennych tego poziomu (tzw. kontekst). Co więcej,ALG2 52 Rozdział 2. RekurenZad. 2-4Oto jedno z możliwych rozwiązań: trójkąty ,cpp double y) void nuALG6 86 Rozdział 4. Algorytmy sortowania zamiany sąsiadujących ze sobą elementów, a druga będzie wyALG8 88 Rozdział 4. Algorytmy sortowania Jest chyba dość oczywiste, że wywołania rekurencyjne zatrzALG 0 90 Rozdział 4. Algorytmy sortowania 90 Rozdział 4. Algorytmy sortowania Rys. 4 - 8. SortowanieALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(lwięcej podobnych podstron