MakarovSuites
Deutsch
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Kontakt & Lizenzen

Math

Hashes und Fächer

Ein Sortiertisch: Schlüssel als Papieranhänger, ein Schlitten, der jeden hasht und in das Fach mit der Nummer seines Hashes fallen lässt, eine Kollision als zwei verschiedene Schlüssel in einem Fach. Der Hash ist eine benannte Funktion – Summe der Codes, Polynom zur Basis 31, FNV-1a – oder das gleichverteilte Orakel hinter der Geburtstagskurve. Ändern Sie einen Schlüssel, sehen Sie seinen Hash Zeichen für Zeichen, kippen Sie ein Bit und zählen Sie die bewegten Hash-Bits; vergleichen Sie zwei Funktionen auf denselben Schlüsseln.

Hashes und Fächer — Bild aus der Anwendung
Bild aus der Anwendung

Was passiert

Dreiundzwanzig Menschen in einem Raum teilen öfter einen Geburtstag als nicht, und dieselbe Arithmetik bemisst eine Hashtabelle. Hier sind die Schlüssel echte Zeichenketten und der Hash eine BENANNTE Funktion: die Summe der Zeichencodes, das Polynom zur Basis 31, FNV-1a – oder das gleichverteilte Orakel, das gar keinen Schlüssel hat und das Modell hinter der Kurve ist. Ein Schlitten auf der Schiene hasht jeden Anhänger und lässt ihn in das Fach seines Index fallen; ein Anhänger, der auf einem anderen landet, ist eine Kollision, und beide Schlüssel bleiben beleuchtet. Das Blatt berechnet den Hash des Probeschlüssels Zeichen für Zeichen, kippt ein Bit des Schlüssels und zählt die bewegten Hash-Bits. Drei Fragen bleiben getrennt: Kollisionen, Gleichverteilung (χ² der Belegungen gegen n/m, Erwartung m − 1) und der Lawineneffekt; ein Histogramm, das auf zufälligen Wörtern gleichmäßig aussieht, ist kein Urteil über die Funktion – geben Sie der Buchstabensumme eine Liste von Anagrammen, und jeder Schlüssel landet in einem Fach. Nichts davon ist kryptographische Stärke.

Gleichungen des Moduls
Gleichungen
n Schlüssel gleichmäßig auf m Fächer verteilt
P(mindestens eine Kollision) = 1 − Produkt (1 − i/m),  EXAKT:  n = 23, m = 365 -> 0.50729723432398566;  n = 50 -> 0.97037357957798842
erwartete leere Fächer = m·(1 − 1/m)^n  EXAKT - nicht das übliche m·e^(−n/m):  bei n = m = 100 sind es 36.603234127322921 und 36.787944, und der Unterschied ist sichtbar
Schlüssel bis zur ersten Kollision, im Mittel:  sqrt(pi·m/2) + 2/3 = 24.611199639354552 für m = 365 (gezählt 24.6767 in 20 000 Läufen)
die maximale Belegung bei n = m verhält sich wie ln n / ln ln n - eine ASYMPTOTIK, keine Formel: das gemessene Verhältnis WÄCHST, 1.32 bei m = 64, 1.49 bei 256, 1.55 bei 1024
daher wird es als Einschließung und als monotoner Trend geprüft, nie auf eine Zahl festgelegt
gemessen gegen die exakte Kurve (je 20 000 Läufe):  n = 10 -> 0.11605 gegenüber 0.11695;  n = 23 -> 0.50800 gegenüber 0.50730;  n = 70 -> 0.99920 gegenüber 0.99916
benannte Funktionen auf einem Schlüssel k = c₁c₂…c_n (Zeichencodes), alle modulo 2³²:  Summe: h = Σ c_i;  Basis 31: h ← 31·h + c_i;  FNV-1a: h₀ = 2166136261, h ← (h xor c_i)·16777619
Fach = h mod m;  das gleichmäßige Orakel zieht das Fach aus dem Startwert und der NUMMER des Schlüssels - es hat keinen Schlüssel
Gleichmäßigkeit: χ² = Σ (load_j − n/m)² / (n/m) über die m Fächer; eine gleichmäßige Verteilung ergibt m − 1 ± √(2(m − 1))
Lawineneffekt: Mittel über die Schlüssel von Hamming(h(k), h(k′)), wobei EIN Bit von k umgekehrt wurde; eine ideale Funktion kippt 16 von 32
gemessen (Startwert 20260913, 40 zufällige Wörter in 64 Fächern): FNV-1a 7 Kollisionen, χ² 46.4, Lawineneffekt 14.6;  Basis 31: 9, 52.8, 6.2;  Summe: 8, 52.8, 2.05;  Orakel: 9, 59.2, keine Bits
40 Anagramme eines Wortes unter der Summe: 39 Kollisionen, eine Kette der Länge 40, χ² = 2520 - die Summe kann die Reihenfolge der Buchstaben nicht unterscheiden

Weitere Experimente

Zum Katalog
Wettlauf der Sortierverfahren — Bild aus der Anwendung

Math

Wettlauf der Sortierverfahren

Drei Verfahren laufen über dasselbe Feld, gleich schnell in VERGLEICHEN, und zuerst ist fertig, wer weniger gefragt hat. Entscheidend ist die Unordnung, nicht die Größe: auf sortierter Eingabe braucht Einfügen 63 Vergleiche, Quicksort 2016.

Breite und Tiefe — Bild aus der Anwendung

Math

Breite und Tiefe

Zwei Kopien eines Labyrinths, zwei Durchläufe, eine Zelle pro Takt. Die Schicht, in der die Breitensuche eine Zelle findet, IST der kürzeste Abstand - eine Identität. Die Tiefensuche ist nie kürzer, und wie viel länger, hängt vom Ziel ab.

Der billigste Weg — Bild aus der Anwendung

Math

Der billigste Weg

Gelände, in dem ein Schritt den Preis der betretenen Zelle kostet, und die Welle geschlossener Knoten breitet sich nach PREIS aus, nicht nach Entfernung. Ein Regler legt eine negative Kante aufs Feld und hat drei gemessene Bereiche.