-
Data: 2012-04-02 14:58:08
Temat: Re: dalsza optymalizacja
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2012-04-02 02:58, M.M. pisze:
>> To, co nazwałem 'złożeniem' polega na tym, że najpierw
>> losujemy jedną liczbę k ~ B(n,p), a następnie, mając
>> już k robimu losowanie liczby g z rozkąłdu g~B(k,q)
>> (poprzednio w obu losowaniach musiało być to samo p).
> No tak. Dzieląc jeden zbiór o liczności n na dwa
> podzbiory o liczności k i n-k, schodzimy rekurencyjnie
> w dół. Ale czemu za drugim razem jest B(k,q), a nie
> B(k,p)?
Bo podział między zbiory 'weszło' i 'nie weszło'
może być inny. Jak w przykładzie z 6 szufladkami,
najpierw dzielimy po 3, czyli jest 1/2 sanszy że wejdzie
do wyróżnionego zbioru, a następnie z tych 3 wybieramy jedną
więc szansa jest tylko 1/3.
>
> Np. mamy 11 szufladek i n kulek. Szufladki dzielimy
> mniej/więcej po równo, czyli na 5 i 6. Prawdopodobieństwo
> że kulka wleci do pierwszych pięciu to 5/11, a że do
> pozostałych 6/11. Czyli zmienną k losujemy z
> rozkładu B(n,5/11).
Tak.
> W ten sposób podzieliliśmy zbiór
> na dwa podzbiory o liczności k i n-k. Następnie schodzimy
> rekurencyjnie w dół dla "5 szufladek i k kulek" i "6 szufladek i
> n-k kulek". O to chodzi?
Tak. Podzieliliśmy te kulki między te zbiory tak, jakby każda
z osobna była losowana i z równym prawdopodobieństwem
lądowała w każdej z szuflad.
>> Okazuje się, że g ~ B (n,p*q)
> Hmmm nie wiem i nie wiem do czego to jest potrzebne. Chyba
> się gubię w symbolach p i q.
Masz swoje wylosowane k i 5 szuflad. Wybierasz szufladę
nr 2. Losujesz liczbę kul w tej szufladzie z rozkładu B(k,1/5)
Wzorek mówi, że liczba ta ostatecznie będzie (gdy zapomnimy o k)
z rozkładu B(n,1/5 * 5/11) = B (n,1/11)
więc jakbyś od razu losował dla tej jednej.
>> Ale ze wzorku g ~ B (50, 1/2*1/3) = B (50,1/6)
>> czyli tak, jakbyśmy od razu badali trafianie do
>> szuflady 1. Robienie tego (w ten sposób!) na raty
>> nie zmienia wyniku.
> Czyli można liczyć albo rekurencyjnie, albo iteracyjnie:
> k1 ~ B(50,1/6)
> k2 ~ B(50-k1,1/5)
> k3 ~ B(50-k1-k2,1/4)
> k4 ~ B(50-k1-k2-k3,1/3)
> k5 ~ B(50-k1-k2-k3-k4,1/2)
> k6 = 50-k1-k2-k3-k4-k5
> Jeśli B jest jakimkolwiek prawidłowym rozkładem to nie
> widzę powodu aby to mogło nie działać.
Tak, to jest właśnie pierwszy algorytm z postu.
>> n = N; //ile kulek jeszcze zostało.
>> for( i=0 ; i<M ; i++ )
>> {
>> int k = generuj_liczbę_losową_B ( n, 1.0/(M-i) );
>> x[i]+=k;
>> n-=k;
>> }
Tylko trzeba mieć poprawny generator.
Druga wersja, dzieląca na połowy, potrafi przy dużym n (w porównaniu
do liczby szuflad) zadowolić się przybliżeniem opartym o generator
normalny (jeśli chcesz rozkład 'podobny', a nie są to jakieś ścisłe
symulacje opierające poprzwność o ten rozkład:)
W sumie nie jest trudne przy takich warunkach 'naprawić'
to metodą eliminacji (jak ona się po angielsku nazywa?)
algo od początku zbudować swoją za pomocą metody 'alias'.
pzdr
bartekltg
Następne wpisy z tego wątku
- 02.04.12 15:00 bartekltg
- 02.04.12 15:22 M.M.
- 02.04.12 15:55 M.M.
- 02.04.12 16:16 bartekltg
- 02.04.12 17:11 M.M.
- 02.04.12 17:31 Michoo
- 02.04.12 18:25 bartekltg
- 02.04.12 18:30 M.M.
- 02.04.12 18:47 Michoo
- 02.04.12 18:49 M.M.
- 02.04.12 18:51 M.M.
- 02.04.12 19:25 Edek Pienkowski
- 02.04.12 10:52 Roman W
- 02.04.12 12:07 Roman W
- 03.04.12 17:30 bartekltg
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-14 Spalił się autobus :-)
- 2025-03-14 Policjanci z Piątku
- 2025-03-14 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-03-14 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2025-03-14 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-03-14 VAT-R Umowa najmu na adres zamieszkania
- 2025-03-14 Gliwice => IT Expert (Network Systems area) <=
- 2025-03-14 Warszawa => Junior Rekruter <=
- 2025-03-14 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-14 China-Kraków => Senior PHP Symfony Developer <=
- 2025-03-14 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-03-13 Raspberry Pi 3 Model B+
- 2025-03-13 Kuchenka elektryczna
- 2025-03-12 test
- 2025-03-13 własny ekran startowy