欢迎光临散文网 会员登陆 & 注册

Scratch与数学的整合17

2023-07-21 15:25 作者:AI真有趣  | 我要投稿

                第17课        容斥原理

一、课程导入

        本节课你将会学到:如何解决容斥原理相关问题?如何让Scratch实现关于容斥原理问题的求解过程?用Scratch编写容斥原理的万能方法是怎样的?

二、知识储备

        1、容斥原理又叫重叠问题,是研究集合元素个数的一个定理。2个对象的容斥原理:元素的个数=集合A中的元素个数+集合B中的元素个数-集合A、B都包含的元素个数(元素的个数=A+B-A∩B);3个对象的容斥原理:元素的个数=集合A中的元素个数+集合B中的元素个数+集合C中的元素个数-集合A、B都包含的元素个数-集合A、C都包含的元素个数-集合B、C都包含的元素个数-集合A、B、C都包含的元素个数(元素的个数=A+B+C-A∩B-A∩C-B∩C+A∩B∩C)。

        2、要区分开“最多”“至少”“有几个”这类的词。“最多”是所有对象的总和,“至少”是“总数”减去“最多”,其余情况都是“有几个”。

三、例题讲解

        1、已知一家小卖部某天单独卖出去15支铅笔,又单独卖出去10支钢笔,其中有2次是笔同时卖出。问:(1)如果小卖部每次卖笔都是1支1支卖出(除了有2次是两种笔同时卖出),那么小卖部这天卖出去多少次笔?(2)如果小卖部没有新进的笔,且该天最初只有30支笔,那么到小卖部当天下班后,小卖部里还剩下多少支笔?

        我们先来看第(1)小问。通过读题我们发现,这题是已知小卖部一天内卖出若干支铅笔和钢笔的数量,包括单独卖出去铅笔、钢笔、铅笔同是卖出的数量,求笔卖出的次数。那么铅笔、钢笔卖出的支数就是我们要研究的对象。“支”和“次”不是同类词,这可怎么办呢?再仔细读一下题目,题目中提到了“两种笔同时卖出”,那显然这两种笔就是铅笔和钢笔。我们把图画出来(如图1所示),左边的15是铅笔的支

两集合的Veen图


                                    图1

数,右边的10是钢笔的支数,两个圆圈相交处的2表示铅笔和钢笔同时卖出的次数。问法是“每次每支笔都是1支1支卖出。”那么这样该问题就转化成了实际卖出去多少次的问题,如果把每次卖出去1支笔看成集合中的1个元素。那么套用公式A+B-A∩B即可求出问题:15+10-2=23(次)。答:小卖部这天卖出去23次笔。


        我们再来看第(2)小问。通过读题我们发现,这里给出了新的条件:没有新进的笔、最初只有30支笔,其他地方均没有改变。而此时我们知道了卖出去的部分,那没卖出去就是我们要求剩下的。为了方便,我们此时可以把23次照抄下来。不妨我们再画一下图,把30支笔

求补集的Veen图


                                    图2

看成一个全集,A∪B为卖出去的笔的次数,那么用全集“减去”并集得”剩下”的补集,就是我们要求的:30-(15+10-2)=3(支)。答:到小卖部刚下班后,此时还剩3支笔。

        2、在1——80中,既不是6的倍数又不是5的倍数的自然数有多少个?

        这道题看起来非常简单,但如果按传统的方法求,不但计算量大,而且还容易出错。那么我们不妨找规律:任何一个数,只要能被6整除,它就是6的倍数,5同理。那我们就分别求出1——80中有多少个能被6、5整除的自然数:80÷6=13……2,80÷5=16,这就说明在1——80中有13个能被6整除和16个能被5整除的自然数。但是有倍数就有最小公倍数,∴我们还要求出 1——80中有多少个数既能被6整除又能被5整除,也就是6和5的最小公倍数30::80÷30=2……30,这就意味着有2个数我此前重复算了1次,需要从中减去,13+16-2=27,这样的出来的是1——80中能被5或能被6整除的自然数有多少个,最后用80减去他就是最终的答案。

        3、有14个人吃苹果,18人吃香蕉,15人吃桃子,1人不吃苹果,3人不吃香蕉,2人不吃桃子,4人三种水果都吃。问:一共有几人喜欢吃苹果或香蕉或桃子?

        这道题还是容斥原理,只不过对象数量从2个增加到了3个。第一个要解决的问题就是原题中说的“不吃”是什么?从开头我们能看出研究的对象有苹果、香蕉、桃子,那么根据“不”的这种否定进行排除可知,不吃苹果就是香蕉和桃子。另外题目又太长了,∴我们把图画出来(如图3所示)。由此我们可以很直观地套用公

三集合的Veen图

                                 图3

式求出结果:14+18+15-1-3-2+4=45(人)答:一共有45人喜欢吃苹果或香蕉或桃子。

       4、已知某班有50名学生,其中45名学生喜欢唱歌,49名学生喜欢乐器,41名学生喜欢跳舞,43名学生喜欢画画。问:至少有所少人4种艺术都喜欢?

        这是一道经典的逆向思维题。题目给出了学生的数量和每种艺术所喜欢的对应人数,却要问至少有多少人4种艺术都喜欢。前面我们知道了“至少”是用总数减去“最多”,“最多”是所有对象的总和。因此知道最少就必须知道最多。如果我直接50-(45+49+41+43)的话会发现结果为负数,从而使这道题无从下手。∴我们应该正难则反考虑,先求出有多少人不喜欢唱歌、乐器、跳舞、画画。不喜欢唱歌的:50-45=5(名),不喜欢乐器的:50-49=1(名),不喜欢跳舞的:50-41=9(名),不喜欢画画的:50-43=7(名 )。这时便能得到4种艺术都不喜欢的总人数:5+1+9+7=22(人),即最多有22名学生4种艺术都不喜欢。那除去不喜欢的肯定就是喜欢的。用全班人数减去4种艺术都不喜欢的人数,就是我们要的到的答案:50-22=28(名)答:至少有28名学生4种艺术都喜欢。我们也可以用流程图求解(如图7)。

四、流程图

两集合流程图

                                    图4

        1、我们先来看图(4)。求两个对象的容斥原理:第一步程序开始,建立两个集合变量:集合A、集合B、集合A∩B,第二步对集合A∩B询问并回答,第三步套入公式A+B-A∩B并判断其结果是否大于0,若大于0则执行第四步,求集合元素的个数。最后程序结束。

求补集的流程图

                                     图5

        2、我们再看图(5)。要求两个集合的补集,第一步除了建立变量A、B、A∩B,还要建立全集U、补集Cu(A∩B),第二步询问并回答A、B、A∩B,第三步同理于图(4),若判断为真则第四步判断A∩B的补集,若补集大于0为真则执行最后一步:求A,B都不包含的元素个数,最后程序结束。

 

三集合流程图

                                     图6 

         3 、最后看图(6),这是一个求三个对象的容斥原理的流程图,该流程图同理于图(4),这里我不多介绍了,留给大家思考。

例4的流程图

                                     图7

五、变量信息

        求两个对象容斥原理用到的:铅笔单支卖出的销量,钢笔单支卖出的销量,铅笔、钢笔同时卖出的次数,笔的数量,最后笔剩的支数

求两个对象的容斥原理用到的变量

        求三个对象的容斥原理用到的:不喜欢吃香蕉的人数、不喜欢吃苹果的人数、不喜欢吃桃子的人数、三种水果都喜欢吃的人数、喜欢吃桃子的人数、喜欢吃苹果的人数、喜欢吃香蕉的人数、总人数

求三个对象的容斥原理用到的变量

        求“至少”问题用到的:四种艺术都喜欢的最少人数、不喜欢乐器的人数、不喜欢唱歌的人数、不喜欢画画的人数、不喜欢跳舞的人数、喜欢跳舞的人数、喜欢画画的人数、喜欢乐器的人数、四种艺术都不喜欢的最多人数、喜欢唱歌的人数

求“至少”问题要用到的变量


六、代码示例


        1、先看两个对象的容斥原理:拿例1作为我们的编写对象。先确定原题的已知数据,再利用公式进行变量运算,最后说答语。代码如下:

绿旗被点击

询问小卖部单独卖出多少支铅笔?

将铅笔单支卖出的销量设为回答

询问小卖部单独卖出去多少支钢笔?

将钢笔单支卖出的销量设为回答

询问铅笔、钢笔同时卖出多少次?

将铅笔、钢笔同时卖出的次数设为回答

询问小卖部里总共有多少支笔?

将笔的总数量设为回答

        我们把“笔的总数量”看成一个全集,那补集则是两种笔的总销量,根据CuA=U-(A+B-A∩B)可知,最后笔的支数应为正数。

如果笔的总数量-钢笔卖出的销量+铅笔单支卖出的销量-铅笔、钢笔同时卖出的次数0那么

将最后笔剩的支数设为笔的总数量-钢笔卖出的销量+铅笔单支卖出的销量-铅笔、钢笔同时卖出的次数

说:“连接连接最后小卖部还剩最后笔剩的支数支笔

解决两个对象的容斥原理问题的代码

         2、再来看三个对象的容斥原理,拿例3作为我们的编写对象.还是先确定原题的已知数据,再利用公式进行变量运算,最后说答语。代码如下:

绿旗被点击

        这里我们先不考虑输入的“合法性”,即是否为正整数,但凭借生活常识显然可知,测试编程的时候还是要输入正整数,包括结果。

询问有多少人喜欢吃苹果

将喜欢吃苹果的人数设为回答

询问有多少人喜欢吃香蕉

将喜欢吃香蕉的人数设为回答

询问有多少人喜欢吃桃子

将喜欢吃桃子的人数设为回答

询问有多少人不喜欢吃苹果

将不喜欢吃苹果的人数设为回答

询问有多少人不喜欢吃香蕉

将不喜欢吃香蕉的人数设为回答

询问有多少人不喜欢吃桃子

将不喜欢吃桃子的人数设为回答

询问有多少人三种水果都喜欢吃

将三种水果都喜欢吃的人数设为回答

将总人数设为喜欢吃苹果的人数+喜欢吃香蕉的人数+喜欢吃桃子的人数-不喜欢吃苹果的人数-不喜欢吃桃子的人数-不喜欢吃香蕉的人数+三种水果都喜欢吃的人数

说:“连接连接一共有总人数

解决三个对象的容斥原理问题的代码

          3、最后我们看例4的代码:

 当绿旗被点击

        先确定原题的已知数据

询问班里有多少名学生

将学生总数设为回答

询问有多少人喜欢唱歌

将喜欢唱歌的人数设为回答

询问有多少人喜欢跳舞

将喜欢跳舞的人数设为回答

询问有多少人喜欢乐器

将喜欢乐器的人数设为回答

询问有多少人不喜欢画画

将喜欢画画的人数设为回答

        再接着求4种艺术各不喜欢的人数。

将不喜欢唱歌的人数设为学生总数-不喜欢唱歌的人数

将不喜欢跳舞的人数设为学生总数-不喜欢跳舞的人数

将不喜欢乐器的人数设为学生总数-不喜欢乐器的人数

将不喜欢画画的人数设为学生总数-不喜欢画画的人数

        由于应用题中的求解数量不能为0,∴要对上面相减的结果进行判断,同时为真才继续执行,里面一层判断是四种艺术都不喜欢的最多人数。

如果不喜欢唱歌的人数0不喜欢画画的人数0不喜欢跳舞的人数0不喜欢乐器的人数0那么

将四种艺术都不喜欢的最多人数设为不喜欢唱歌的人数+不喜欢画画的人数+不喜欢乐器的人数+不喜欢跳舞的人数

如果学生总数-四种艺术都不喜欢的最多人数0那么

将四种艺术喜欢的最少人数设为学生总数-四种艺术都不喜欢的最多人数

说:“连接连接班里有四种艺术都喜欢的最少人数人四种艺术都喜欢

例4的代码的图示



Scratch与数学的整合17的评论 (共 条)

分享到微博请遵守国家法律