|
|
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)
Âåðíóòüñÿ ê ñïèñêó òåì, ñîðòèðîâàííûõ ïî: âîçðàñòàíèå äàòû óìåíüøåíèå äàòû òåìà àâòîð
Àðõèâíîå /ru.algorithms/27623e942a58.html, îöåíêà èç 5, ãîëîñîâ 10
|