当前位置:文档之家› 图论与组合数学期末复习题含答案

图论与组合数学期末复习题含答案

组合数学部分第1章 排列与组合例1:1)、求小于10000的含1的正整数的个数;2、)求小于10000的含0的正整数的个数;解:1)、小于10000的不含1的正整数可看做4位数,但0000除外.故有9×9×9×9-1=6560个.含1的有:9999-6560=3439个2)、“含0”和“含1”不可直接套用。

0019含1但不含0。

在组合的习题中有许多类似的隐含的规定,要特别留神。

不含0的1位数有19个,2位数有29个,3位数有39个,4位数有49个 不含0小于10000的正整数有()()73801919999954321=--=+++个含0小于10000的正整数9999-7380=2619个。

例2:从[1,300]中取3个不同的数,使这3个数的和能被3整除,有多少种方案?解:将[1,300]分成3类:A={i|i ≡1(mod 3)}={1,4,7,…,298},B={i|i ≡2(mod 3)}={2,5,8,…,299},C={i|i ≡0(mod 3)}={3,6,9,…,300}.要满足条件,有四种解法:1)、3个数同属于A;2)、3个数同属于B ;3)、3个数同属于C;4)、A,B,C 各取一数;故共有3C(100,3)+1003=485100+1000000=1485100。

例3:(Cayley 定理:过n 个有标志顶点的数的数目等于2-n n )1)、写出右图所对应的序列;2)、写出序列22314所对应的序列;解:1)、按照叶子节点从小到大的顺序依次去掉节点(包含与此叶子节点相连接的线),而与这个去掉的叶子节点相邻的另外一个点值则记入序列。

如上图所示,先去掉最小的叶子节点②,与其相邻的点为⑤,然后去掉叶子节点③,与其相邻的点为①,直到只剩下两个节点相邻为止,则最终序列为51155.。

2)、首先依据给定序列写出(序列长度+2)个递增序列,即1234567,再将给出序列按从小到大顺序依次排列并插入递增序列得到:7。

我们再将给出序列22314写在第一行,插入后的递增序列写在第二行。

如下图第一行所示:−−→−⎪⎪⎭⎫ ⎝⎛--②⑤67112223344522314−−→−⎪⎪⎭⎫ ⎝⎛--②⑥11223344672314 −−→−⎪⎪⎭⎫ ⎝⎛--③②11233447314−−→−⎪⎪⎭⎫ ⎝⎛--①③11344714−−→−⎪⎪⎭⎫⎝⎛--④①14474⎪⎪⎭⎫⎝⎛47。

我们每次去掉第一行第一个数,并在第二行寻找第一个无重复的元素5并将它取出,将⑤与②连接起来,并在第二行去掉第一行的第一个元素②,剩下的序列为1122334467,依次执行下去。

最终剩下的两个元素(47)连在一起。

则形成了以下的树。

例4:(圆排列问题:从n个字符中取r个不同的字符构成圆排列的个数为()()nrrrnP≤≤,。

)5对夫妇出席一宴会,围一圆桌坐下有多少种方案?要求每对夫妇相邻而坐,方案有多少种?解:1)、此问便是考查圆排列的公式定义,由()()()nrrrnPrnQ≤≤=0,,可得,排列方式有()()!910!101010,1010,10===PQ种。

2)、同样,先将5个丈夫进行圆排列则有245!5=种,再将5个妻子插到丈夫的空隙之中,每个妻子只有两种选择,要么在丈夫的左边,要么在右边。

因此由52种插入的方法,所以一共有52!4⨯种。

有错误!例5:(允许重复的排列)已知重集{}dcbaS3,4,5,6=,做重集S的全排列,问有多少中排列方案?解:设可重复{}kkanananS⋅⋅⋅=,,,2211,其中,kaaa,,,21为S中k个不同元素,则S的个数为knnnn+++=21,S的全排列为:!!!!21knnnn则据题意可得:方案数为!3!4!5!6!18⋅⋅⋅。

列6:(允许重复的组合)试问()4zyx++有多少项?解:由于()()zyxzyx++=++4()zyx++()zyx++()zyx++,相当于从右边每个括号里取一个元素相乘,而元素可以对应相同(如4个括号我都取x )或者不同。

这就相当于将4个无区别的球放进3个有区别的盒子,由于在n 个不同元素中取r 个进行组合,允许重复,则组合数为()r r n C ,1-+。

(或者说r 个无区别的球放进n 个有区别的盒子里,每个盒子球数不限,则共有()r r n C ,1-+种)。

问题等价于从3个元素中取4个做允许重复的组合,15230!2!4!6464134===⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛-+项。

例6:(线性方程的整数解个数问题)已知线性方程b x x x n =+++ 21,n 和b 都是整数,1≥n ,求此方程非负整数解的个数?解:方程的非负整数解{}n ξξξ,,,21 对应一个将b 个无区别的球放进n 个有区别的盒子()n x x x ,,,21 的情况,允许一盒多球,故原式可以等价转化为将将1到n 的正整数取b 个作为允许重复的组合,其组合数为⎪⎪⎭⎫⎝⎛-+b b n 1个。

例7:(不相邻的组合) 从{}7,6,5,4,3,2,1=A 中取三个元素做不相邻的组合,有多少种方式? 解:由于从{}n A ,,2,1 =中,取r 个作不相邻的组合,其组合数为()r r n c ,1+-,因此在此题中3,7==r n ,组合数种类有1012120!2!3!5353137===⎪⎪⎭⎫ ⎝⎛=⎪⎪⎭⎫ ⎝⎛+-种。

例8:(全排列的三种生成算法)(1)、已知4000=m ,!74000!6<<,求m 对应的序列。

(2)、利用字典序法求求839746521的下一个排列。

解:(1)、由于0到1!-n 中的任何整数m 都可以唯一表示为()()!1!2!2!11221⋅+⋅++-+-=--a a n a n a m n n 其中i a i ≤≤0,11-≤≤n i ,可以证明从0到1!-n 的!n 个整数与()1221,,,,a a a a n n --一一对应,我们要得到这些值就得每次除以与其相对应的数值,就可以得到与i a 相对应的余数值i r 。

因为!74000!6<<,所以:,!2!3!4!5!640001234561a a a a a a n +⋅+⋅+⋅+⋅+⋅==,0,2!32!42!52!62000240002112345612r a a a a a a n n ==+⋅+⋅+⋅+⋅==⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢=,2,!3!4!3!5!3!666632000322345623r a a a a a n n ==+⋅+⋅+⋅==⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢= ,2,!4!5!4!6166466643345634r a a a a n n ==+⋅+⋅==⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢= ,1,!5!63351665445645r a a a n n ==+⋅==⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢= ,3,5633655656r a a n n ====⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢= ,5,06566667r a n n ===⎥⎦⎥⎢⎣⎢=⎥⎦⎥⎢⎣⎢=所以:!22!32!41!53!654000⋅+⋅+⋅+⋅+⋅=。

把n-1个元素的序列()1221,,,,a a a a n n --和n 个元素的排列建立一一对应关系,从而得到一种生成排列的算法——序数法。

将()1221,,,,a a a a n n --与给出序列相对应,例如给出4213,那么对应()123,,a a a ,由大到小的计算当前数值位置右边比此位置数值大的数值的个数,例如最大的数为4,4这个数右边有3个数比它小,所以33=a ,同理,第二个大的数为3,在3这个数右边有0个比它小的数,所以02=a ,同理对应2这个数右边有一个数比他小,所以11=a 。

综上所述,对应序列为()301。

同时,由()301也可以推出最大数4的右边有3个比它小的数,为:第二个大的数3右边比他小的数的个数为0,因此,为: 第三个大的数2右边比他小的数有1个,而1的位置也可以确定了因此为 (2)、字典序法首先从序列()n p p p ,,,21 后向前找出第一组i i p p <-1,记下此式1-i p 的值,然后有从后向前找第一个比1-i p 的值大的数k p ,并将1-i p 和k p 调换位置,然后再将原来1-i p (现在k p )位置以后的全部序列倒序即可以了。

如题中所示的序列839746521中,首先找出从右向左第一组i i p p <-1的1-i p ,此处为4,然后找到k p 为5,将它们两调换得到839756421,然后将5后面的数逆序得到839751246。

例9:(格路模型)一场电影的票价是50元,排队买票的顾客中有n 位是持有50元的钞票,m 位是持有100元的钞票。

售票处没有准备50元的零钱。

试问有多少种排队的方法方法使得购票能顺利进行,不出现超不出零钱的状况。

假设每位顾客只限买一票,而且m n ≥。

解:在格路模型中,从()()n m ,0,0→的路径选择有()()m n m c m n m n m n m ,!!!+=⎪⎪⎭⎫ ⎝⎛+=+种。

因为这个问题可以看成是由m 个向右和n 个向上组成,就是一个可重复的全排列问题。

当然,将这一模型推广以后就可以应用于此题了,我们将问题简化就可以得到卖票者从没有钱到把所有票都卖完,在这个期间他必须实现每次卖票成功(即有足够的零钱找给顾客)。

在格路模型中,我们把x 轴看成是m 个100元,y 轴看成是n个50元,最重要实现将这m 个100元和n 个50元收入囊中,而且要满足不出现找不出50元钞票的情况。

问题等价于从()0,0到()n m ,的路径中,找出y>x 且不穿越(但可以接触)y=x 线上点的路径。

然而不允许接触的情况是从()1,0点出发到()n m ,的所有路径减去从()1,0点出发经过y=x 的路径,如右图所示,由对称性以及m n ≥可以知道,从()1,0出发经过y=x 的路径等于由()0,1出发到达()n m ,的路径,因为由()0,1出发到达()n m ,必须经过y=x 。

所以,原问题可以转化为:路径数=()()1,1,1--+--+m n m c m n m c =()()()()!!1!1!1!!1n m n m n m n m --+---+=()()()⎪⎭⎫ ⎝⎛----+n m n m n m 11!1!1!1=()()()⎪⎭⎫ ⎝⎛----+n m n m n m 11!1!1!1。

然而,此处是可以接触y=x 的,因此我们可以将纵坐标向下移动一个单位如右图所示:即可以接触y=x 但是不可以穿过y=x-1。

相关主题