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


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Comoderator Of Ru Algorithms         2:5002/46.4    10 Apr 2003  08:01:18
 To : All
 Subject : 2 faq
 -------------------------------------------------------------------------------- 
 
     - ï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 ðàç (âåñà çàïîëíåíû îò ðàíäîìà).
 
 Ïîòîì ïî ÃÀ - ñêðåùèâàåì/ìóòèðóåì âåêòîðà, ïðèáèâàåì íåæèçíåñòîéêèå,
 ïåðåîöåíèâàåì âåêòîðà, ïîâòîðÿåì âñ¸ ñíà÷àëà äî òåõ ïîð, ïîêà íå "ðîäèòñÿ"
 âåêòîð, ñåòåâîé ýêâèâàëåíò êîòîðîãî íàñ óäîâëåòâîðÿåò :)
 
 Âîò, âðîäå è âñ¸. Òîêà ýòî äåëî æðó÷åå áóäåò - ïàìÿòè íàäî ìíîãî.
 
  IT> Çàáàâíî. À êàê ðàñøèôðîâûâàåòñÿ "ÃÀ"? Ãåíåòè÷åñêèé àëãîðèòì?
 
     Óãó. Hî âîîáùåò, åñëè áûòü áîëåå òî÷íûì, ãåí. àëãîðèòì ðàáîòàåò ÷óòü ïî
 äðóãîìó. Îïèñàí áûë... äàæ íå ïîìíþ êàê íàçûâàåòñÿ... êàæèñü ïðîñòî
 ãåíåòè÷åñêèé ìåòîä... èëü åùå êàê.. À ÃÀ, èìõî, òîæ ñàìîå, íî ìîäèôèöèðîâàí äëÿ
 ìîäåëèðóþùèõ ñèñòåì è ò.ä.
 
  IT> À êàê ïðîèçâîäèòñÿ ñìåøèâàíèå è ìóòèðîâàíèå?
 
     Hó ñ ìóòèðîâàíèåì ïðîñòî - åñëè âåêòîð áèíàðíûé, òî ïðîñòî îò áàëäû áåðåòñÿ
 òî÷êà íà âåêòîðå è èíâåðòèðóåòñÿ.
     À ñêðåùèâàíåé ìîæíî ïî ðàçíîìó äåëàòü. ß þçàë òàêîå - îò áàëäû áåðåì òî÷êó
 äëÿ äâóõ âåêòîðîâ è ïîëó÷àåì òðåòèé, çàïèñàâ â íå¸ âñ¸ ÷òî äî òî÷êè èç ïåðâîãî
 è âñ¸ ÷òî ïîñëå - èç âòîðîãî. Ýòî, êñòà, îäíà èç ïðè÷èí, ïî÷åìó ìåòîä íàçâàí
 ãåíåòè÷åñêèì - ïðèíöèï ñêðåùèâàíèÿ ïî÷òè êàê ó æèâûõ îðãàíèçìîâ. Âòîðàÿ ïðè÷èíà
 - ïðèìåíåíèå ýâîëþöèè èëè åñòåñòâåííîãî îòáîðà.
     Ïðèìåðíî, èäåÿ ÃÀ/ÃÌ ñâîäèòñÿ ê ïðåäïîëîæåíèþ, ÷òî èç "õîðîøèõ" ðåøåíèé
 ìîæíî ïîëó÷èòü åùå áîëåå "ëó÷øåå".
 
  IT> À ãäå ýòî óñïåøíåå ïðèìåíÿåòñÿ?
 
     Òàì ãäå óæå íè÷åãî äðóãîãî ñäåëàòü íèçÿ :) Âîò õîòÿá ÿ äåëàë äëÿ ïîèñêà
 ìàêñèìóìà íåëèíåéíîé ìóíêöèè îò 2õ ïàðàìåòðîâ. Hó âëîì áûëî èçó÷àòü
 ñóùåñòâóþùèå ìåòîäû. À ÃÀ/ÃÌ ÿ çà ÷àñ íàïèñàë è âñ¸ ðàáîòàëî òèï-òîï ;)  ÷åì è
 ñîëü - ìåòîä îîîî÷åíü ïðîçðà÷íûé è ëåãêî-ðåàëèçóåìûé... Hî ïðè ýòîì äîêàçàòü
 åãî âåðíîñòü è ò.ä., èìõî, íåâîçìîæíî. Ïîýòîìó ëó÷øå ïðèìåíèòü òàì, ãäå
 àëüòåðíàòèâîé ìîæåò áûòü òîëüêî ñòàõîñòè÷åñêèå ìåòîäû - ÷òîá íå ïðèøëîñü
 äîêàçûâàòü ïðàâèëüíîñòü ñâîåãî. À ïðàêòèêà ïîêàçûâàåò, ÷òî ÃÀ ëó÷øå
 ñòàõîñòè÷åñêèõ ìåòîäîâ.
 
     Åñòü ïðàâäà ó íåãî îäèí èçúÿí - îí î÷åíü ïëîõî ïåðåâàðèâàåò ñëó÷àè, êîãäà
 ïðîñòðàíñâî çíà÷åíèé îöåíîê ðåøåíèÿ íåâåëèêî. Òîåñòü, åñëè åñòü îöåíêà òèïà
 "ðåøåíèå âåðíî" è "ðåøåíèå íåâåðíî" òî ÃÀ òóò íå áóäåò ðàáîòàòü :(
     Ïðàâäà è çàäà÷ òàêèõ íå òàê óæ ìíîãî.
     Ïîêà ÷òî ÿ âèäåë ïðèìåíåíèå ÃÀ/ÃÌ äëÿ îïòèìèçàöèîííûõ çàäà÷, çàäà÷
 íàõîæäåíèÿ ôóíêöèé è îáó÷åíèÿ HÑ. Ïðàâäà ïîñëåäíèÿ 2 ñëó÷àÿ ïðèâîäÿòñÿ ê
 ïåðâîìó :)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q28. Òî÷êà â ìíîãîóãîëüíèêå
 A.   (Mihail Popov, 2:5026/61.13)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
  VB> Ãðíèöà ìíîãîóãîëüíèêà P çàäàåòñÿ êîîðäèíàòàìè âåðøèí, ïåðå÷èñåííûìè â
  VB> ïîðÿäêå îáõîäà ïî ÷àñîâîé ñòðåëêå (x1,y1),... (xN,yN). Hàïèøèòå
  VB> ïðîãðàììó, ïðîâåðÿùóþ, ëåæèò ëè òî÷êà (x,y) âíåòðè P. Âñå óïîìÿíóòûå
  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 150 DO BEGIN
 FOR Y:=0 TO 150 DO BEGIN
 R:=0;
  FOR I:=1 TO J DO BEGIN
   VX1:=AREA[I].X-X;
   VY1:=AREA[I].Y-Y;
   VX2:=AREA[I+1].X-X;
   VY2:=AREA[I+1].Y-Y;
   GM:=VX1*VY2-VX2*VY1;
   IF GM<0 THEN INC(R);
 END;
 C:=1;IF R=J THEN C:=3;
 PUTPIXEL(X,Y,C);
 END;END;
 DRAWPOINTS;
 SETCOLOR(15);OUTTEXTXY(0,470,'PRESS ANY KEY');
 READKEY;
 CLOSEGRAPH;
 END.
 === Cut ===
 PS: Çäåñü ìíîãîóãîëüíèê çàêðàøèâàåòñÿ ïóòåì ïðîâåðêè ëåæèò ëè òî÷êà âíóòðè.
 
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q29. Wavelet-ïðåîáðàçîâàíèÿ
 A.   (Evgenij Masherov, 2:5020/175.2 è Yury Reshetov, 2:5085/131.6)
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 
  AP>     Hyæeí aëãopèòì caáæa.
 
 Ñìîòpÿ ÷òî òû ïîä ñàáæåì ïîäpàçóìåâàåøü, ïîñêîëüêó ýòî öåëîå íàïpàâëåíèå â
 ìàòåìàòèêå.
 Áûë öåëûé öèêë ñòàòåé â Êîìïüþòåppå, ïpàêòè÷åñêè âåñü íîìåp áûë ïîñâÿùåí ñàáæó,
 ãäå â äîâîëüíî ñæàòîé ôîpìå pàçíûå àâòîpû äåëèëèñü î ïpèêëàäíîì ïpèìåíåíèè.
 
 Åñëè âêpàòöå, òî îïpåäåëåíèå wavelet çâó÷èò òàê - ýòî äâóìåpíàÿ ôóíêöèÿ íà
 îòpåçêå, îïpåäåëåííûé èíòåãpàë êîòîpîé pàâåí íóëþ, àìïëèòóäà ôóíêöèè
 ñòpåìèòåëüíî óáûâàåò ê êpàÿì äàííîãî îòpåçêà.
 
 Ñóùåñòâóåò íåñêîëüêî âèäîâ ïpåîápàçîâàíèé.
  êà÷åñòâå âõîäíûõ äàííûõ áåpåì íåêóþ ïåpèîäè÷åñêóþ ôóíêöèþ f(x), êîòîpóþ
 ñîáèpàåìñÿ ïpåîápàçîâàòü è wavelet ôóíêöèþ w(x) c ïîìîùüþ êîòîpîé ïpîèçâîäèòñÿ
 ïpåîápàçîâàíèå.
 
 1. Òpåõìåpíîå ïpåîápàçîâàíèå.
 Ñäâèãàåì w(x) îòíîñèòåëüíî f(x) ïî âñåìó ó÷àñòêó õ îò 0 äî 2*PI. Ïpè ýòîì íà
 êàæäîì ñäâèãå ïåpåìíîæàåì ñîâïàäàþùèå òî÷êè íà îñè õ îáåèõ ôóíêöèé, ýòè
 ïpîèçâåäåíèÿ ñóììèpóåì è ïîëó÷àåì íåêèé êîýôôèöèåíò. Ïpîéäÿñü ïî õ äî 2*PI
 ïîëó÷àåì òpåòüþ ôóíêöèþ z(x), çíà÷åíèÿìè êîòîpîé ñëóæàò ýòè ñàìûå êîýôôèöèåíòû.
 Äàëåå, pàñòÿãèâàåì w(x) âäîëü õ íà âåëè÷èíó ãàpìîíèêè è ïpîäåëûâàåì ñ íåé òó æå
 ñàìóþ îïåpàöèþ. È ò.ä. äëÿ âñåõ èñêîìûõ ãàpìîíèê.  påçóëüòàòå ïîëó÷àåì íåêèé
 òpåõìåpíûé ìàêåò wavelet ïpåîápàçîâàíèÿ.
 Åãî îñîáåííîñòü â îòëè÷èå îò ïpåîápàçîâàíèÿ Ôópüå â òîì, ÷òî påçóëüòàò ñîäåpæèò
 áîëüøå èíôîpìàöèè î èñõîäíîé ôóíêöèè.
 
 2. Wavelet ñïåêòp. Ôóíêöèÿ ïîëó÷åííàÿ èç ïpåäûäóùåãî ïpåîápàçîâàíèÿ, íî â
 êà÷åñòâå àpãóìåíòà ñîäåpæàùàÿ íîìåpà ãàpìîíèê, à â êà÷åñòâå çíà÷åíèé ôóíêöèè
 îïpåäåëåííûé èíòåãpàë z(x) äëÿ äàííîé ãàpìîíèêè.
 Wavelet ñïåêòp ìîæíî ïîëó÷èòü è áîëåå ïpîñòûì ìåòîäîì, à èìåííî pàçëîæèòü
 èñëåäóåìóþ ôóíêöèþ ñïåêòpàëüíûì àíàëèçîì ñ ïîìîùüþ ïpåîápàçîâàíèÿ Ôópüå, à
 ïîòîì â êà÷åñòâå åå çíà÷åíèé âçÿòü påçóëüòàò äåëåíèÿ ãàpìîíèêè íà íóëåâóþ
 ãàpìîíèêó.
 
 Åñëè óæ áûòü ÷åñòíûì äî êîíöà, òî wavelet ïpåîápàçîâàíèå, ïî ìîåìó ëè÷íîìó
 ìíåíèþ - pàçäóòàÿ òåìà ñ ïîìîùüþ êîòîpîé íåêîòîpûå "ìàòåìàòèêè" ïûòàþòñÿ
 ñîîpóäèòü èç ìóõè ñëîíà. Hà ïpàêòèêå ìíîãîêpàòíî ïpèõîäèëîñü óáåæäàòüñÿ, ÷òî
 ñïåêòpàëüíûé àíàëèç äàåò ïîëíóþ è äîñòàòî÷íóþ èíôîpìàöèþ î èññëåäóåìîé ôóíêöèè,
 a wavelet äàåò îãpîìíîå êîëè÷åñòâî øóìîâ, êîòîpûå àâòîpû äàííûõ ìåòîäèê è
 âûäàþò çà èçáûòî÷íîñòü èíôîpìàöèè. Ïîýòîìó ÿ â ñâîåé ïpàêòèêå ïpåäïî÷èòàþ
 ñòàpîãî è äîápîãî Ôópüå âñÿêèì íîâîìîäíûì "îòêpûòèÿì".
 
 Âîò ïðîãðàììêà îäíîãî èç âàðèàíòîâ âåéâëåò-ïðåîáðàçîâàíèÿ
 (ïðÿìîãî è îáðàòíîãî)
 
 #include <stdlib.h>
 #include <math.h>
 double C[4]={0.4829629131445341, 0.8365163037378079,
              0.2241438680420134,-0.1294095225512604};
 int    K=0;
 void wavdir(double a[])
 {
 int i,j,k,nn,nh;
 double w[512];
 for(nn=512;nn>=4;nn>>=1)
     {
     nh=nn>>1;
     for(i=0,j=0; j<=nn-4;j+=2,i++)
         {
         w[i   ]=C[0]*a[j]+C[1]*a[j+1]+C[2]*a[j+2]+C[3]*a[j+3];
         w[i+nh]=C[3]*a[j]-C[2]*a[j+1]+C[1]*a[j+2]-C[0]*a[j+3];
         }
     w[i   ]=C[0]*a[nn-2]+C[1]*a[nn-1]+C[2]*a[0]+C[3]*a[1];
     w[i+nh]=C[3]*a[nn-2]-C[2]*a[nn-1]+C[1]*a[0]-C[0]*a[1];
     for(i=0;i<nn;i++)
     a[i]=w[i];
     }
 }
 void wavinv(double a[])
 {
 int i,j,k,nn,nh,nh1;
 double w[512];
 for(nn=4;nn<=512;nn<<=1)
     {
     nh=nn>>1;
     nh1=nh+1;
     w[0]=C[2]*a[nh-1]+C[1]*a[nn-1]+C[2]*a[0]+C[3]*a[nh1-1];
     w[1]=C[3]*a[nh-1]-C[0]*a[nn-1]+C[1]*a[0]-C[2]*a[nh1-1];
     for(i=0,j=2; i<nh-1; i++)
         {
         w[j++]=C[2]*a[i]+C[1]*a[i+nh]+C[0]*a[i+1]+C[3]*a[i+nh1];
         w[j++]=C[3]*a[i]-C[0]*a[i+nh]+C[1]*a[i+1]-C[2]*a[i+nh1];
         }
     for(i=0;i<nn;i++)
     a[i]=w[i];
     }
 }
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Q30. Âîçðàñòàþùàÿ ïîñëåäîâàòåëüíîñòü.
 A.   ((q)Aleksey Gallyamov, 2:5079/53.19(a))
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Äàíà ïîñëåäîâàòåëüíîñòü ÷èñåë. Hóæíî íàéòè â íåé ñàìóþ áîëüøóþ íåóáûâàþùóþ
 ïîñëåäîâàòåëüíîñòü ÷èñåë ïóò¸ì âû÷¸ðêèâàíèÿ ëþáîãî êîë-âà ëþáûõ ÷èñåë.
 Hàïðèìåð:
 
   3 0 2 7 8 3 5 4 6 7 2 0 3 1
 
 Â ýòîé ïîñëåäîâàòåëüíîñòè ñàìàÿ áîëüøàÿ ýòî:
 
   _ 0 2 _ _ 3 _ 4 6 7 _ _ _ _
 
 Hóæåí ñàìûé áûñòðûé è íå ñëîæíûé àëãîðèòì (èëè èñõîäíèê íà ïàñå).
 Òî ÷òî ÿ ïðèäóìàë ðàáîòàåò _î÷åíü_ ìåäëåííî. Ðåêóðñèâíàÿ ïðîöåäóðà, êîòîðàÿ
 íà ïàñå âûãëÿäèò òàê:
 
 var A: array[1..100]of Integer;
 const Chain: Integer = 0;
 procedure BigChain(nn, count: Integer);
  var i: Integer;
  begin
    Inc(count);
    if chain<count then chain:=count;
    for i:=nn+1 to 100 do if A[i]>A[nn] then BigChain(i, count);
  end;
 var i: Integer;
 begin
   for i:=1 to 99 do BigChain(i, 0);
   WriteLn('Ñàìàÿ áîëüøàÿ íåóáûâàþùàÿ ïîñëåäîâàòåëüíîñòü ñîñòîèò èç ', chain,
 ' ÷èñåë.');
 end.
 (òóò ÿ ïîêàçàë íàõîæäåíèå òîëüêî êîë-âà ñàìîãî áîëüøîãî ñàáæà)
 òàêàÿ êîíñòðóêöèÿ íà ìî¸ì 200 ïíå ðàáîòàåò îêîëî ìèíóòû (!!) :::((((
 
 ÎÒ ÐÅÄÀÊÖÈÈ ÔÀÊ: Ïðîãðàììêó íóæíî óñîâåðøåíñòâîâàòü, äîáàâèâ òàáëèöó,
                  êóäà áóäóò çàíîñèòüñÿ ðåçóëüòàòû ýòîé ðåêóðñèâíîé ôóíêöèè,
                  ÷òîáû íåñêîëüêî ðàç åå íå âûçûâàòü çàçðÿ.
 ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 === Êîíåö q_21-30.txt ===
 Comoderator
 
 ... Ïëîõ òîò ñîëäàò, êîòîðûé íå õî÷åò ñïàòü ñ ãåíåðàëîì.
 
 --- GoldED+/386 1.1.4.7
  * Origin: Âñ¸ôèãíÿ êðîìå ï÷¸ë,õîòÿ ï÷¸ëû,åñëèïîäóìàòü,òîæå ôèãíÿ (2:5002/46.4)
 
 

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

 Òåìà:    Àâòîð:    Äàòà:  
 faq   Mike Galushkin   06 Apr 2003 13:18:22 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:08:30 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 07:57:54 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 07:59:52 
 2 faq   Comoderator Of Ru Algorithms   10 Apr 2003 07:59:52 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:00:48 
 2 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:00:48 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:01:18 
 2 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:01:18 
 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:01:52 
 2 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:01:52 
 3 faq   Comoderator Of Ru Algorithms   10 Apr 2003 08:01:52 
 3 faq   Stanislav Shwartsman   10 Apr 2003 08:11:45 
 3 faq   Andrey Dashkovsky   11 Apr 2003 23:00:43 
 3 faq   Stanislav Shwartsman   12 Apr 2003 10:39:21 
 3 faq   Andrey Dashkovsky   13 Apr 2003 11:31:29 
 3 faq   Stanislav Shwartsman   14 Apr 2003 08:20:45 
 3 faq   Andrey Dashkovsky   14 Apr 2003 22:21:35 
 3 faq   Ruslan Tebuev   14 Apr 2003 11:51:21 
 3 faq   Andrey Dashkovsky   14 Apr 2003 22:38:11 
 3 faq   Ruslan Tebuev   15 Apr 2003 16:46:02 
 3 faq   Moderator   14 Apr 2003 23:26:48 
 3 faq   Zahar Kiselev   13 Apr 2003 19:07:12 
 3 faq   Moderator   14 Apr 2003 23:30:46 
 3 faq   Stanislav Shwartsman   15 Apr 2003 08:10:17 
 3 faq   Andrey Dashkovsky   14 Apr 2003 22:19:31 
 Re: 3 faq - àïïðîêñèìàöèÿ   Yuri Burger   15 Apr 2003 14:49:50 
Àðõèâíîå /ru.algorithms/27623e942a58.html, îöåíêà 1 èç 5, ãîëîñîâ 10
ßíäåêñ.Ìåòðèêà
Valid HTML 4.01 Transitional