%这个函数可以产生任意点数的随机拓扑图以及对应的连接矩%阵,需要输入的参数是点数numfunction[L]=connectionM(num)%产生数组A用来存放表示两点之间权值的矩阵A,也就是临接矩阵,那么两点之间权值不为零元素的个数即为该点的度数DEF=num;%设定一个东东方便改变随机点的个数L=rand(DEF);%产生DEF*DEF的随机矩阵fori=1:DEFL(i,i)=0;%将对角线上的数置为0endL=10*L;L=floor(L);%向下去整L=mod(L,2);fori=1:DEFforj=1:iL(j,i)=L(i,j);%将A矩阵变为一个上三角或者下三角矩阵endendx=100*rand(1,DEF);y=100*rand(1,DEF);%产生10个随机的点plot(x,y,'r+');fori=1:DEFa=find(L(i,:)0);%将A矩阵每行大于0的数的在该行的地址找出来放在a中forj=1:length(a)c=num2str(L(i,j));%将A中的权值转化为字符型holdon;line([x(i)x(a(j))],[y(i)y(a(j))]);%连线endendtitle('随机拓扑图');e=num2str(DEF);legend(e);%左上角显示节点的个数form=1:DEFf=num2str(m);holdon;text((x(m)+x(m))/2,(y(m)+y(m))/2,f,'Fontsize',18);%将权值显示在两点连线中间endholdoff