Article View: alt.pl.matematyka
Article #10462Re: Algorytm mrówkowy
From: Maciek
Date: Thu, 08 Oct 2009 11:36
Date: Thu, 08 Oct 2009 11:36
62 lines
3645 bytes
3645 bytes
Użytkownik "Maciek" <maciek@elkomtech.com.pl.nospam>
napisał w wiadomości news:hakdt4$5bj$1@opal.futuro.pl...
>
> Użytkownik "Mateusz Piąty" <x@y.z> napisał
> w wiadomości news:19pva9lnlf400$.1qqgz3d3va30l.dlg@40tude.net...
>> D
>>>
>>> Zły symbol: nie P, tylko Pij powinno być - prawdopodobieństwo
>>> w węźle "i" wyboru przejścia do węzła "j".
>>>
>>
>> (...........................)
>>
>> W praktyce działa ale nie chodzi mi o odkrywanie
>> Ameryki ale o prawidłową implementację algorytmu.
>
> WYOBRAŹ sobie podział przedziału jednostkowego na części
> o długościach P(i,1), P(i,2), P(i,3), ... P(i,N) - gdzie N
> maksymalny numer węzła, do którego można przejść z bieżącego
> i-tego węzła. Masz wylosować liczbę z przedziału (0,1)
> i sprawdzić w którą część trafiłeś -- tą drogą pójdzie mrówka.
>
> Sprawdź więc, czy wylosowana liczba L jest mniejsza od P(i,1)
> - jeśli tak, idziesz do 1. W przeciwnym razie odejmij od niej
> P(i,1) i sprawdź, czy wynik jest mniejszy od P(i,2) - jeśli tak,
> to idziesz do węzła 2, w przeciwnym razie od bieżącej, już raz
> zmniejszonej wartości L, odejmujesz P(i,2), i porównujesz
> z P(i,3) -- i tak dalej.
> Wskutek błędów zaokrągleń może się zdarzyć, gdy wylosowane L
> będzie bardzo bliskie 1, że odejmiesz wszystkie wartości P,
> i wciąż pozostanie znikoma dodatnia reszta. Zalicz ją wtedy
> do ostatniego przedziału.
W Pascalu to będzie jakoś tak (nie pisałem w tym języku już
wiele lat, ale mam nadzieję, że to przypomina Pascala):
var
P : array[ 1 .. MaxN ] of real; { prawopodobieństwa }
N : integer; { liczba elementów P[] }
L : real; { liczba losowa od 0 do 1 }
i : integer; { licznik }
....
{ zakładam, że N > 0, elementy P[i] od i=1 do i=N
są nieujemne a ich suma wynosi (prawie równo) 1 }
L := random;
i := 0;
repeat
inc( i );
L := L - P[ i ];
until (L <= 0) or (i = N);
wynik := i; { tą drogą pójdzie mrówka }
Maciek
Technical Details
Message-ID:
<hakir9$g3u$1@opal.futuro.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!opal.futuro.pl!not-for-mailReferences:
<1bj1om8p4hc15$.1s3f8dy2bdiaf.dlg@40tude.net> <daf21b38-0694-45e4-a60d-5598e632c0ec@p15g2000vbl.googlegroups.com> <1o9equyr0ocwq$.2rh8ncdf4zlo.dlg@40tude.net> <a534a00e-af75-4b4b-b430-e5659a769b54@e18g2000vbe.googlegroups.com> <12yfgl5l4m4fe$.2xmz42mrjx8c$.dlg@40tude.net> <5af4213a-219b-4f3e-9546-b6566abc361f@j9g2000vbp.googlegroups.com> <5crvrx34iiyh.1cq98i8tw1fsa$.dlg@40tude.net> <a8a95c80-37cc-4033-a1c4-23b7e42b4fa6@v20g2000vbs.googlegroups.com> <17uzkoerj49cg$.cdb84ramqvld$.dlg@40tude.net> <hakc8v$24l$1@opal.futuro.pl> <19pva9lnlf400$.1qqgz3d3va30l.dlg@40tude.net> <hakdt4$5bj$1@opal.futuro.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.task.gda.pl!opal.futuro.pl!not-for-mail From: "Maciek" <maciek@elkomtech.com.pl.nospam> Newsgroups: alt.pl.matematyka Subject: Re: Algorytm mrówkowy Date: Thu, 8 Oct 2009 13:36:06 +0200 Organization: Bractwo Smocze Lines: 63 Message-ID: <hakir9$g3u$1@opal.futuro.pl> References: <1bj1om8p4hc15$.1s3f8dy2bdiaf.dlg@40tude.net> <daf21b38-0694-45e4-a60d-5598e632c0ec@p15g2000vbl.googlegroups.com> <1o9equyr0ocwq$.2rh8ncdf4zlo.dlg@40tude.net> <a534a00e-af75-4b4b-b430-e5659a769b54@e18g2000vbe.googlegroups.com> <12yfgl5l4m4fe$.2xmz42mrjx8c$.dlg@40tude.net> <5af4213a-219b-4f3e-9546-b6566abc361f@j9g2000vbp.googlegroups.com> <5crvrx34iiyh.1cq98i8tw1fsa$.dlg@40tude.net> <a8a95c80-37cc-4033-a1c4-23b7e42b4fa6@v20g2000vbs.googlegroups.com> <17uzkoerj49cg$.cdb84ramqvld$.dlg@40tude.net> <hakc8v$24l$1@opal.futuro.pl> <19pva9lnlf400$.1qqgz3d3va30l.dlg@40tude.net> <hakdt4$5bj$1@opal.futuro.pl> NNTP-Posting-Host: ns.elkomtech.com.pl Mime-Version: 1.0 X-Trace: opal.futuro.pl 1255001769 16510 62.233.147.142 (8 Oct 2009 11:36:09 GMT) X-Complaints-To: usenet@futuro.pl NNTP-Posting-Date: Thu, 8 Oct 2009 11:36:09 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5843 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit