排列
排列规则:一个排列是n个不同对象的有序排列, 这n个对象有 种排列方式 |
例子1
问题A:iPhone有4位开机密码,如果我们知道屏幕上4个数字对应的有斑点(经常按这4个数字键导致的),那么可能有多少种不同的密码?
答案:由于密码的顺序很重要,同时从屏幕上看出有四个斑点,因此是这4个数字的不同排列组成密码,所以共有种可能。
问题B:若知道了屏幕上3个数字对应有斑点,有多少种可能的密码组合?
答案:由于只有3个数字,那么其中肯定有一个数字是重复的,但是不知道是哪个。解决该问题有3中情况(每一种情况有相同的排序)。
假设A, B, C表示3个数字。假设重复的数字是A,则此时用A1 A2 B C来表示,此时有4!种排序,由于A1和A2相同都是A,因此需要区别重复排序的,这样,就有:4!/(2! 1! 1!)种排列,
以此类推,重复B和C时,也有这么多种可能的排列
所以,共有 中可能的排列
问题C:若屏幕上有2个数字对应的斑点,有多少中可能的密码组合?
答案:有两种可能:一种是每个数字各用2次,还有一种可能是一个数字使用1次,另一个数字使用3次。
这种,最终共用:种排列
例子2
二叉搜索树(binary search tree, BST)
从二叉搜索树的定义可知,树中的每个节点n需要满足如下三个属性。
1)节点n的值大于左子树上的所有节点的值
2)节点n的值小于右子树上的所有节点的值
3)节点n的左子树和右子树也是二叉搜索树
问题:对于值为1,2,3的节点可以构建多少种退化结构(所谓退化结构,即是BST中各个节点最多只有一个子节点)的BST。
答案:对于1,2,3, 有3!种方式构建BST。如下图
从上图中可知看出,有4个退化结构的BST(前两个和后两个)
模糊对象排列
模糊对象排列:通常,当有n个对象,其中 个对象是相同的(模糊的) 另外个对象是相同的 ... 个对象是相同的,这样,共有种排列方式 |
例子3
问题:三个0和二个1可以排列成多少个不同的bit流?
答案:
组合
组合规则:组合是从n个对象中选出r个无序的对象,若所有的对象都是不同的,则有 种组合方式 这种方式常表述为“n中选择r” |
问题B:若从6本书中选择的3本书种,有两本书不能同时被选择(例如,不能同时选择同一本书的第8版和第9版)
答案:该问题容易解决,分情况进行处理
情况1:选择第8版的书,则选择其他两本非第9版的书即可,即从4中选择2
情况2:选择第9版的书,则选择其他两本非第8版的书即可,即从4中选择2
情况3:从既不是第8版,也不是第9版的书中选择3本书,则即从4中选择3
这样,共有:
种方式
还有另外一种求解方式:
先计算6中选择3的情况,然后减去不允许的选择情况,对于该例子,第8版和第9版的书不能同时选择,
则不允许的选择情况是:选择第8版和第9版的书,同时选择另外一本,即从4中选择1.
所以: 所有可能情况 - 不允许的情况 = 20 - 4 = 16
两种计算方式,得到相同的答案。
参考
内容来自与:Stanford cs109课程
链接:http://web.stanford.edu/class/cs109//pdfs/05%20Combinatorics.pdf