Uważamy, że mamy algorytm, który odbiera hipotetycznie długi strumień kluczy. Następnie generuje wartość od 0 do 1 dla każdego klucza, podczas jego przetwarzania, w celu pobrania z tyłu. Zestaw wejściowy jest wystarczająco duży, że nie możemy pozwolić sobie na zapisanie jednej wartości dla każdego klucza. Reguła generująca wartości jest niezależna między kluczami.Przestrzenne, probabilistyczne struktury danych do pobierania numerów
Teraz załóżmy, że możemy tolerować błąd w tylnej odnośnika, ale chcemy jeszcze zminimalizować Różnica pobierane i oryginalnych wartości (tj asymptotycznie ciągu wielu przypadkowych wyszukiwań).
Na przykład, jeśli pierwotna wartość dla danego klucza wynosiła 0,008, pobieranie 0,06 jest znacznie lepsze niż pobieranie 0.6.
Jakie struktury danych lub algorytmy możemy zastosować, aby rozwiązać ten problem?
Filtry Bloom są najbliższymi strukturami danych, jakie mogę wymyślić. Można skwantyfikować zakres wyjściowy, użyć filtru Blooma dla każdego kubełka i jakoś połączyć ich wyniki w czasie pobierania, aby oszacować najbardziej prawdopodobną wartość. Zanim przejdę do tej ścieżki i wymyślę nowe koło, czy istnieją znane struktury danych, algorytmy, teoretyczne lub praktyczne podejścia do rozwiązania tego problemu?
Idealnie szukam rozwiązania, które może ustawić parametryzować kompromis między przestrzenią i współczynników błędów.
możemy zrobić zakres partycji i napisać funkcję mieszającą, aby odwzorować każdą liczbę do określonego zakresu. Wartości w zakresie mogą być kontrolowane na podstawie współczynnika błędu. –