Natknąłem się na następujący problem z symulacją: biorąc pod uwagę zestaw znanych liczb rzeczywistych, rozkład na jest zdefiniowany przez
Natknąłem się na następujący problem z symulacją: biorąc pod uwagę zestaw znanych liczb rzeczywistych, rozkład na jest zdefiniowany przez
Odpowiedzi:
Oto dość oczywisty rekurencyjny sampler w najlepszym przypadku (pod względem ciężaru ), ale w najgorszym przypadku ma charakter wykładniczy.
Załóżmy, że już wybraliśmy i chcesz wybrać . Musimy obliczyć
Teraz oczywiście chodzi o to, jak obliczyć .
Jeśli mamy to , następnie dla każdego z wiodącymi wpisami , a więc staje się:
W przeciwnym wypadku mamy to a więc .
W przeciwnym razie musimy powtórzyć, używając .
Załóżmy, że pamięć nie stanowi problemu i że możemy buforować wszystkie podliczenia , w drzewie - do tego stopnia, że trafiliśmy w jeden z „ładnych” przypadków, po których wszelkie połączenia wymagają stałego czasu. (Będziemy musieli obliczyć to całe drzewo, aby wybrać.) Potem, kiedy to drzewo obliczenia są zbudowane, sampler zajmie tylko czas. Pytanie brzmi, ile czasu zajmuje zbudowanie drzewa, lub równoważnie, jak duże jest ono.
Oczywiście trafimy w „ładne” przypadki, jeśli są posortowane, .
W najlepszym przypadku, . Następnie natychmiast trafiliśmy w „fajną” skrzynkę lub , więc budowa drzewa zajmuje cały czas, a cały sampler zajmuje czas.
W najgorszym (posortowanym) przypadku . Zatem pytanie brzmi: jak duże jest całe drzewo?
Cóż, pierwsze ścieżki do zakończenia są oczywiście i długości . Drzewo jest zatem kompletne do tej głębokości, a zatem zawiera co najmniejwęzły (Ma więcej; prawdopodobnie można go znaleźć za pomocą argumentu takiego jak te używane w problemach z ruiną hazardzisty, ale nie mogłem go znaleźć w ciągu dwóch minut Googlinga i nie obchodzi mnie to szczególnie - jest wystarczająco zły ....)
Jeśli twoje ustawienie ma tylko kilka bardzo dużych , jest to prawdopodobnie dość praktyczne podejście. Jeśli… są podobnej wielkości, prawdopodobnie nadal są wykładnicze i zbyt drogie dla dużych .