|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Ilia Kantor 2:5020/1815.6 08 Dec 2001 22:16:44 To : All Subject : FAQ --------------------------------------------------------------------------------
=== Cut ===
ì
5 - ïèøåì â âûõîäíyþ ñòpîêy
EOF - äîñòàåì èç ñòåêà ïëþñ
Èìååì: 2 3 + 4 * 5 +
Îápàòè âíèìàíèå íà ñëåäyþùåå:
- Âìåñòî çàïèñè â âûõîäíyþ ñòpîêy ìîæíî òyò æå âû÷èñëÿòü
âûpàæåíèå, äëÿ ýòîãî íåîáõîäèì åùå îäèí ñòåê (ïî÷åìy - ñîîápàçè
ñàì)
- Åñëè âûòàëêèâàòü èç ñòåêà îïåpàöèè ñ ïpèîpèòåòîì âûøå èëè
pàâíûì òåêyùåìy, òî âûïîëíåíèå îïåpàöèé ñ îäèíàêîâûì ïpèîpèòåòîì
áyäåò ïpîèçâîäèòüñÿ ñëåâà íàïpàâî, ò.å. êàê âñå ìû ïpèâûêëè, äà
è åãî ãëyáèíà yìåíüøèòüñÿ (õîòü ýòî è íå êpèòè÷íî)
- Ñêîáêè â âûõîäíyþ ñòpîêy íå ïèøyòñÿ, òàê êàê èõ ïpèîpèòåò
y÷èòûâàåòñÿ àâòîìàòè÷åñêè; îäíàêî èõ áàëàíñ ëåãêî ïpîâåpÿåòñÿ.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q23. Ýôåêò pàçâèâàþùåãîñÿ ôëàãà
A. (Alex Gashper 2:469/79.77)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Program Rulz;
Const SloFake : Array[1..17,1..50] of Byte = (
(2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,1,1,1,1,1,1,2,2,3,3,3,1,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,1,1,1,1,1,2,2,2,2,1,2,3,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,4,4,1,1,2,2,2,2,2,1,2,2,3,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,4,4,1,1,1,2,2,2,2,2,1,2,2,3,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,1,1,1,1,1,1,2,2,2,2,2,1,2,2,3,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,1,1,1,1,1,2,2,2,2,2,1,2,2,1,2,3,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,4,4,1,1,2,2,2,2,2,2,1,2,2,1,2,2,3,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,4,4,1,1,2,2,2,2,2,2,2,1,2,2,1,2,3,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,1,1,1,1,1,2,2,2,2,2,2,1,2,2,1,3,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,3,1,1,1,1,1,1,1,2,2,2,2,1,2,2,1,3,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,4,4,1,1,1,2,2,2,2,1,2,2,1,3,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,4,4,1,1,2,2,2,2,2,2,1,1,3,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,1,1,1,1,1,2,2,2,2,2,1,3,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,3,1,1,1,1,1,1,1,2,2,3,3,3,1,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3),
(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
,1,3,3,3,3,3,3,
3,3,3,3,3,3,3,3,3,3,3));
Type SloType = array[1..80,1..50] of Byte;
ScreenType = Array[1..200,1..320] of Byte;
SloPointType = array[1..80,1..50] of record X, Y : Word;
end;
Var Slo : SloType;
FS : SloPointType;
CosBuffer : array[0..63] of ShortInt;
Sk: ^ScreenType;
Fo, Ka : Byte;
X, Y, Fx, Fy, Cnt : Word;
Procedure SetPal(Color,R,G,B:Byte);
Begin
Port[$3C8] := Color;
Port[$3C9] := R;
Port[$3C9] := G;
Port[$3C9] := B;
End;
Function KeyPressed:boolean;
Begin
KeyPressed := Mem[$40:$1C] - Mem[$40:$1A] <> 0;
end;
Begin {Telo programa}
WriteLn('Copyright '); WriteLn;
New(Sk);
Ka := 0;
While (Char(Ka) < '1') or (Char(Ka) > '5') do
Begin
Write('Enter Waving 1 - 5 : ');
ReadLn(Char(Ka));
End;
Ka := Ka - Byte('1') + 7;
asm mov ax,19; int 10h; end;
For Fo := 1 to 80 do Move(SloFake[17],Slo[Fo],50);
For Fo := 1 to 17 do Move(SloFake[Fo],Slo[Fo+5],50);
For Fo := 1 to 64 do CosBuffer[Fo-1] := Round(Cos(Fo/10)*Ka);
For Fo := 1 to 31 do SetPal(Fo,0,0,Fo*2-10);
For Fo := 32 to 63 do
SetPal(Fo,(Fo-32)*2-10,(Fo-32)*2-10,(Fo-32)*2-10);
For Fo := 64 to 95 do SetPal(Fo,(Fo-64)*2-10,0,0);
For Fo := 96 to 127 do SetPal(Fo,(Fo-96)*2-10,(Fo-96)*2-10,0);
Cnt := 0;
Repeat
Inc(Cnt,2);
FillChar(Sk^,64000,0);
FillChar(Fs,850*2,0);
For X := 1 to 80 do
For Y := 1 to 50 do
Begin
Fs[X,Y].Y := 20+Y*3+CosBuffer[(X+Y+Cnt) mod 64];
Fs[X,Y].X := 40+X*3+CosBuffer[(Y+X+Cnt) mod 64];
For Fx := Fs[X-1,Y].X to Fs[X,Y].X-1 do
For Fy := Fs[X,Y-1].Y to Fs[X,Y].Y-1 do Sk^[Fy,Fx] :=
(SLO[X,Y])*32 -
CosBuffer[(X+Y+Cnt) mod 64] - 12;
End;
asm cli; mov bx,ds; lds si,Sk; mov ax,0A000h; mov es,ax;
xor di,di; mov cx,32000; REP movsw; mov ds,bx; sti; end;
Until KeyPressed;
asm mov ax,3; int 10h; end;
Dispose(Sk);
End.
+ Origin: [Team ÑÀÏÐ] (2:462/42)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q24. ×òî òàêîå íåéðîííûå ñåòè
A. (Dmitry Pryadkin 2:5010/207.3, polox@chel.ru)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Håéðîííûå ñåòè (HÑ) - ýòî ñðåäñòâà, ôóíêöèîíèðóþùèå áëàãîäàðÿ
ôîðìóëàì, ïîçâîëÿþùèå ðåøàòü äîñòàòî÷íî øèðîêèé êðóã çàäà÷.
HÑ êëàññèôèöèðóþòñÿ ïî ñëåäóþùèì ïðèçíàêàì:
1) Îáó÷àåìîñòü/íåîáó÷àåìîñòü
2) Îáó÷åíèå áåç ó÷èòåëÿ/ñ ó÷èòåëåì
3) Îòñóòñòâèå/ïðèñóòñòâèå îáðàòíûõ ñâÿçåé
4) Êîëè÷åñòâî ñëîåâ/íåéðîíîâ â ñëîå
5) è ò.ä...
HÑ ñîñòîÿò èç íåêîòîðîãî ÷èñëà íàèìåíüøèõ ñòðóêòóðíûõ åäèíèö -
ìàòåìàòè÷åñêèõ íåéðîíîâ. Êàæäûé íåéðîí îñóùåñòâëÿåò âçâåøåííîå
ñóììèðîâàíèå ñâîèõ âõîäîâ ñ êîýôôèöèåíòàìè ñèíàïòè÷åñêèõ ñâÿçåé,
ïîòîì ðåçóëüòàò îòïðàâëÿåòñÿ íà àêòèâàöèîííóþ ôóíêöèþ â êà÷åñòâå
àðãóìåíòà. Ïîòîì ýòà ôóíêöèÿ âûäàåò ðåçóëüòàò, êîòîðûé
íàçûâàåòñÿ ðåàêöèåé íåéðîíà íà âõîäíóþ èíôîðìàöèþ. Håéðîíû ìîãóò
áûòü ñâÿçàíû ðàçëè÷íûì îáðàçîì(âûõîäû îäíèõ ñîåäèíåíû ñî âõîäàìè
äðóãèõ), ÷òî íàäåëÿåò HÑ íåêîòîðûìè ñïîñîáíîñòÿìè ïî ðåøåíèþ òîé
èëè èíîé ïîñòàâëåííîé çàäà÷è.
Áîëåå ïîäðîáíî ïî÷èòàòü ïðî HÑ ìîæíî òóò:
http://www.neuropower.de/rus/books/
http://nncourse.chat.ru (ÿ çàáûë, åñòü ëè â àäðåñå www ;-)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q25. Ìåòîä äåôîðìèðóåìîãî ìíîãîãðàííèêà.
A. (Alexander Tsyplakov, tsy@land4.nsu.ru)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q> Ãäå ïpî ñàáæ ïî÷èòàòü ìîæíî. Hàäî åãî påàëèçîâàòü íà C++.
Ýòî î÷åíü õîðîøèé ìåòîä îïòèìèçàöèè, íå òðåáóþùèé âçÿòèÿ
ïðîèçâîäíûõ. Åùå åãî íàçûâàþò ñèìïëåêñíûì ìåòîäîì (ïîñêîëüêó
ìíîãîãðàííèê â äàííîì ñëó÷àå ñèìïëåêñ) èëè àëãîðèòìîì
Håëäåðà-Ìèäà (ïî èìåíè àâòîðîâ).
Hà ðóññêîì ÿ çíàþ îïèñàíèå òîëüêî â êíèãå "Ïîèñê îïòèìóìà"
Æèëèíñêàñà è Øàëòÿíèñà. Ïîïðîáóþ ïåðåñêàçàòü. Ïóñòü
ìèíèìèçèðóåòñÿ ôóíêöèÿ n ïåðåìåííûõ f(X).
Ïðîùå âñåãî ïîíÿòü ìåòîä áåç äåôîðìàöèè ñèìïëåêñà. Áåðåì
ñèìïëåêñ ñ ðàâíûìè ñòîðîíàìè (íà ïëîñêîñòè - ïðàâèëüíûé
òðåóãîëüíèê, â òðåõìåðêå - ïðàâèëüíûé òåòðàýäð è ò.ä.) è â
êàæäîé âåðøèíå ñ÷èòàåì öåëåâóþ ôóíêöèþ f. Çàòåì íàõîäèì
"íàèõóäøóþ" âåðøèíó è ïåðåâîðà÷èâàåì ñèìïëåêñ çåðêàëüíî
îòíîñèòåëüíî ïðîòèâîïîëîæíîé ãðàíè (ò.å. êàæäûé ðàç "õóäøóþ"
âåðøèíó çàìåíÿåì íà íîâóþ). Òàê è øàãàåì, ñêàòûâàÿñü â ìèíèìóì,
ïîêà ïîëó÷àåòñÿ. Êîãäà ïåðåñòàíåò ïîëó÷àòüñÿ, ñèìïëåêñ ñëåäóåò
ñæàòü ãîìîòåòèåé, îñòàâëÿÿ íà ìåñòå "ëó÷øóþ" âåðøèíó.
Hî ýòîò óïðîùåííûé ìåòîä íåäîñòàòî÷íî õîðîøî ðàáîòàåò. Hà
íåêîòîðûõ îâðàæíûõ ôóíêöèÿõ îí æåñòîêî òîðìîçèò. Ïîýòîìó
ñèìïëåêñ ñëåäóåò äåôîðìèðîâàòü, ÷òîáû îí "ïîäñòðàèâàëñÿ" ïîä
ìèíèìèçèðóåìóþ ôóíêöèþ.
Îáîçíà÷èì êîîðäèíàòû âåðøèí ñèìïëåêñà ÷åðåç X[i],
i=1...(n+1).
* Hà÷àëî
Hàõîäèì âåðøèíû, â êîòîðûõ f ìèíèìàëüíà è ìàêñèìàëüíà. Îáîçíà÷èì
èõ íîìåðà ÷åðåç l è h ñîîòâåòñòâåííî. Ðàáîòà ìåòîäà ñîñòîèò èç
ñëåäóþùèõ îïåðàöèé: îòðàæåíèå, ðàñòÿæåíèå, ñæàòèå è ðåäóêöèÿ.
Hà÷èíàåì ñ îòðàæåíèÿ - ýòî îáÿçàòåëüíûé øàã.
* Îòðàæåíèå
×åðåç X[n+2] îáîçíà÷èì öåíòð òÿæåñòè âñåõ âåðøèí, èñêëþ÷àÿ
õóäøóþ (ò.å. h):
X[n+2] = 1/n * (Sum{i=1...(n+1), i!=h} X[i])
Îòðàæåíèå - ýòî ïðîåêöèÿ òî÷êè X[h] ÷åðåç öåíòð òÿæåñòè X[n+2]:
X[n+3] = X[n+2] + a * (X[n+2] - X[h]),
ãäå êîýôôèöèåíò îòðàæåíèÿ a > 0, íàïðèìåð, a = 1.
 ðåçóëüòàòå îòðàæåíèÿ âîçìîæíû 4 ñëó÷àÿ:
(1) f(X[n+3]) < f(X[l]) (îòðàæåíèå ïðîøëî êëàññíî)
Äåëàåì ðàñòÿæåíèå
(2) f(X[n+3]) > f(X[h]) (îòðàæåíèå ïðîøëî ñîâñåì õðåíîâî)
Äåëàåì ðåäóêöèþ
(3) f(X[n+3]) <= f(X[h]), íî f(X[n+3]) > f(X[i] äëÿ âñåõ i êðîìå h
(îòðàæåíèå ïðîøëî íå î÷åíü óñïåøíî)
Äåëàåì ñæàòèå
(4) Hè÷òî èç âûøåïåðå÷èñëåííîãî (îòðàæåíèå ïðîøëî ñðåäíåíüêî)
Çàìåíÿåì õóäøóþ òî÷êó íà X[n+3], ò.å. X[h] := X[n+3], è íà÷èíàåì
ñíà÷àëà
* Ðàñòÿæåíèå
Ïðîñòî ïðîäîëæàåì äâèãàòüñÿ â òó æå ñòîðîíó, êóäà óæå øàãíóëè:
X[n+4] = X[n+2] + c * (X[n+3] - X[n+2])
ãäå êîýôôèöèåíò ðàñòÿæåíèÿ c > 1, íàïðèìåð, c = 2. Åñëè
f(X[n+4]) < f(X[l]), òî çàìåíÿåì X[h] := X[n+4], èíà÷å çàìåíÿåì
X[h] := X[n+3]. Hà÷èíàåì ñíà÷àëà.
* Ñæàòèå
Ñæèìàåì èñõîäíûé ñèìïëåêñ, ñäâèãàÿ "õóäøóþ" âåðøèíó X[h] â
ñòîðîíó öåíòðà òÿæåñòè X[n+2]:
X[h] := X[n+2] - b * (X[n+2] - X[h])
ãäå êîýôôèöèåíò ñæàòèÿ 0 < b < 1, íàïðèìåð, b = 1/2. Hà÷èíàåì
ñíà÷àëà.
* Ðåäóêöèÿ
"Ëó÷øàÿ" âåðøèíà X[l] ñòîèò íà ìåñòå, à îñòàëüíûå ïðèáëèæàþòñÿ ê
íåé â îäèíàêîâîé ïðîïîðöèè (ãîìîòåòè÷íî):
X[i] := X[l] - d * (X[l] - X[i]) äëÿ âñåõ i = 1...(n+1)
êðîìå l Çäåñü êîýôôèöèåíò ðåäóêöèè 0 < d < 1, íàïðèìåð, d = 1/2.
Hà÷èíàåì ñíà÷àëà.
Êàêîé êðèòåðèé îñòàíîâêè âûáðàòü - äåëî âêóñà.
Åñòü ðåàëèçàöèÿ íà Ôîðòðàíå èç æóðíàëà Applied Statistics
http://lib.stat.cmu.edu/apstat/47
Òàì íåìíîãî ïî äðóãîìó, ÷åì ÿ çäåñü îïèñàë.
Ñ ïîæåëàíèåì âñÿ÷åñêèõ óñïåõîâ,
Àëåêñàíäð Öûïëàêîâ
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q26. Áûñòðîå ïðåîáðàçîâàíèå Ôóðüå (ÁÏÔ)
A. (Vladimir Mikhailov, 2:5030/991.20)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Âîò pàáîòàþùàÿ ôyíêöèÿ påàëèçyþùàÿ ÁÏÔ (÷åé àëãîpèòì - íå â
êypñå). Èñòî÷íèê - Â.Êàïïåëèíè "Öèôpîâûå ôèëüòpû è èõ
ïpèìåíåíèå" - òàì ýòà ïpîãà íà Ôîpòpàíå.
n - ÷èñëî òî÷åê (îáÿçàòåëüíî ñòåïåíü 2-õ, ò.å. 64, 128, 256,
512, 1024, è ò.ä.)
m = log(n)/log(2)
dir -
=1 - ïpÿìîå ïpåîápàçîâàíèå;
=0 - îápàòíîå ---- || ----;
x1,x2-
- ïpè ïpÿìîì ÁÏÔ: ïpè âûçîâå ôyíêöèè, x1 ñîäåæèò èñõîäíûé
ñèãíàë (n òî÷åê), íà âûõîäå - x1 ñîäåpæèò âåùåñòâåííyþ ÷àñòü
ïpåîápàçîâàíèÿ, y1 - ìíèìyþ.
- ïpè îápàòíîì ñîîòâåòñòâåííî : íà âõîäå x1,y1 - ñîäåpæàò âåù.
è ìíèìyþ ÷àñòè, íà âûõîäå x1 - ñîäåpæèò påçyëüòàò îápàòíîãî ÁÏÔ.
Àìïëèòyäíûé ñïåêòp A=sqrt(x1^2+y1^2);
Ôàçîâûé ñïåêòp F=arctg(y1/x1);
Ðàññìàòpèâàòü ñïåêòp íyæíî äî ÷àñòîòû Hàéêâèñòà, òî åñòü 1/2
÷àñòîòû äèñêpåòèçàöèè.
Hy è íàêîíåö ÷àñòîòû ñïåêòpà îïpåäåëÿþòñÿ êàê 1/(T*n) ; Ò -
ïåpèîä äèñêpåòèçàöèè, ñåê ; n - íîìåp òî÷êè.
=== Cut from bpf.cpp ===
#include<math.h>
void bpf(double *x1,double *y1,int n,int m,int dir)
{
float pi=3.14159265;
double arg;
int le,le1;
double u1=1.0;
double u2=0.0;
double sin_;
double cos_;
int ip;
double t1;
double t2;
double t3;
double t4;
double u3;
int nv2=n/2;
int nm1=n-1;
int j;
int k;
for(int l=1;l<=m;l++)
{
le=(int)floor((pow(2,(m+1-l))));
le1=le/2;
arg = pi/(float)le1;
u1=1.0;
u2=0.0;
cos_ = cos(arg);
sin_ = sin(arg);
if(dir) sin_ = -sin_;
for(int j=1;j<=le1;j++)
{
for(int i=j;i<=n;i+=le)
{
ip=le1+i;
t1=x1[i]+x1[ip];
t2=y1[i]+y1[ip];
t3=x1[i]-x1[ip];
t4=y1[i]-y1[ip];
x1[ip]=t3*u1-t4*u2;
y1[ip]=t4*u1+t3*u2;
x1[i]=t1;
y1[i]=t2;
};
u3=u1*cos_-u2*sin_;
u2=u2*cos_+u1*sin_;
u1=u3;
};
};
for(int d=1;d<=nm1;d++)
{
if(d>=j)
k=nv2;
else
{
t1=x1[j];
t2=y1[j];
x1[j]=x1[d];
y1[j]=y1[d];
x1[d]=t1;
y1[d]=t2;
k=nv2;
};
while(!(k>=j))
{
j=j-k;
k=k/2;
};
j=j+k;
};
if(dir)
{
for(int i=1;i<=n;i++)
{
x1[i]=x1[i]/n;
y1[i]=y1[i]/n;
};
};
};
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q27. Ãåíåòè÷åñêîå îáó÷åíèå íåéðîííûõ ñåòåé.
A. (Yuri Burger, 2:468/85.3)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Ñ ñàìèì ïðèíöèïîì ÃÀ çíàêîì?
Âîïùèì â íåéðîíêå èìååì êó÷ó (îáû÷íî ìàòðèöó :) âåñîâûõ
êîýôôèöèåíòîâ. Ïåðåäåëóåì å¸ â âåêòîð äëÿ ÃÀ (îáû÷íî ýòî
äâîè÷íàÿ ñòðîêà). Ñîîòâåòñòâåííî îïðåäåëÿåì æèçíåñòîéêîñòü
âåêòîðà (ïðîñòàÿ îöåíêà íåéðîíêè â çàâ. îò öåëè).
Òàê äåëàåì N ðàç (âåñà çàïîëíåíû îò ðàíäîìà).
Ïîòîì ïî ÃÀ - ñêðåùèâàåì/ìóòèðóåì âåêòîðà, ïðèáèâàåì
íåæèçíåñòîéêèå, ïåðåîöåíèâàåì âåêòîðà, ïîâòîðÿåì âñ¸ ñíà÷àëà äî
òåõ ïîð, ïîêà íå "ðîäèòñÿ" âåêòîð, ñåòåâîé ýêâèâàëåíò êîòîðîãî
íàñ óäîâëåòâîðÿåò :)
Âîò, âðîäå è âñ¸. Òîêà ýòî äåëî æðó÷åå áóäåò - ïàìÿòè íàäî
ìíîãî.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Q28. Òî÷êà â ìíîãîóãîëüíèêå
A. (Mihail Popov, 2:5026/61.13)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
VB> Ãðíèöà ìíîãîóãîëüíèêà P çàäàåòñÿ êîîðäèíàòàìè âåðøèí,
VB> ïåðå÷èñåííûìè â
VB> ïîðÿäêå îáõîäà ïî ÷àñîâîé ñòðåëêå (x1,y1),... (xN,yN).
VB> Hàïèøèòå
VB> ïðîãðàììó, ïðîâåðÿùóþ, ëåæèò ëè òî÷êà (x,y) âíåòðè P. Âñå
VB> óïîìÿíóòûå
VB> êîîðäèíàòû öåëî÷èñëåííûå.
=== Cut ===
PROGRAM PolyFill;
USES GRAPH,CRT;
VAR
VX1,VY1,VX2,VY2 : INTEGER;
R,GD,GM,C,I,J,X,Y : INTEGER;
N : STRING;
AREA : ARRAY [1..9] OF POINTTYPE;
PROCEDURE DRAWPOINTS;
BEGIN
FOR I:=1 TO J-1 DO BEGIN
SETCOLOR(7);
CIRCLE(AREA[I].X,AREA[I].Y,2);
STR(I,N);SETCOLOR(15);
OUTTEXTXY(AREA[I].X,AREA[I].Y,N);
SETCOLOR(7);
END;END;
BEGIN
GD:=VGA;GM:=VGAHI;INITGRAPH(GD,GM,'C:\TP70\BGI');
J:=1;
AREA[J].X:=20;AREA[J].Y:=0;INC(J);
AREA[J].X:=0;AREA[J].Y:=100;INC(J);
AREA[J].X:=80;AREA[J].Y:=150;INC(J);
AREA[J].X:=120;AREA[J].Y:=60;INC(J);
AREA[J].X:=80;AREA[J].Y:=10;INC(J);
AREA[J].X:=AREA[1].X;AREA[J].Y:=AREA[1].Y;
FOR X:=0 TO === Cut ===
Çäåñü áûë ÿ. [Team Ãèòàðà][Team MUD][Team Chinese][Team NLP]
--- GoldEd 3.00.Alpha4+
* Origin: http://algolist.da.ru - Ìèð Àëãîðèòìîâ (2:5020/1815.6)
Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû óìåíüøåíèå äàòû òåìà àâòîð
Àðõèâíîå /ru.algorithms/39463c128348.html, îöåíêà èç 5, ãîëîñîâ 10
|