📄 u0.m
字号:
clear;
N=100;
M=100;
for i=1:N
x(i)=rand(1)*M;
y(i)=rand(1)*M;
end
x(1)=M*0.95;y(1)=M*0.95;
plot(x,y,'o',x(1),y(1),'p');
%for i=1:N
% str=num2str(i);
% text(x(i)-2,y(i)-2,str);
%end
for i=1:N
k=i;
for j=1:N
if (x(i)-x(j))^2+(y(i)-y(j))^2<M^2*0.04 & i~=j & ((x(j)-M*0.95)^2+(y(j)-M*0.95)^2<(x(k)-M*0.95)^2+(y(k)-M*0.95)^2 | k==i)
k=j;
end
end
if k~=i
parent(i)=k;
end
a(1)=x(i);a(2)=x(k);b(1)=y(i);b(2)=y(k);
line(a,b);
end
child=zeros(N,N*0.1);
for i=1:N
m(i)=1;
for j=1:N
if parent(j)==i
child(i,m(i))=j;
m(i)=m(i)+1;
end
end
end
neighbour=zeros(N,N*0.2);
for i=1:N
n(i)=1;
for j=1:N
if (x(i)-x(j))^2+(y(i)-y(j))^2<M^2*0.04 & i~=j
neighbour(i,n(i))=j;
n(i)=n(i)+1;
end
end
end
t=zeros(N,N*0.15);
f=zeros(N,N*0.15);
u=1;v=1;
t(u)=1;f(u)=1;
k=1;d=1;
visited=zeros(N,1);visited(1)=1;
max_t=1;max_f=1;
while k<N & d<20*N
if child(u,v)~=0 & visited(child(u,v),1)==0
u=child(u,v);
p=1;q=1;i=1;
while i~=n(u)
i=1;
while i<n(u)
if p==t(neighbour(u,i))
p=p+1;
break;
end
i=i+1;
end
end
i=1;
while i~=n(u)
i=1;
while i<n(u)
if q==f(neighbour(u,i))
q=q+1;
break;
end
i=i+1;
end
end
t(u)=p;f(u)=q;
if t(u)>max_t
max_t=t(u);
end
if f(u)>max_f
max_f=f(u);
end
visited(u,1)=1;
k=k+1;
% text(x(u)+2,y(u)+2,num2str(t(u)));
text(x(u)-2,y(u)-2,num2str(f(u)));
v=1;
else
if child(u,v)==0
u=parent(u);
v=1;
else
v=v+1;
end
end
d=d+1;
end
max_t
max_f
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -