用MATLAB做出这道题的代码 20
证明:在每一次人数不少于六人的聚会中可找出这样的三人,他们或者彼此均认识,或彼此均不认识,这里所说的认识是双方面的,即只要有一方讲不认识对方,这两人就算不者认识...
证明:在每一次人数不少于六人的聚会中可找出这样的三人,他们或者彼此均认识,或彼此均不认识,这里所说的认识是双方面的,即只要有一方讲不认识对方,这两人就算不者认识
展开
2个回答
展开全部
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次方,太大了
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次方,太大了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询