Алгоритмы и структуры данных на С++. Аксёнова Е.А - 80 стр.

UptoLike

80 Глава 6. Поиск
Алгоритм:
L1: i = h(K);
L2: если table[i].p= 0, то перейти к шагу L4;
если table[i].key= K, то УДАЧА;
L3: i = i 1;
если i < 0, то i = i + M и перейти к шагу L2;
L4: если M = n 1, то ПЕРЕПОЛНЕНИЕ;
M = M + 1; table[i].p= 1; table[i].key= K.
Оценки среднего времени работы этого алгоритма имеют вид:
C(n) =
1
2
(1 +
1
1α
), C
0
(n) =
1
2
(1 +
1
(1α)
2
).
Существует много других способов организации поиска при по-
мощи хеш-функций. Например, алгоритм поиска со вставкой по от-
крытой рассеянной таблице можно модифицировать введением вто-
рой h
2
(K) хеш-функции, которая задает порядок перебора ключей.
Шаг L3 будет теперь иметь вид i = i h
2
(K). Такой метод называет-
ся ”открытая адресация с двойным хешированием”.
80                                                   Глава 6. Поиск



     Алгоритм:

      L1: i = h(K);
      L2: если table[i].p= 0, то перейти к шагу L4;
          если table[i].key= K, то УДАЧА;
      L3: i = i − 1;
          если i < 0, то i = i + M и перейти к шагу L2;
      L4: если M = n − 1, то ПЕРЕПОЛНЕНИЕ;
          M = M + 1; table[i].p= 1; table[i].key= K.

    Оценки среднего времени работы этого алгоритма имеют вид:
    C(n) = 12 (1 + 1−α
                    1
                       ), C 0 (n) = 12 (1 + (1−α)
                                               1
                                                  2 ).

    Существует много других способов организации поиска при по-
мощи хеш-функций. Например, алгоритм поиска со вставкой по от-
крытой рассеянной таблице можно модифицировать введением вто-
рой h2 (K) хеш-функции, которая задает порядок перебора ключей.
Шаг L3 будет теперь иметь вид i = i − h2 (K). Такой метод называет-
ся ”открытая адресация с двойным хешированием”.