МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК
ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Кафедра “Системи автоматизованого проектування”
ЗВІТ
до лабораторної роботи №3
на тему
«Алгоритм k-внутрішніх групових середніх»
з курсу
«Системи штучного інтелекту»
Текст програми:
Program K_VNUTR;
Uses CRT;
const q = 12 ; kl = 5;
type
dis = record
v:array [1..q] of real;
t:array [1..q] of integer;
end;
var
x : array [1..q] of integer;
y : array [1..q] of integer;
j,i,k:integer;
d: array [1..kl] of dis;
serx,sery:real;
centre: array [1..kl] of integer;
centrex: array [1..kl] of real;
centrey: array [1..kl] of real;
cx: array [1..kl] of real;
cy: array [1..kl] of real;
min:real;
ok:boolean;
Label next,quit;
BEGIN
clrscr;writeln;
x[1]:= 4 ; y[1]:=5;x[2]:= 6 ; y[2]:=6;
x[3]:= 7 ; y[3]:=7;x[4]:= 8 ; y[4]:=8;
x[5]:= 7 ; y[5]:=15;x[6]:=8 ; y[6]:=15;
x[7]:= 9 ; y[7]:=15;x[8]:=10; y[8]:=15;
x[9]:= 11 ; y[9]:=15;x[10]:=14; y[10]:=2;
x[11]:=15 ; y[11]:=3;x[12]:=17; y[12]:=5;
writeln;
textcolor(15);
{ For i:=1 to kl do
begin
centre[i]:=i; }
centrex[1]:=x[1];
centrey[1]:=y[1];
centrex[2]:=x[6];
centrey[2]:=y[6];
centrex[3]:=x[12];
centrey[3]:=y[12];
For i:=1 to kl do
writeln('Z',i,'(',centrex[i]:1:1,';',centrey[i]:1:1,');');
{end; }
readln;
NEXT:;
clrscr;
writeln;
readln;
textcolor(14);
write(' Z1(',centrex[1]:1:1,';',centrey[1]:1:1,') ');
For i:=2 to kl do
if i=kl then writeln('Z',i,'(',centrex[i]:1:1,';',centrey[i]:1:1,')')
else
write('Z',i,'(',centrex[i]:1:1,';',centrey[i]:1:1,')',' ');
textcolor(15);
writeln;
For i:=1 to kl do
For j:=1 to q do
d[i].v[j]:=sqrt(sqr((centrex[i]-x[j]))+sqr((centrey[i]-y[j])));
For i:=1 to q do
begin
if i<10 then write(' X',i,' (',x[i],';',y[i],')',' ')
else
if i>=13 then write(' X',i,'(',x[i],';',y[i],')',' ')
else
write(' X',i,'(',x[i],';',y[i],')',' ');
For j:=1 to kl do
begin
textcolor(j*2);
if j=kl then writeln(d[j].v[i]:2:1)
else
write(d[j].v[i]:2:1,' ');
textcolor(15);
end;
end;
writeln;
For i:=1 to kl do
For j:=1 to q do
d[i].t[j]:=0;
For i:=1 to q do
begin
min:=d[1].v[i]; k:=1;
For j:=1 to kl do
begin
if min>d[j].v[i] then begin
min:=d[j].v[i];
k:=j;
end;
end;
d[k].t[i]:=1;
end;
For i:=1 to kl do
begin
serx:=0;
sery:=0;
k:=0;
For j:=1 to q do
if d[i].t[j]=1 then
begin
serx:=serx+x[j];
sery:=sery+y[j];
k:=k+1;
end;
if k<>0 then
begin
cx[i]:=serx/k;
cy[i]:=sery/k;
end;
end;
textcolor(3);
For i:=1 to kl do
writeln('Z(',i,') (x=',cx[i]:3:2,' y=',cy[i]:3:2,')'); textcolor(15);
ok:=true;
For i:=1 to kl do
if (cx[i]<>centrex[i])and(cy[i]<>centrey[i]) then ok:=false;
textcolor(4);
if ok=false then
begin
writeln('***Potribno vykonaty shche odnu iteraciju***');
readln;
end
else writeln('***Obrahunok zaversheno***');
textcolor(15);
if ok=false then
begin
For i:=1 to kl do
begin
centrex[i]:=cx[i];
centrey[i]:=cy[i];
end;
goto next;
end;
quit:;
readln;
END.
Результат виконання програми
Z1(4.0;5.0);
Z2(8.0;15.0);
Z3(17.0;5.0);
Z4(0.0;0.0);
Z5(0.0;0.0);
X4 (8;8) 5.0 7.0 9.5 11.3 11.3
X5 (7;15) 10.4 1.0 14.1 16.6 16.6
X6 (8;15) 10.8 0.0 13.5 17.0 17.0
X7 (9;15) 11.2 1.0 12.8 17.5 17.5
X8 (10;15) 11.7 2.0 12.2 18.0 18.0
X9 (11;15) 12.2 3.0 11.7 18.6 18.6
X10(14;2) 10.4 14.3 4.2 14.1 14.1
X11(15;3) 11.2 13.9 2.8 15.3 15.3
X12(17;5) 13.0 13.5 0.0 17.7 17.7
Z(1) (x=6.25 y=6.50)
Z(2) (x=9.00 y=15.00)
Z(3) (x=15.33 y=3.33)
Z(4) (x=0.00 y=0.00)
Z(5) (x=0.00 y=0.00)
***Potribno vykonaty shche odnu iteraciju***
X1 (4;5) 2.7 11.2 11.5 6.4 6.4
X2 (6;6) 0.6 9.5 9.7 8.5 8.5
X3 (7;7) 0.9 8.2 9.1 9.9 9.9
X4 (8;8) 2.3 7.1 8.7 11.3 11.3
X5 (7;15) 8.5 2.0 14.3 16.6 16.6
X6 (8;15) 8.7 1.0 13.8 17.0 17.0
X7 (9;15) 8.9 0.0 13.3 17.5 17.5
X8 (10;15) 9.3 1.0 12.8 18.0 18.0
X9 (11;15) 9.7 2.0 12.4 18.6 18.6
X10(14;2) 9.0 13.9 1.9 14.1 14.1
X11(15;3) 9.4 13.4 0.5 15.3 15.3
X12(17;5) 10.9 12.8 2.4 17.7 17.7
Z(1) (x=6.25 y=6.50)
Z(2) (x=9.00 y=15.00)
Z(3) (x=15.33 y=3.33)
Z(4) (x=0.00 y=0.00)
Z(5) (x=0.00 y=0.00)
***Obrahunok zaversheno***
Висновок
На цій лабораторній роботі я вивчив принципи роботи алгоритму k-внутрішніх групових середніх розпізнавання образів.
Написав програму реалізації алгоритму.