Zacznijmy od najprostszej sytuacji.
Rozważmy skończony zbiór , który będziemy nazywali przestrzenią
stanów. Czasem wygodnie przyjąć, że
. Jest to tylko
umowne ponumerowanie stanów.
(i)
Ciąg zmiennych losowych o wartościach w
nazywamy łańcuchem Markowa, jeśli dla każdego
i dla każdego ciągu
punktów
przestrzeni
,
![]() |
(o ile tylko , czyli
prawdopodobieństwo warunkowe w tym wzorze ma sens).
(ii) Łańcuch Markowa nazywamy jednorodnym, jeśli dla dowolnych stanów i
i każdego
możemy napisać
![]() |
to znaczy prawdopodobieństwo warunkowe w powyższym wzorze zależy tylko od i
,
ale nie zależy od
.
Jeśli , to
mówimy, że łańcuch w chwili
znajduje się w stanie
.
Warunek (i) w Definicji 7.1 znaczy tyle, że przyszła ewolucja łańcucha zależy od stanu obecnego, ale nie zależy od przeszłości. Łańcuch jest jednorodny, jeśli prawo ewolucji łańcucha nie zmienia
się w czasie. W dalszym ciągu rozpatrywać będziemy głównie łańcuchy jednorodne. Macierz
![]() |
nazywamy macierzą (prawdopodobieństw) przejścia łańcucha. Jest to macierz
stochastyczna, to znaczy dla dowolnych stanów
oraz
dla każdego
. Jeśli
, to wektor
wierszowy
![]() |
nazywamy rozkładem początkowym łańcucha (oczywiście,
). Jest jasne, że
![]() |
(7.1) |
Ten wzór określa jednoznacznie łączny rozkład prawdopodobieństwa zmiennych
i może być przyjęty za definicję
jednorodnego łańcucha Markowa. W tym sensie możemy utożsamić
łańcuch z parą
: łączny rozkład prawdopodobieństwa jest wyznaczony przez
podanie rozkładu początkowego i macierzy przejścia.
Opiszemy teraz bardzo ogólną konstrukcję, która jest podstawą algorytmów generujących łańcuchy Markowa. Wyobraźmy sobie, jak zwykle, że mamy do dyspozycji ciąg
,,liczb losowych”, produkowanych przez komputerowy generator,
czyli z teoretycznego punktu widzenia ciąg niezależnych zmiennych losowych o jednakowym rozkładzie,
.
Niech
i
będą takimi funkcjami, że
![]() |
(7.2) |
Jeśli określimy rekurencyjnie w następujący sposób:
![]() |
(7.3) |
to jest jasne, że tak otrzymany ciąg zmiennych losowych jest łańcuchem Markowa
z rozkładem początkowym i macierzą przejścia
.
Na zakończenie tego podrozdziału zróbmy kilka prostych uwag.
Wszystko, co w tym podrozdziale zostało powiedziane można niemal mechanicznie uogólnić
na przypadek nieskończonej ale przeliczalnej przestrzeni .
Można sobie wyobrażać, że dla ustalonego , zbiór
jest odcinkiem
długości
, ale nie musimy tego żądać.
Nie jest istotne, że zmienne
mają rozkład
. Moglibyśmy założyć, że
są określone na dość dowolnej przestrzeni
. Istotne jest, że te zmienne są niezależne,
mają jednakowy rozkład i zachodzi wzór (7.2). W praktyce bardzo często
do zrealizowania jednego ,,kroku” łańcucha Markowa generujemy więcej niż jedną ,,liczbę
losową”.
Przypadek ciągłej lub raczej ogólnej przestrzeni stanów jest w istocie równie
prosty, tylko oznaczenia trzeba trochę zmienić i sumy zamienić na całki.
Dla prostoty przyjmijmy, że . Poniżej sformułujemy definicję w taki sposób, żeby podkreślić analogię do przypadku dyskretnego i pominiemy subtelności teoretyczne.
Zwróćmy tylko uwagę, że prawdopodobieństwo warunkowe nie może tu być zdefiniowane tak elementarnie jak w Definicji 7.1, bo zdarzenie warunkujące może mieć prawdopodobieństwo zero.
(i)
Ciąg zmiennych losowych o wartościach w
nazywamy łańcuchem Markowa, jeśli dla każdego
, dla każdego ciągu
punktów
przestrzeni
oraz dowolnego (borelowskiego ) zbioru
,
![]() |
(dla prawie wszystkich punktów ).
(ii) Łańcuch Markowa nazywamy jednorodnym, jeśli dla
dowolnego zbioru i każdego
możemy napisać
![]() |
(dla prawie wszystkich punktów ).
Funkcja , której argumentami są punkt
i zbiór
, jest nazywana
jądrem przejścia. Ważne dla nas jest to, że dla ustalonego
, jądro
rozważane jako funkcja zbioru jest rozkładem prawdopodobieństwa.
W wielu przykładach jest to rozkład zadany przez gęstość,
![]() |
Wtedy odpowiednikiem wzoru (7.1) jest następujący wzór na łączną gęstość:
![]() |
(7.4) |
gdzie jest gęstością rozkładu początkowego, zaś
jest gęstością warunkową. Sformułowaliśmy Definicję 7.2 nieco ogólniej głównie dlatego, że w symulacjach ważną rolę odgrywają łańcuchy dla których prawdopodobieństwo przejścia nie ma gęstości. Przykładem może być łańcuch, który z niezerowym prawdopodobieństwem potrafi ,,stać w miejscu”, to znaczy
, i ma prawdopodobieństwo przejścia postaci, powiedzmy
![]() |
Łańcuch Markowa na ogólnej przestrzeni stanów można rekurencyjnie generować w sposób opisany wzorem (7.3), to znaczy i
dla
ciągu i.i.d.
z rozkładu
.
Niech
oznacza rozkład początkowy. Funkcje
i
muszą spełniać warunki
![]() |
(7.5) |
Rozważmy proces stochastyczny , czyli rodzinę zmiennych losowych o wartościach w skończonej przestrzeni stanów
, indeksowaną przez
parameter
, który interpretujemy jako ciągły czas. Pojedyncze stany oznaczamy
przez
lub podobnie. Załóżmy, że trajektorie są prawostronnie ciągłymi funkcjami mającymi lewostronne granice (prawie na pewno).
(i) Mówimy, że
jest procesem Markowa, jeśli dla dowolnych
oraz
,
![]() |
(ii) Proces Markowa nazywamy jednorodnym, jeśli dla dowolnych stanów i
i każdego
i
możemy napisać
![]() |
to znaczy prawdopodobieństwo warunkowe w powyższym wzorze zależy tylko od ,
i
,
ale nie zależy od
.
Sens założenia (i) jest taki sam jak w Definicji 7.1.
Żądamy mianowicie, żeby zmienna byłą warunowo niezależna od zmiennych
pod warunkiem zdarzenia
. Oczywiście,
jest prawdopodobieństwem przejścia w ciągu czasu
.
Rozkład początkowy oznaczymy przez
.
Ponieważ
jest skończona,
może być przedstawiony jako wektor a
jako macierz.
Odpowiednikiem macierzy przejścia jest macierz intensywności przejść zdefiniowana następująco.
![]() |
gdzie jest macierzą identycznościową. Można udowodnić, że granice istnieją.
Tak więc
i
przy
.
Innymi słowy,
jest rzeczywiście ,,intensywnością skoków z
do
” (na jednostkę czasu). Mamy wzór analogiczny do (6.3):
![]() |
Zauważmy, że mamy . Wspomnijmy jeszcze mimochodem, że macierze przejścia wyrażają się przez macierz intensywności
przy pomocy ,,macierzowej funkcji wykładniczej”:
. Dla uproszczenia notacji, niech
oznacza “intensywność wszystkich skoków ze stanu
”.
Z tego co zostało powiedziane łatwo się domyślić, że generowanie procesu Markowa
można zorganizować podobnie jak dla procesu Poissona, poprzez czasy skoków.
Niech będą kolejnymi momentami skoków,
![]() |
Jeśli , to
czas oczekiwania na następny skok,
zależy tylko od
i ma
rozkład wykładniczy z parametrem
. W szczególności, mamy
.
Jeśli obserwujemy proces w momentach skoków, czyli skupimy uwagę na ciągu
to otrzymujemy łańcuch Markowa z czasem dyskretnym, nazywany
czasem ,,szkieletem”. Jego prawdopodobieństwa przejścia są takie:
![]() |
(7.6) |
Oczywiście, cała trajektoria procesu jest w pełni wyznaczona przez momenty skoków
i kolejne stany łańcucha szkieletowego
chain
.
Po prostu,
dla
.
Następujący algorytm formalizuje opisany powyżej sposób generacji.
Gen ![]() |
![]() |
for ![]() ![]() |
begin |
Gen ![]() |
![]() |
Gen ![]() ![]() |
end |
Czasami warto zmodyfikować algorytm w następujący sposób.
Generowanie procesu Markowa można rozbić na dwie fazy: najpierw wygenerować ,,potencjalne czasy
skoków” a następnie symulować ,,szkielet”, który będzie skakał wyłącznie w poprzednio
otrzymanych momentach (ale nie koniecznie we wszystkich spośród nich). Opiszemy dokładniej tę konstrukcję, która bazuje na własnościach procesu Poissona. Wyobraźmy sobie najpierw, że
dla każdego stanu symulujemy niezależnie jednorodny proces Poissona
o punktach
skoku
przy czym ten proces ma intensywność
. Jeśli teraz, w drugiej fazie
, to za następny moment skoku wybierzemy
najbliższy punkt procesu
na prawo od
, czyli
. Z własności procesu Poissona (patrz Stwierdzenie 6.2 i jego dowód) wynika, że zmienna
ma rozkład wykładniczy z parametrem
i metoda jest poprawna. Naprawdę nie ma nawet potrzeby generowania wszystkich procesów Poissona
. Warto posłużyć się metodą przerzedzania i najpierw
wygenerować jeden proces o dostatecznie dużej intensywności a następnie ,,w miarę potrzeby” go przerzedzać.
Niech
będzie procesem Poissona o intensywności
i oznaczmy jego punkty skoków przez
. Jeśli
w drugiej fazie algorytmu mamy
w pewnym momencie
, to
zaczynamy przerzedzać proces
w taki sposób, aby otrzymać proces o intensywności
. Dla każdego punktu
,
powinniśmy rzucić monetą i z prawdopodobieństwem
ten punkt usunąć. Ale jeśli usuniemy punkt
to znaczy, że w tym punkcie
nie ma skoku, czyli
. Jeśli punkt
zostawimy, to wykonujemy skok,
losując kolejny stan z prawdopodobieństwem
. W rezultacie, stan
jest wylosowany
z rozkładu prawdopodobieństwa
![]() |
(7.7) |
Niech będzie ,,nadmiarowym szkieletem” procesu. Jest to łańcuch Markowa, który (w odróżnieniu od ,,cieńszego szkieletu”
) może w jednym kroku pozostać w tym samym stanie i ma prawdopodobieństwa przejścia
.
Odpowiada temu następujący dwufazowy algorytm.
Faza I
Gen ![]() |
Faza II
Gen ![]() |
for ![]() ![]() ![]() ![]() |
Algorytm jest bardzo podobny do metody wynalezionej przez Gillespie'go do symulowania
wielowymiarowych procesów urodzin i śmierci (głównie w zastosowaniach do chemii). Te procesy
mają najczęściej przestrzeń stanów postaci ; stanem układu jest
układ liczb
, gdzie
jest liczbą osobników (na przykład cząstek) typu
. Przestrzeń jest nieskończona, ale większa część rozważań przenosi się bez trudu.
Pojawia się tylko problem w ostatnim algorytmie jeśli
, czego nie można wykluczyć. Zeby sobie z tym poradzić, można wziąć
dostatecznie duże, żeby ,,na ogół” wystarczało,
a w mało prawdopodobnym przypadku zawitania do stanu
z
przerzucać się na
pierwszy, jednofazowy algorym.
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.