LFSR - przykład - Politechnika Krakowska

advertisement
POLITECHNIKA KRAKOWSKA - WIEiK
KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH
Algorytmy i Struktury Danych
www.pk.edu.pl/~zk/AISD_HP.html
Wykładowca:
dr inż. Zbigniew Kokosiński
[email protected]
Wykład 8: Generacja liczb losowych
•
•
•
•
•
•
•
Problem generacji liczb losowych
Liczby losowe a pseudolosowe
Zastosowania generatorów liczb losowych
Metody programowej generacji liczb losowych
Przykłady obliczeniowe
Statystyczna ocena jakości generatorów
Metody sprzętowej generacji liczb losowych
Problem generacji liczb losowych
Związki pomiędzy rozkładami liczb losowych
Liczby pseudolosowe (J. von Neumann)
Metoda środka kwadratu (von Neumann, 1946)
Uwaga: niektóre sekwencje degenerują się do zer lub
cykli, podczas gdy inne są zadowalające.
Wniosek: metoda generacji musi być dobrana starannie,
a nie przypadkowo.
Metoda środka kwadratu - przykład
. ..
Xi=
X i^2 =
X i+1 =
X i+1^2=
X i+2 =
X i+2^2=
X i+3 =
X i+3^2=
X i+4 =
X i+4^2=
|| 3967 ||
|| 15|7370|89 ||
|| 7370 ||
|| 54|3169|00 ||
|| 3169 ||
|| 10|0425|61 ||
|| 0425 ||
|| 00|1806|25 ||
|| 1806 ||
|| 03|2616|36 ||
...
Zastosowania liczb pseudolosowych
Algorytmy randomizowane
Algorytmy randomizowane (probabilistyczne) to algorytmy
wykorzystujące pewien mechanizm losowy. Najcześciej jest to
generator liczb pseudolosowych. Zachowanie algorytmu zależy od
dodatkowego strumienia losowych danych wejściowych. Algorytm
ma osiągnąć lepszą jakość (zwykle krótki czas obliczeń) w średnim
przypadku. Prawdopodobieństwo wystąpienia najgorszego
przypadku jest znikomo małe.
Przykład:
Algorytm sortowania QuickSort działa w średnim przypadku w
czasie O(n), chociaż czas najgorszego przypadku to O(n^2).
Losowe “przetasowanie” danych wejściowych praktycznie eliminuje
najgorszy przypadek.
Algorytm Monte Carlo
Algorytm MC należy do klasy algorytmów
randomizowanych zawierających mechanizm
losowego próbkowania.
Przykład: gra w statki. Losowe próbkowanie jest
efektywniejsze niż systematyczne przeszukiwanie
obszaru.
Algorytm MC jest stosowany w przypadku,
gdy z jakiegoś względu nie jest możliwe albo
dopuszczalne zastosowanie algorytmu
deterministycznego. MC może dać odpowiedź
niepoprawną, jednak prawdopodobieństwo błędu
można dowolnie zmniejszyć poprzez niezależne
powtarzanie algorytmu.
Algorytm Las Vegas
Algorytm LV należy do klasy algorytmów randomizowanych,
które nigdy nie dają niepoprawnego wyniku.
Algorytm nie “ryzykuje” poprawnością wyniku, “hazardowi”
podlegają tylko zasoby wykorzystywane w obliczeniach.
Przykład: randomizowany algorytm QuickSort daje zawsze
poprawny wynik sortowania, chociaż element podziałowy
(pivot) jest w nim generowany losowo.
Algorytm LV zawsze daje poprawną odpowiedź, albo informuje
o błędzie. Różny, chociaż skończony, jest tylko czas działania.
Jest to główna różnica pomiędzy algorytmami LV i RC.
Elementarne metody generacji
Metoda środka kwadratu (von Neumann, 1946)
Liniowa metoda kongruencyjna (D.H. Lehmer, 1949)
Kwadratowa metoda kongruencyjna (uogólnienie)
Kwadratowa metoda kongruencyjna
(wariant R.R. Conveyou)
• Addytywna metoda kongruencyjna
(G.J. Mitchel, D.P. Moore, 1958)
• Liniowa kombinacja - metoda kongruencyjna
(uogólnienie)
•
•
•
•
Złożone metody generacji
(zwiększające losowość)
• Metoda tasowania z dwoma sekwencjami
losowymi (M.D. MacLaren, G. Marsaglia, 1968)
• Metoda tasowania z jedną sekwencją losową
(C. Bays, S.D. Durham, 1976)
Uwaga: druga z powyższych metod jest lepsza
niż pierwsza
Arytmetyka modularna
Arytmetyka modularna
Liniowa metoda kongruencyjna
Liniowa metoda kongruencyjna – dobór
współczynników i wartości początkowej
Liniowa metoda kongruencyjna – dobór
współczynników i wartości początkowej
Liniowa metoda
kongruencyjna –
rozkłady wybranych liczb (w–1) i
(w+1) na czynniki
pierwsze, gdzie:
w – długość słowa
maszynowego
jako potęga o
podstawie 2
Liniowa metoda kongruencyjna generowanie losowych liczb ułamkowych
Kwadratowa metoda kongruencyjna
Kwadratowa metoda kongruencyjna dobór współczynników
Kwadratowa metoda kongruencyjna wariant R.R, Coveyou
Addytywna metoda kongruencyjna
Addytywna metoda kongruencyjna - algorytm
Addytywna metoda kongruencyjna rekomendowane pary liczb
Addytywna metoda kongruencyjna - przykład
Niech n=6, m=8, wybrana para liczb to (2,5).
[X(0), ... ,X(5)]=[2,5,1,7,4,3].
Generowana według wzoru X(n)=[X(n-2)+X(n-5)]
mod8 sekwencja liczb losowych X(6) ... X(29) - jest
następująca: [140071313043565207640472].
Początkowe wartości komórek pamięci Y[1] ... Y[6] oraz
indeksów w algorytmie są równe :
Y=[3 4 7 1 5 2], i=2, j=5.
Kolejne kroki:
Y=[3 4 7 1 5 1], i=1, j=4
Y=[3 4 7 1 4 1], i=6, j=3
Y=[3 4 7 0 4 1], i=5, j=2
Liniowa kombinacja - metoda kongruencyjna
Metoda tasowania z jedną sekwencją losową
Tasowanie z jedną sekwencją losową- przykład
Dana jest sekwencja losowa z poprzedniego przykładu,
generowana według wzoru X(n)=[X(n-2)+X(n-5)]
mod8 : X=[251743140071313043565207640472].
Niech k=7 oraz V=[X(0) ... X(k-1)]=[2517431],
Y=X(k)=4. m=8
Kolejne kroki: j=3, Y=V(3)=7 wyprowadź 7,V=[2514431]
j=6, Y=V(6)=1 wyprowadź 1,V=[2514430]
j=0, Y=V(0)=2 wyprowadź 2,V=[0514430]
j=1, Y=V(1)=5 wyprowadź 5,V=[0714430]
j=4, Y=V(4)=4 wyprowadź 4,V=[0714130]
Wygenerowana sekwencja wyjściowa to 71254 ...
Testowanie losowości metodą chi-kwadrat
Testowanie losowości - przykład
Niech r=100, N=1100, N/r=11,
sqrt(r)=sqrt(100)=10
(spełniony jest warunek 1100=N≥10r=1000)
Niech 30 wartości z przedziału [0, 99] występuje z
częstotliwością f =11, 20 z f = 12, po 15 z f = 13 oraz
f = 10, 5 z f = 9, 10 z f = 14.
(spr.: 30*11+20*12+15*13+15*10+5*9+10*14=1100)
chi-kwadrat = (30*0+20*1+15*(4+1)+5*4+10*9)/11=
= (0+20+75+20+90)/11=205/11=18.64≤20
Wniosek: ponieważ chi-kwadrat ≤ 2sqrt(r) - test wypadł
pozytywnie.
Generatory sprzętowe – rejestr LFSR
(Linear Feedback Shift Register)
Rejestr przesuwający z liniowym sprzężeniem zwrotnym
(LSFR) powstaje z n-bitowego rejestru przesuwającego
(SR), w którym zastosowano jeden z dwóch typów
sprzężenia: wewnętrzne lub zewnętrzne (na rys.
pokazano rejestry 4-bitowe z wektorem sprzężenia
c = 10011, FF (Flip-Flop) - oznacza element pamięci ).
Dla sprzeżenia wewnetrznego sygnał z
wyjścia ostatniego FF jest podawany na
wejścia FF wskazanych w wektorze c
(ostatnia wartość c zawsze równa 1).
Dla sprzeżenia zewnetrznego sygnał na
wejście pierwszego FF jest podawany z
wyjść FF wskazanych w wektorze c
(pierwsza wartość c zawsze równa 1).
Generatory sprzętowe – rejestr LFSR
Sekwencja binarna generowana przez LSFR jest
okresowa, a okres zależy od stanu początkowego
rejestru i struktury sprzężenia zwrotnego.
Generatory wytwarzające sekwencję o maksymalnej
długości mają okresy równe:
1,
dla stanu początkowego 00 ... 0
(2^n) – 1, dla każdego innego stanu początkowego
Generator na rejestrze LFSR - przykład
Dany jest generator LFSR jak na rysunku.
Stan początkowy rejestru to 1 0 1 1.
Generator wytwarza na wyjściu okresową sekwencję
binarną o maksymalnej długości równej (2^4)-1=15 :
1 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 ...
Źródła tablic, wzorów i rysunków:
1. Knuth D.E. : Sztuka programowania. Tom 2. Algorytmy
seminumeryczne, WN-T ,Warszawa 2002.
2. Sedgewick R. : Algorithms, Addison-Wesley, 1988.
3. Wieczorkowski R., Zieliński R. : Komputerowe generatory
liczb losowych, WN-T, Warszawa 1997.
Download