MakarovSuites
Polski
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Kontakt i licencje

Math

Hasze i kubełki

Stół sortowniczy: klucze to papierowe przywieszki, wózek liczy hasz każdej i wrzuca ją do kubełka o numerze hasza, a kolizja to dwa różne klucze w jednym kubełku. Hasz to nazwana funkcja – suma kodów, wielomian o podstawie 31, FNV-1a – albo jednostajna wyrocznia stojąca za krzywą urodzin. Zmień klucz, obejrzyj jego hasz liczony znak po znaku, odwróć jeden bit i policz zmienione bity hasza; porównaj dwie funkcje na tych samych kluczach.

Hasze i kubełki — Obraz z aplikacji
Obraz z aplikacji

Co się dzieje

Dwadzieścia trzy osoby w pokoju częściej dzielą urodziny, niż nie, i ta sama arytmetyka wymiaruje tablicę haszującą. Tu klucze są prawdziwymi napisami, a hasz NAZWANĄ funkcją: sumą kodów znaków, wielomianem o podstawie 31, FNV-1a – albo jednostajną wyrocznią, która w ogóle nie ma klucza i jest modelem stojącym za krzywą. Wózek na szynie liczy hasz każdej przywieszki i wrzuca ją do kubełka o jej indeksie; przywieszka, która spada na inną, to kolizja, i oba klucze pozostają podświetlone. Arkusz liczy hasz klucza próbnego znak po znaku, odwraca jeden bit klucza i liczy zmienione bity hasza. Trzy pytania pozostają osobne: kolizje, jednostajność (χ² obciążeń względem n/m, oczekiwanie m − 1) i lawina; histogram równy na losowych słowach nie jest wyrokiem o funkcji – daj sumie liter listę anagramów, a każdy klucz wyląduje w jednym kubełku. Nic z tego nie jest siłą kryptograficzną.

Równania modułu
Równania
n kluczy do m kubełków, jednostajnie
P(co najmniej jedna kolizja) = 1 − iloczyn (1 − i/m),  DOKŁADNIE:  n = 23, m = 365 -> 0.50729723432398566;  n = 50 -> 0.97037357957798842
oczekiwana liczba pustych kubełków = m·(1 − 1/m)^n  DOKŁADNIE - a nie zwykłe m·e^(−n/m):  przy n = m = 100 wynoszą one 36.603234127322921 i 36.787944, a różnica jest widoczna
liczba kluczy do pierwszej kolizji, średnio:  sqrt(pi·m/2) + 2/3 = 24.611199639354552 dla m = 365 (policzono 24.6767 w 20 000 uruchomień)
maksymalne obciążenie przy n = m zachowuje się jak ln n / ln ln n - ASYMPTOTYKA, a nie wzór: zmierzony stosunek ROŚNIE, 1.32 przy m = 64, 1.49 przy 256, 1.55 przy 1024
dlatego sprawdza się go jako przedział i jako trend monotoniczny, a nigdy nie przypisuje się mu jednej liczby
zmierzone wobec krzywej dokładnej (po 20 000 uruchomień):  n = 10 -> 0.11605 wobec 0.11695;  n = 23 -> 0.50800 wobec 0.50730;  n = 70 -> 0.99920 wobec 0.99916
funkcje nazwane na kluczu k = c₁c₂…c_n (kody znaków), wszystkie modulo 2³²:  suma: h = Σ c_i;  podstawa 31: h ← 31·h + c_i;  FNV-1a: h₀ = 2166136261, h ← (h xor c_i)·16777619
kubełek = h mod m;  jednostajna wyrocznia losuje kubełek z ziarna i NUMERU klucza - nie ma żadnego klucza
jednostajność: χ² = Σ (load_j − n/m)² / (n/m) po m kubełkach; jednostajny rozdział daje m − 1 ± √(2(m − 1))
efekt lawinowy: średnia po kluczach z Hamming(h(k), h(k′)) przy odwróceniu JEDNEGO bitu klucza k; funkcja idealna zmienia 16 z 32
zmierzone (ziarno 20260913, 40 losowych słów do 64 kubełków): FNV-1a 7 kolizji, χ² 46.4, efekt lawinowy 14.6;  podstawa 31: 9, 52.8, 6.2;  suma: 8, 52.8, 2.05;  wyrocznia: 9, 59.2, brak bitów
40 anagramów jednego słowa przy sumie: 39 kolizji, jeden łańcuch długości 40, χ² = 2520 - suma nie rozróżnia kolejności liter

Inne eksperymenty

Wróć do katalogu
Wyścig sortowań — Obraz z aplikacji

Math

Wyścig sortowań

Trzy sortowania biegną po tej samej tablicy z tą samą szybkością w PORÓWNANIACH, i pierwszy kończy ten, kto zapytał mniej. Decyduje nieporządek, nie rozmiar: na posortowanym wejściu wstawianie bierze 63 porównania, a szybkie 2016.

Wszerz i w głąb — Obraz z aplikacji

Math

Wszerz i w głąb

Dwie kopie labiryntu, dwa przejścia, komórka na takt. Warstwa, w której przeszukiwanie wszerz znajduje komórkę, JEST najkrótszą odległością - to tożsamość. W głąb nigdy nie jest krócej, a o ile dłużej, zależy od celu.

Najtańsza droga — Obraz z aplikacji

Math

Najtańsza droga

Teren, w którym krok kosztuje cenę komórki, do której wchodzisz, a fala zamkniętych wierzchołków rozchodzi się po CENIE, nie po odległości. Suwak kładzie na mapie ujemną krawędź i ma trzy zmierzone zakresy.