Jak to działa

Skąd bierze się mediana 0,35

Adres jest rozbierany na części, a każda część kodowana względem tego, jak taka część zwykle wygląda. Nic nie ma stałej szerokości: każde pytanie ma cenę wynikającą z prawdopodobieństwa.

1. Adres to ciąg decyzji, nie ciąg bajtów

Schemat, prefiks www., host, segmenty ścieżki, parametry zapytania i fragment są zapisywane jako osobne decyzje. Schemat to jedno pytanie, a w dziewięciu przypadkach na dziesięć odpowiedź brzmi https, więc kosztuje ułamek bitu, a nie bit.

Host trafia do kodu Huffmana zbudowanego z rankingu domen. Przy trafieniu w słownik host kosztuje kilka bitów zamiast kilkunastu znaków. Przy pudle zapisujemy kod sufiksu publicznego i resztę jako tekst.

2. Koder arytmetyczny wycenia każdą decyzję

Wszystko przechodzi przez binarny koder arytmetyczny z prawdopodobieństwami wytrenowanymi na korpusie i adaptowanymi w trakcie kodowania. Decyzja, której wynik jest niemal pewny, kosztuje ułamek bitu, dlatego flagi formatu to tylko około 30 bitów całego payloadu.

3. Tekst jest przewidywany znak po znaku

Dwie trzecie typowego payloadu to tekst dowolny: slug ścieżki, wartość parametru. Każdy znak jest kodowany względem kilku poprzednich, czterech dla hostów i zapytań, pięciu dla ścieżek. Entropia rzędu 0 dla tekstu ścieżki to 4,9 bitu na znak, a ten model schodzi do około 3,3.

Tekst kończy się symbolem terminatora wycenianym w kontekście, a nie prefiksem długości. Po literach lmth koniec literału jest niemal pewny i kosztuje prawie nic.

Literał, który wygląda na nieprzezroczysty identyfikator, dostaje zamiast tego płaski alfabet: najmniejszy z sześciu, w który się mieści, po dokładnie log2(n) bitów na znak. Model kontekstowy proszony o przewidywanie danych losowych wypada gorzej niż brak modelu.

UUID ma własny kształt: myślniki są domyślne, zostają 32 półbajty. Około 135 bitów zamiast 195, które kosztował jako tekst.

4. Ścieżka i zapytanie są modelowane per serwis

256 najpopularniejszych domen ma własne prawdopodobieństwa kształtu ścieżki. YouTube to prawie zawsze /watch?v=…, a serwis informacyjny prawie zawsze zaczyna od roku. Host jest zapisywany przed ścieżką, więc dekoder liczy tę samą klasę serwisu co koder.

5. Bity zamieniają się w tekst

Strumień bitów jest przeliczany na jeden z dwóch alfabetów: 68 znaków bezpiecznych przy kopiowaniu dla linków, albo podzbiór alfanumeryczny QR, w którym dwa znaki pakują się w 11 bitów i kod QR zostaje mały.

6. Czego to nie potrafi

Nic tu nie łamie entropii. Link, który jest w większości losowym identyfikatorem, nie da się skrócić. Kiedy koder strukturalny przegrywa z surowymi bajtami, zostaje forma surowa, a wynik jest oznaczony jako passthrough.

7. Stabilność formatu

Payload ma sens tylko razem ze słownikami i prawdopodobieństwami, które go wyprodukowały. Każda zmiana słownika, układu kontekstów albo kolejności pól zmieniłaby znaczenie istniejących linków, więc wymaga podbicia wersji formatu i zachowania starych tablic obok nowych. Zamrożone payloady w testach pilnują, żeby to była decyzja, a nie skutek uboczny.