Tablice mieszające

https://en.wikipedia.org/wiki/Hash_table

https://stackoverflow.com/questions/327311/how-are-pythons-built-in-dictionaries-implemented

https://www.geeksforgeeks.org/python-3-6-dictionary-implementation-using-hash-tables/

WPROWADZENIE

Tablica mieszająca (ang. hash table) używa funkcji mieszającej do obliczenia indeksu klucza w tablicy bukietów. Jeżeli klucze są liczbami z niedużego zakresu, to można je przechowywać w tablicy pod indeksem k. Zwykle jednak wykorzystuje się funkcję mieszającą hash(k), która oblicza położenie klucza k w tablicy. Dobra funkcja mieszająca powinna (1) działać szybko [niski koszt] i (2) jednorodnie rozmieszczać klucze w tablicy. Wtedy wstawianie, wyszukiwanie i usuwanie klucza działa w czasie O(1).

W praktyce nie jest łatwo znaleźć doskonałą funkcję mieszającą i pojawiają się kolizje, czyli dla kluczy k1 != k2 otrzymujemy hash(k1) = hash(k2). Kolizje zdarzają się zwykle tym częściej im bardziej zapełniona jest tablica, dlatego zwykle tablica jest większa niż spodziewana liczba kluczy. Niektóre metody mieszania dobrze działają dla rozmiaru tablicy będącym potęgą dwójki, inne dla liczb pierwszych.

PROBLEM KOLIZJI

Typowe sposoby radzenia sobie z kolizjami [Drozdek].

Słowniki w Pythonie to tablice hashujące z adresowaniem otwartym.