摘要:《最强大脑》节目中的“火线对决”项目引发热议,本文通过数学与软件知识对“火线对决”的题目本质进行分析,利用数学软件给出随机题目的图像。
关键词:火线对决,邻接矩阵,图像生成
在最强大脑第五季的节目中,“火线对决”这个游戏项目引发热议,杨英豪选手成功地捍卫了中国队的尊严,不负众望的赢下了比赛。节目播出以后,微信小程序以及APP商城纷纷推出类似游戏“不交叉”、“交叉线”,具体规则请参照《最强大脑》第五季节目或微信小程序中的游戏规则。本文从数学角度对该游戏的本质进行剖析。我们规定点数为n,线段条数为e。
1 邻接矩阵的定义
表示顶点之间相邻关系的矩阵,记作 ,其中规定:
,并且在本问题中,因为每个点至少与其余两点相连,所以对于 并且在邻接矩阵中,其阶数n为随机生成的点的个数,而组成的线段数 。
2 线段条数的取值范围
这里线段条数e的取值范围是针对题目“有解”而言的取值范围,所以对于一个给定的n(点的个数),线段条数e想必不是可以随便取的,根据题意“让每个点至少与其余两点相连”,那么毫无争议,线段条数e的最小值为n,即: ,根据归纳法,我们证明 。
3 邻接矩阵的生成
我们想生成题目图像则必须确定的因素有三,一是点的个数,二是线段的条数,三是邻接矩阵内的元素,一、二是主观因素,而三的情况有成百上千中,这是由软件生成若干个并供出题人挑选的,所以分析该问题的关键就是如何利用matlab生成邻接矩阵。
首先打开matlab,利用下述代码建立.m文件,放入工作区。
functionAdjM=AdjM_Generate()
n=input
e=input
AdjM=zeros(n,n);
for i=1:n
need=2-sum(AdjM(i,:));
for j=1:need
p=ceil(n*rand);
while(AdjM(i,p)==1 ||p<=i)
p=ceil(n*rand);
end
AdjM(i,p)=1;AdjM(p,i)=1;
end
在命令行输入Adjm=Adjm_Generate,随后根据提示输入点的个数与线段的条数,命令行中便自动生成随机的符合要求的邻接矩阵。
4 题目图像生成
得到邻接矩阵以后,生成图像的三要素就全部具备,我们再在工作区内建立另一个生成图像的.m文件,代码如下。
functionPic_Plot(AdjM)
figure;
hold on;
[n,p]=size(AdjM);
point=100*rand(n,2);
plot(point(:,1),point(:,2),'ko');
for i=1:n-1;
A=find(AdjM(i,i:end)==1)+i-1;
for j=1:length(A)
plot([point(i,1),point(A(j),1)],[point(i,2),point(A(j),2)],'r');
end
end
axis([0 100 0 100])
end
建立好.m文件以后,再在命令行输入Pic_Plot(AdjM),matlab软件会自动为其生成随机图像。
5 小结
《最强大脑》中看似复杂的问题,杨英豪选手却可以非常迅速的完成挑战战胜对手,本质上在于杨英豪选手迅速的观测出了点与点、线与线之间的关联关系,这种肉眼观察的目的实际上与我们讨论邻接矩阵的目的是一致的。实际上,从 的极限式中也可以看出本题的实质与三角形必定有千丝万缕的关系。
不管是对于什么问题,不管是用数字化分析还是从感官上分析,捕捉到问题的实质内涵才是解决问题的关键所在。
参考文献:
[1]Alexander E. Litvak,AnnaLytova,KonstantinTikhomirov,NicoleTomczak-Jaegermann,Pierre Youssef. Adjacency matrices of random digraphs: Singularity and anti-concentration[J]. Journal of Mathematical Analysis and Applications,2017,445(2).
[2]屈長青.邻接矩阵的应用[J].郴州师范高等专科学校学报,2000(06):19-23.
作者简介:吕婧雯(1997-10- )女,汉族,安徽阜阳人,大学本科,专业方向旅游管理。