组合数学(1)

    为什么会这么说呢?因为这几天碰到一个算法,叫MCMC,这是一个相当复杂的东西,本以为我能够理解它,但是看了一天却发现自己不会的数学名词太多了,最终就败下阵来,投降了。因为最近被组合数学也搞的焦头烂额了,高中的时候关于排列组合就不是很敏感,感觉这更像是智力题,像我这种笨脑瓜只有靠努力的记忆题目类型了。

    组合数学的最主要内容是对离散对象的技术,首先是经常用到的两个基本准则,加法法则和乘法法则。这个还是挺好理解的。

    一一对应这点很重要,比如某种计数比较困难,可以考虑将问题转换为一个与其一一对应的问题,然后进行计数。

    排列组合的模型。关于排列组合的问题除了一一对应是个难点之外,还有解题中分类的方法比较重要,如下题目:

 

        从1到300间选取3个数使它们的和正好被3除尽,试问有多少种方案。&&  求由1,3,5,7不重复出现组成的整数的和

 

    圆周排列需要考虑一个重复度的问题,需要将重复度去除。

    接下来介绍了排列的生成算法,序数法,字典序法,换位法,轮转法。

    一个比较难理解的问题,我个人比较难理解的问题就是允许重复的组合问题。原问题是n个不同的元素中取r个作允许重复的组合,其组合数位C(n+r-1,r)。这个模型对比与盒子和球的问题时就是r个无标识的球放进n个有标志的盒子中。两个问题是等价的。证明的方法将其与无重复的组合问题一一对应。

    还有一个问题是不相邻的组合问题。组合的生成比较简单,类似字典序法。组合的意义可以解释为街道问题~,这和上次笔试那个极为的相似。

    这里有一个比较经典的街道问题,很多其他问题最终可以归结为这个问题。

   

    这个街道问题的原型是从(0,0)点走到(m,n)点,其中m<n。要求所走的路径上的点的横坐标恒小于纵坐标。

    其中有两个问题的解决都依靠于这个问题的解决。比如有一个排队买电影票的问题,排队的所有人中有50的,有100的,电影票值50元。售票处无零钱,每人限购一张电影票,有多少种排队方式可以使得售票处不用欠钱。永远都有找零。

    另外一个相似问题就是n个1和n个0组成的序列,任意前k个中0个个数不小于1的个数的序列有多少种。

    上面两种问题均转换为第一个半个街道问题,并且对角线上移即可。

 

    另外一种题目就是分类的方法比较怪异,还有就是要灵活运用重复组合的公式。也及r个相同的球放入n个不同盒子这个问题的模型,其等价于n个不同的求做取r个做重复组合。

    其中一个问题就是结合这两种,一个比较简单的版本就是5个0和4个1,组成的序列,其中01或10出现次数总和为4的序列有多少种?复杂的版本就是m个0,n个1,然后出现01或10次数总和为k次的序列有多少种?这个题目就需要讨论了。

    还有一些就是划分的技巧了,比如1-1000000中,0出现的次数。这里就分为个位出现的次数,十位出现的次数...讨论了。

    另外一个需要讨论的就是n个不同的数字,取出2组,其中一组的最小数比另外一组最大数大的取出方法有多少种,这里也需要分类讨论。

    

    组合数学感觉一个比较费脑力,需要思考的一门学科,跟计算机贴的也比较紧密。

    

posted @ 2013-03-08 17:54  weixliu  阅读(746)  评论(0编辑  收藏  举报