Probabilistyczne algorytmy i struktury danych
Łukasz Dubiel
Noc Informatyka 1.0
http://slides.com/bambucha/probabilistyczne-algorytmy-i-struktury-danych/live
Probabilistyka
Probabilistyka
- przestrzeń zdarzeń z miarą
- podprzestrzeń sprzyjająca wydarzeniu
Zmienna losowa
Nierówność Czebyszewa
Algorytmy
Algorytm - skończony opis kroków potrzebnych do wykonania zadania
Algorytm probabilistyczny - algorytm wykorzystujący w swoim działaniu generator liczb pseudolosowych
Algorytmy probabilistyczne
algorytmy
Las Vegas
algorytmy
Monte Carlo
Quick sort
Problem
Gdy quick sort dokonuje złego wyboru elementu złożoność bardzo się psuję.
Jednocześnie quick sort nie zależy do tego który element wybierze. Pierwszy, drugi, środkowy, medianę, jest mu to obojętne do działania. Zawsze zwróci posortowany ciąg.
Wybierzmy element dzielący w sposób losy
Kolejne wywołania rekurencyjne quicksorta są niezależne co dodatkowo zmniejsza szansę na zły podział
Quick sort mimo podziału na poziomie 99:1 dalej utrzymuje złożność
Test Millera-Rabina
Test Millera-Rabina
Sprawdzenie pierwszości liczby
Wejście: n - badana liczba, k - jakość badania
Wyjście: Złożona || Pierwsza
Powtórz k razy: a <- losowa liczba z [2, n-1] sprawdź czy a jest świadkiem dla n sprawdź czy x nie jest pierwiastkiem 1
Odpowiedź złożona jest zawsze poprawna, gdyż znaleziono przynajmniej jednego świadka złożności testowanej liczby
Jeżeli wszystkie testy przejdą poprawnie:
Do osiągnięcia prawdopodobieństwa wygrania w lotto potrzebne jest tylko 8 testów
Wykorzystywany w okolicach RSA do generowania kluczy
Algorytmy probabilistyczne
algorytmy
Las Vegas
algorytmy
Monte Carlo
jeżeli się skończą,
skończą się dobrze
na pewno się skończą,
ale nie zawsze dobrze
Struktury danych
- ciąg skończony, tablica, element ciągu
- funkcje haszujące parami niezależne
- zbiór liczbowy
- długość ciągu
Count-Min sketch
Count-Min sketch
Zadanie: Chcemy znać częstość występowania wartości w ciągu
query(1) = 3
query(1000000000) = 1
query(4) = 2
query(6) = 0
Problem: Przestrzeń elementów jest duża
Problem: Strumień nie mieści się w pamięci
Problem: Nie chcemy alokacji (z wyjątkiem inicjalizacji)
Założenie: Nie potrzebujemy dokładnych danych, jesteśmy zadowoleni z aproksymacji
Count-Min sketch
Count-Min sketch
- szerokość aproksymacji
- szansa aproksymacji
CM sketch - insert
CM sketch - query
1 | 1 | 3 | 4 | 1 | 0 | 1 |
2 | 5 | 0 | 5 | 2 | 2 | 4 |
4 | 3 | 2 | 2 | 4 | 2 | 2 |
CM sketch
- rzeczywista częstotliwość
- query(i)
100%
CM sketch
- przedziały
- iloczyny kartezjańskie
- kwantyle (percentyle, kwadryle)
- "gorące" wartości (ang. heavy hitters)
CM sketch - range
Słabe, bo błąd się akumuluje dla każdego punktu. Czy można lepiej?
CM sketch - range
s1
s2
s3
s4
CM sketch - range
s1
s2
s3
s4
CM sketch - kwantyle
-kwantyl - wartość dla której
wystąpień w strumieniu jest mniejszych
Skoro wiemy jak zapytać o przedział to czemu by nie wyszukać binarnie tej wartości
dopókióki(przedział (1,k) zawiera za mało / dużo elementów ):
sprawdź ile elementów jest w przedziale (1,k) i (1,k+1)
popraw element dzielący
CM sketch - HH
s1
s2
s3
s4
50
8
42
2
6
40
2
0
2
3
3
38
2
0
2
Inne struktury
- Filtry Blooma - przynależność elementu do zbioru
- HyperLogLog - kardynalności multizbioru
Min-copy set
Min-copy set
Klaster obliczeniowy 1000 maszyn, każda po 8 dysków 1TB => 8 PB danych w ramach klastra.
Aplikacje działające na klastrze korzystają z HDFS (Hadoop File System)
Redundancja bloku ustawiona na n=3
HDFS
HDFS
Replikacja realizowana jest w sposób losowy - wybierz dwie losowe maszyny dla bloku i wyślij kopie
Grupę Maszyny współdzielących blok nazywamy aktywnym copy-setem
Gdy wszystkie maszyny z copy-setu są niedostępne, tracimy dostęp do bloków przechowywanych przez niego
Min copy set
To ile właściwie jest tych copy-setów ?
Ile przypada pojemności na copy-set ?
Min copy set
Przez losowy wybór maszyn mamy bardzo dużo aktywnych copy-setów.
W momencie kiedy padną nam 3 losowe maszyny, jest duża szansa na to iż "trafimy" w jakiś aktywny copy-set.
Powoduje to niedostępność danych mimo wysokiego poziomu redundancji
Min copy set
Derandomizacja pomaga w uzyskaniu wyższej dostępności.
W przypadku długoterminowym nie ma różnicy pomiędzy podejściami ze względu na dostępność.
Jak tylko podejście do problemu może wpływać na dostępność danych.
Probabilistyczne algorytmy i struktury danych
By bambucha
Probabilistyczne algorytmy i struktury danych
- 1,682