数学游戏“数三角形”的可编程图论模型

数学鉴赏课程论文

 

 

 

 

数学游戏“数三角形”的可编程图论模型

 

摘要

 

        本文研究上课时所提到的数学游戏“数三角形个数”问题。

        首先,本文介绍了数学游戏、图论相关背景,重述、分析了上课时的“数三角形个数”问题。模型一为老师上课介绍的分类讨论,人工数数的方法。可让人更有条理地分类、计数,得出题中共有35个三角形。但当图中分割情况更复杂时,模型一无法用计算机实现,人工计算存在效率低下、错误率高等问题。

        针对模型一的缺点,本文利用图论、线性代数等知识,提出了一种可编程计数的图论模型,即模型二、三、四。

        模型二将形象的图形转化成模块与模块之间的邻接图,表示模块之间的连通性,从而可使计算机读取。若干个模块若能拼接成一个三角形,那么其中每个模块必至少与其他一个模块连通。因该邻接图为无向图,且为稀疏矩阵,模型二帮助跳过了许多不需要进入判断是否为三角形环节的组合情况。实现时的算法复杂度低,运行速率快。

        模型三通过建立点与点的邻接图矩阵,表示点之间的连通性。多个模块拼接时,平面内存在多个点。结合平面几何知识,通过坐标最值取出决定三角形形状的外围点。仅当外围点个数为3,两两连通且不共线时,该组合才有可能为三角形。

        模型四完善了模型三所不能考虑到的一些情况。当且仅当所有非外围点在三角形边上或内部时,所拼接图形才为三角形。通过利用模型三与平面几何知识判断点是否在边上。通过线性代数向量叉乘知识,判断点是否在三角形内。从而判决出该种模块组合拼接成的图形是否为三角形。

        本文通过上述模型,将该类问题纯人工计数方法抽象为数学化的、易用计算机计算的数学模型。当待数图形分割更加复杂、模块数量更多时,通过基础的matlab编程验证,计算机依然可根据这些模型快速、准确、高效地算出正确答案。

 

 

关键词:图论 邻接图 计算机求解 线性代数 数三角形游戏

 

 

一、问题背景

 

1.1、数学游戏概述

 

        数学游戏是一种智力游戏。它主要是将各种各样的数学问题渗透到游戏当中,使人们在做游戏的过程中用到相关的数学知识,并体现一定的数学思想和数学方法,从而激发大众对数学的兴趣,提高学习数学的自信心。相比一般游戏它具有形象性、灵活性两大特点。它通过生动有趣的事例将抽象的数学知识形象的表示出来,将枯燥的数学符号具体化。数学游戏不同于数学习题,表现同一数学知识的形式灵活多样,同时做游戏的方式和方法也不拘一格,足以让学生有较大的创造空间。[1]

 

1.2、 图论知识背景

 

        图论是近年来发展迅速而又应用广泛的一门学科。它最早起源于一些数学游戏的难题研究,以及在民间广泛流传的一些游戏难题。以后随着科学的发展,图论在解决工程科学、运筹学、网络理论、信息论、控制论、博弈论以及计算机科学等各个领域的问题时,显示出越来越大的效果[2]。在图论发展的过程中,惠特尼、爱多士、塔特等[3]数学家做出了杰出的贡献,最终利用图论知识解决了四色问题。

 

1.3、图论在数学问题与数学游戏中的应用

 

        图论知识在数学问题、数学游戏中有着十分广泛的应用。如:经典的七桥问题[4]、渡河问题[5]、棋盘构形中同色矩形问题[6]、韩信勒马分油问题[7]等。并在数学竞赛[8]中有一定的应用。图论知识可以将生活中形象的问题抽象成数学问题,将一些看似别的领域的知识抽象成数学可表示、计算机可求解的问题。

 

 

二、问题重述

   

        在五月份的数学鉴赏课堂上,老师曾出过这样一个数学游戏问题:给出一个图形,如图一所示,数出图形中三角形的个数。

图一 问题原图

 

 

三、问题分析

   

        针对本问题,提出四个数学模型。

        第一个模型为上课时老师所介绍的模型,即分类讨论、人工数数法。根据组成最终三角形的小模块个数对其进行分类讨论。先数由一个小模块构成的三角形的个数,再数由两个模块构成的三角形的个数,以此类推。该方法不易用计算机实现,人工操作速度、精度难以保证。

        第二个模型为模块与模块的邻接图模型。将题目中的1~11模块抽象成点,通过一个邻接图表达各个模块之间的连通性。在模型一的方法基础上,该模型可确保所数三角形无遗漏、跳过一些不必要的判断,并易于计算机存储问题数据的模型。

        第三个模型为点与点的图模型。该图表示任意两点的连通关系。并利用平面几何知识找出可能确定每种情况下的三角形形状的三个“外围点”。仅当三个“外围点”两两连通并不共线,才有可能组成三角形。

        第四个模型为判断点与线关系的线性代数模型。通过模型三可判断出某点是否在另外两点所构成的线段上。通过向量叉乘的结果可知某点是否在三角形内部,从而决定这些点与模块所构成的图形是否为三角形。至此即可让计算机无遗漏、高效地数出图中三角形个数,并可对一般化情况进行推广。

        定义n为拼接成图形的模块数量,n2时,判断流程如图二所示:

 
 

 图二 判决图形是否为三角形流程图

 

 

四、符号说明及名词定义

 

4.1、外围点

 

        三角形由且仅由平面内三个点唯一确定。在此我们称确定三角形形状的三个点为“外围点”。每个外围点的横或纵坐标中至少有一个坐标为平面上所有点的横或纵坐标的最值。非外围点应位于三个外围点所围成的图形边上或内部,平面上所有点才能构成一个三角形。

 

4.2、模块与点的定义

 

        如下图的图三、图四,为该图中11个小模块、交点分别按照图中所示进行1~11与A~G的编号。称各模块为模块1,模块2……,各点为点A,点B……以此类推。

图三 原图中各模块定义示意图

图四 原图各点定义示意图

 

 

五、模型建立与求解

 

5.1.1、模型一的建立

   

        模型一为分类讨论、人工数数法。即根据组成最终三角形的小模块个数对其进行分类讨论。先数由一个小模块构成的三角形的个数,再数由两个模块构成的三角形的个数,以此类推。

 

5.1.2、模型一的求解

   

        首先讨论由一个小模块组成的三角形。观察易得1,2,3,4,5,8,9,11模块为三角形。故一个小模块所组成的三角形共8个。

        接下来讨论由两个小模块所组成的三角形。观察易得1和2,1和5,2和3,2和6,3和4,3和7,4和8,7和8,8和11,10和11模块所组成图形为三角形。故由两个小模块所组成的三角形共10个。

        同上可得,由三、四、五、六、七个模块所组成的三角形各有8、5、1、2、1个。

        根据上述分类讨论结果可知,该图形中共有8+10+8+5+1+2+1=35个三角形。

 

5.2.1、模型二的建立

   

        当图中模块数足够大时,模型一的方法因属于人工判别法,难以用计算机实现,也将变得不可靠。且在数由若干个小模块组成的三角形个数时,需要遍历所有情况进行判断是否为三角形,否则易出现差错,造成效率低下。

        针对模块一上述两个缺点,提出模型二,即模块与模块的邻接图模型。根据图论相关知识,将图中每个模块抽象成点,通过模块与模块的邻接图矩阵表示模块与模块之间的连通性。设k(i,j)表示矩阵中第i行第j列的位置,则

 

 

      

        根据此规则,可对本题的图形建立邻接矩阵,如图五所示。

图五:根据本题原图建立的模块邻接图矩阵

 

        该矩阵反应了模块与模块之间的连通性。由于1和2相联通等价于2和1相联通,因此该图是一个无向图。对于无向图,我们只需考察其右上方部分或左下方部分即可。

        由图形可直观地看出,处于边缘的模块大多只与两个模块存在邻接关系,处于中间的模块至多也只与四个模块存在邻接关系。在图论中,我们用度描述一个点连通的其他点的数量。显然,在此类数三角形问题中,每个模块的度都远小于总模块数。故该邻接图是一个0的数量远大于1的稀疏矩阵。

        易证明,若几个模块所拼成的图形为三角形,那么在这几个模块中,每个模块至少与其他一个模块存在邻接关系,以保证它们可以拼起来。如:考察模块1,2,3,10是否有可能拼成三角形时,由邻接图可知,10与其余三个模块均不连通,则不需判断该模块是否为三角形即可直接舍弃该情况。再如:考察模块1,2,3,4是否有可能拼成三角形时,由邻接图可知,1与2连通,2与3连通,3与4连通,故1,2,3,4可以拼成一个连通的图形,再去判断其是否为三角形。如图六中模块1与模块2、3均不连通,因此模块1,2,3无法构成一个三角形。

图六 因模块之间不连通所以无法构成三角形的情况

 

        综上可知,在对一个组合是否为三角形进行判断前,我们可以先根据邻接图快速地判断出其是否能组成一个连通的图,若无法组成,则可直接跳过该阶段,若可组成,则对其进行判断。又因为模块与模块之间的邻接图是一个无向图,且为0的数量远大于1的稀疏矩阵,故所需遍历的情况将大大减少,且根据邻接图将不会出现遗漏等情况,易于用计算机实现求解。

 

5.2.2、模型二的求解

   

        继承模型一分类讨论的思想,先考虑由一个模块所组成的三角形的情况,此情况下有8个三角形。

        接着考虑多个模块组成三角形的情况。当考虑两个模块时,只需考虑邻接图中值为1的组合情况,并将需判断的连通组合情况记录入一个表中。当考虑三个模块时,对刚才生成的表进行遍历,假设表中的第n项的两个模块为a,b,则找出a,b两个模块分别连通的模块(除了a,b本身)构成一个集合。例如,假设a与b,c模块连通,b与a,d模块连通,则构成集合{c,d}。每次从集合中取出一个模块加入该表该项中的情况进行判断,如此时应分别讨论a和b和c,a和b和d这两种情况,并将本表所引出的讨论情况记在一个新表中,方便下一轮继续讨论。以此类推,当考虑k个模块的情况时,若k>11,则结束。

        根据此方法判断,不难求出三角形总数为35个。

 

5.3、模型三的建立

 

        模型二给出了一种可让计算机无遗漏地遍历、并大大减少了判断次数的方法,但是判断时仍需人工判断其组合是否为三角形。

 

5.3.1、邻接图矩阵

 

        针对模型二仍存在的问题,提出模型三,即关于点的邻接图。设L(i,j)表示矩阵中第i行第j列的位置,则

 

 

 

        根据此规则,可对本题的图形建立点的邻接矩阵,如图七所示。

图七:根据本题原图建立的点与点邻接图矩阵

 

5.3.2、外围点

 

        在本文4.1节已定义过外围点的定义,现给出其数学模型。

        易知存在由多个模块所确定的n个点时,若这些模块可构成三角形,则外围点的坐标(xi,yi)需至少满足如下条件之一:

 

 

 

        由此可确定出多个模块所拼接图形的外围点。仅当该图形的外围点有三个,即这三个点中有两个点满足上述条件之一,有一个点满足上述条件中的两个,且三点两两之间连通、不共线时,该图形才可能为三角形。

 

5.4.1、模型四的建立

 

        模型三已可判断出多数情况下的图形是否为三角形,但存在这样一种情况,满足模型三条件但所拼接图形不为三角形,如图八所示。此时A,B,C为外围点,两两连通且不共线上,但D点的存在使拼接图形不为三角形。

 

图八 仅根据模型三无法正确判决的情况

 

        因此在找出三个外围点后,仍需对多余的点进行考察。三角形由且仅由平面上三个点唯一确定。若平面上有其他点,则应位于该三点所组成线段上或围成图形的内部。对此,建立模型四,即线段与非外围点的关系模型。

 

5.4.1.1、非外围点在三角形边上的情况

 

        根据平面直线方程与坐标关系可知,用Ax,Ay,Bx,By,Dx,Dy分别表示点A,B,D的横纵坐标,若点D的横纵坐标同时满足如下关系时:

 

 

 

        点A,B,D三点共线,且点D在线段A,B上。点A,B,D所组成的线段可用点A,B所组成的线段表示,此时点A,B,C,D组成的图形仍为三角形。

   

5.4.1.2、非外围点在三角形内的情况

 

        由平面几何知识可得,假设点A,B,C为某一拼接图形的外围点且不共线,点D为非外围点且不在AB,BC,AC所在的直线上时,若这四点所确定的图形为三角形,则点D必在该三角形内。

        由线性代数知识可知,当点D在三角形内时,他们在坐标上的关系应满足:

 

 

        其中涉及到的向量运算符号为向量的叉乘。设二维向量,分别为(ax,ay),(bx,by),则叉乘运算结果为:

 

 

 

        仅当满足模型三的组合满足模型四两种情况的任意一种时,才判决该组合组成了三角形。通过matlab编程可计算出图中共有35个三角形,运行时间约1秒。

 

 

六、模型评价

 

        模型一为上课时老师介绍的方法,根据组成最终三角形的小模块个数对其进行分类讨论。此方法需要遍历每一种组合情况,需进行大量通过图论模型可以跳过的判断,耗时较多,且因不便用计算机求解,无法避免人工数数难免会出现的误差可能。

        模型二利用图论知识,决定了遍历过程中哪些模块组合情况需要进入判断是否为三角形的阶段。相比模型一最大的优点是可通过计算机编程实现,代替人工。程序实现时,每轮通过建立一个表存储上一轮判决情况,算法复杂度控制在O(a*n^2)。因该邻接图矩阵为一个无向图,算法复杂度将减小一半。又因为其为稀疏矩阵,故a实际为一个远小于1的系数。在n没有非常大时(实际数学游戏、生活问题中n一般小于20),算法复杂度可近似为O(n)。

        模型三、模型四利用图论、线性代数等知识,使计算机可判断模块拼接图形是否为三角形。其优势仍在于可用计算机编程解决,且算法复杂度为O(n),执行高效。当n很大、分割更复杂时,利用模型一的方法,人工判决耗时多、存在误差,而计算机可通过上述模型在几秒内给出精确结果。模型的一般性、可推广性强,不会受n的大小、图形分割情况等所影响。

 

 

七、参考文献

 

 

[1]. 成继红与刘良华, 数学游戏的价值及应用. 湖北科技学院学报, 2014(07): 第118-119页.

[2]. 孙乐, 具有长度约束的路径数研究, 2012, 河北工业大学. 第 50页.

[3]. 王丽丽, 图论的历史发展研究, 2012, 山东大学. 第 60页.

[4]. 肖鉴铿, 欧拉巧解七桥问题. 初中生之友, 2003(Z3): 第65-67页.

[5]. 达瓦与加央, 种种渡河问题及其算法. 科教文汇(上旬刊),2008(08): 第269-270页.

[6]. 沈群, 关于棋盘构形中同色矩形问题的一些探讨. 太原科技大学学报,2006(03): 第210-213页.

[7]. 降毅, 用图论的方法解两道智力题. 河套大学学报, 2004(01): 第14-16页.

[8]. 吴康与刘芸, 图论与中学数学竞赛(一). 中学数学,1987(11): 第29-34页.

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值