Ãëàâíàÿ ñòðàíèöà


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)
 
 

Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû  óìåíüøåíèå äàòû  òåìà  àâòîð 

 Òåìà:    Àâòîð:    Äàòà:  
 FAQ   Ilia Kantor   08 Dec 2001 22:16:44 
Àðõèâíîå /ru.algorithms/39463c128348.html, îöåíêà 2 èç 5, ãîëîñîâ 10
ßíäåêñ.Ìåòðèêà
Valid HTML 4.01 Transitional