Co to jest tablica haszująca?

W informatyce tablica mieszająca jest strukturą danych służącą do przechowywania danych, która składa się z listy wartości zwanych kluczami, które są sparowane z odpowiednią listą wartości, zwaną tablicą. Na przykład nazwa firmy może zostać sparowana z jej adresem. Zazwyczaj każda wartość w tablicy ma numer pozycji nazywany hashem. Funkcja skrótu to zazwyczaj zestaw instrukcji lub algorytm, który mapuje każdą wartość klucza na skrót — na przykład łącząc nazwę firmy z jej adresem, numerem telefonu i kategorią biznesową. Celem funkcji skrótu jest przypisanie każdemu kluczowi unikalnej odpowiadającej wartości w tablicy; jest to powszechnie nazywane haszowaniem. Funkcje skrótu muszą być odpowiednio sformatowane, aby tablica skrótu działała poprawnie.

Wydajność tablicy mieszającej na zestawie danych zależy od wydajności jej funkcji mieszającej. Dobra funkcja mieszająca zazwyczaj zapewnia jednolite wyszukiwanie kluczy i równomierne rozmieszczenie mapowań w odpowiedniej tablicy. Kolizja skrótu występuje, gdy dwa klucze są przypisane do tej samej odpowiedniej wartości. Gdy wystąpi kolizja skrótów, funkcja skrótu jest zwykle wykonywana ponownie, dopóki nie zostanie znaleziona unikatowa odpowiednia wartość; to zwykle skutkuje dłuższymi czasami haszowania. Chociaż liczba kluczy w tablicy mieszającej jest zwykle stała, czasami mogą występować zduplikowane klucze. Mimo to dobrze zaprojektowana tablica haszująca ma efektywne funkcje haszujące, które mapują każdy klucz na unikalną odpowiadającą mu wartość w tablicy.

Czasami nieefektywne funkcje mieszające w tablicy mieszającej mogą również generować klaster mapowań. Jeśli funkcja mieszająca tworzy klaster mapowań dla istniejących kluczy, może to wydłużyć czas potrzebny na wyszukanie odpowiednich wartości. Może to spowolnić mieszanie przyszłych kluczy, ponieważ większość funkcji mieszających zwykle szuka następnej dostępnej pozycji w tablicy. Jeśli przypisano już duży klaster wartości, zwykle szukanie nieprzypisanej wartości dla nowego klucza trwa znacznie dłużej.

Współczynnik obciążenia to kolejna koncepcja związana z wydajnością funkcji skrótu; współczynnik obciążenia to ilość już istniejących haszowania w stosunku do całkowitego rozmiaru odpowiedniej tablicy w tablicy haszującej. Jest to zwykle definiowane przez podzielenie liczby już przypisanych kluczy przez rozmiar odpowiedniej tablicy. Wraz ze wzrostem współczynnika obciążenia dobra funkcja mieszająca zwykle nadal utrzymuje stałą liczbę kolizji i klastrów do pewnego momentu. Często ten próg może być używany do określenia, jak wydajna jest funkcja skrótu przy danej liczbie kluczy i kiedy może być potrzebna nowa funkcja skrótu.

Wielu badaczy informatyki dążyło do stworzenia idealnej funkcji skrótu — takiej, która nie powoduje kolizji ani klastrów przy rosnącym współczynniku obciążenia. Teoretycznie kluczem do stworzenia idealnej tablicy mieszającej jest stworzenie idealnej funkcji mieszającej. Ogólnie rzecz biorąc, naukowcy uważają, że idealna funkcja mieszająca powinna mieć stałą wydajność — liczbę kolizji i klastrów — przy rosnącym współczynniku obciążenia. W najgorszym przypadku idealna funkcja mieszająca nadal pozwalałaby na ciągłe mieszanie bez osiągania progu.