eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingdalsza optymalizacja › Re: dalsza optymalizacja
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!newsfeed2.atman.pl!newsfe
    ed.atman.pl!.POSTED!not-for-mail
    From: bartekltg <b...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: dalsza optymalizacja
    Date: Mon, 02 Apr 2012 14:58:08 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 87
    Message-ID: <jlc7p2$ene$1@node2.news.atman.pl>
    References: <jl73ie$b6f$1@inews.gazeta.pl> <jl9aaf$326$1@inews.gazeta.pl>
    <jl9al3$ee7$1@inews.gazeta.pl> <jl9dfl$a80$1@inews.gazeta.pl>
    <jl9e7f$epj$1@node2.news.atman.pl> <jl9ftm$j00$1@inews.gazeta.pl>
    <jla4jc$79r$1@node2.news.atman.pl> <jlaclv$jrp$1@inews.gazeta.pl>
    <jlaenc$isq$1@node2.news.atman.pl> <jlajqo$hrn$1@inews.gazeta.pl>
    <jlans7$u0q$1@node2.news.atman.pl> <jlatk0$5mk$1@inews.gazeta.pl>
    NNTP-Posting-Host: 144-mi3-6.acn.waw.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node2.news.atman.pl 1333371490 15086 85.222.69.144 (2 Apr 2012 12:58:10 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Mon, 2 Apr 2012 12:58:10 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120327
    Thunderbird/11.0.1
    In-Reply-To: <jlatk0$5mk$1@inews.gazeta.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:196545
    [ ukryj 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



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: