用MATLAB做出这道题的代码

来源:百度知道 编辑:UC知道 时间:2024/05/29 12:53:50
证明:在每一次人数不少于六人的聚会中可找出这样的三人,他们或者彼此均认识,或彼此均不认识,这里所说的认识是双方面的,即只要有一方讲不认识对方,这两人就算不者认识

trial_total=10000;
count=0; %trial_total实验中,不符合命题的个数

n=8; %聚会的人数

%%假定0为不认识,1为认识
for trial=1:trial_total
a=round(rand(n));
flag=0;
for i=1:n
for j=i+1:n
for k=j+1:n
temp=a(i,j)&&a(j,i)+a(i,k)&&a(k,i)+a(j,k)&&a(k,j);
if temp==0 || temp==3 %temp==3为全认识 temp==0是都不认识
flag=1;
break;
end
end
if flag==1
break;
end
end
if flag==1
break;
end
end
if flag==0 %一次实验中,如果没有符合命题的
count=count+1;
end
end

if count==0
sprintf('在%d次%d人实验中命题成立',trial_total,n)
else
sprintf('命题不成立')
end

个人觉得枚举法计算量太大了。
n个人,那么有2^(n(n-1))种说法,就拿10个人来说吧就有2^90次方,太大了

定义个6*6的矩阵know(6,6)先,以后就简单了。
枚举所有可能。