组合数学是数学的一个分支,研究有限或可数离散结构。它包括对具有某些属性的对象进行枚举或计数。计数可以帮助我们解决多种类型的问题,例如计算可用 IPv4 或 IPv6 地址的数量。
计数原则——
有两个基本的计数原则,总和规则和乘积规则。
总和规则 –如果一项任务可以在其中之一完成方式或其中之一方式,其中没有一组方法与任何一组相同方法,那么有完成任务的方法。
产品规则——如果一项任务可以分解为一系列子任务,其中每个子任务都可以在分别,那么任务可以执行的方式总数是 .
- 示例 1 –在 12 名玩家玩的游戏中,前 3 名玩家可以通过多少种方式获得 3 份获胜奖品?
- 解决方案 –我们必须在 12 名玩家中分配 3 份奖品。此任务可分为 3 个子任务,为某个玩家分配一个奖品。
可以通过 12 种不同的方式颁发一等奖。颁发一等奖后,还剩下两个奖品,还剩下 11 名玩家。同样,二等奖和三等奖可以有11种方式和10种方式。乘积规则的总路数为 12 * 11 * 10 = 1320。 - 示例 2 –一个人可以通过多少种方式从三个大小分别为 10、15 和 19 的项目列表中选择一个项目?
- 解决方案 –此人可以选择从三个列表中的任何一个中选择一个项目。因此该人可以从 10 个项目或 15 个项目或 19 个项目中进行选择。由于从一个列表中选择与选择另一个列表不同,因此根据求和规则选择项目的方式总数为 10 + 15 + 19 = 44。
- 示例 3 –给定格式中可能有多少不同的车牌–两个大写字母,然后是两个数字,然后是一个连字符,最后是四个数字。样品-AB12-3456。
- 解决方案 –两个字母中的每一个都有 26 种可能性,每个数字都有 10 种可能性。因此,可能性的总数是 – 26 * 26 * 10 * 10 * 10 * 10 * 10 * 10 = 676000000。
- 示例 4 –如果变量名称是字母数字且区分大小写且第一个字符必须是字母表,那么存在多少个长度不超过 3 的变量名称?
- 解决方案——让表示长度为 1、2 和 3 的可能变量名称的数量。因此,变量名称的总数为 .
为了由于第一个字符必须是字母表,因此只有 52 种可能性。
为了 , 有 52 * 62 = 3224 种可能性
为了 , 有 52 * 62 * 62 = 199888 种可能性
因此,变量名总数 = 52 + 3224 + 199888 = 203164
包含-排除原则:
上面提到的求和规则指出,如果有多种方式来完成一项任务,那么两组方式之间不应该有任何共同的方式,因为如果有,它将被计算两次并且枚举将是错误的。
包含-排除原则说,为了只计算完成任务的独特方式,我们必须将以一种方式完成的方式的数量和以另一种方式完成的方式的数量相加,然后减去方式的数量完成两组方法共有的任务。
包含-排除原理也称为减法原理。对于两组方式和 ,枚举会喜欢-
- 示例 1 –有多少个长度为 8 的二进制字符串以“1”位开头或以两位“00”结尾?
- 解决方案——如果字符串以1开头,则剩余7个字符可以填写方法。
如果字符串以’00’结尾,则可以填写6个字符方法。
现在如果我们把上面几组方法加起来,得出的结论是最后的答案,那就错了。这是因为存在以 ‘1’ 开头和以 ’00’ 结尾的字符串,并且由于它们满足这两个条件,所以它们被计数两次。
所以我们需要减去这些字符串以获得正确的计数。
以“1”开头并以“00”结尾的字符串有五个可以填充的字符方法。
所以根据包含-排除原则,我们得到-
字符串总数 = 128 + 64 – 32 = 160 - 示例 2 – 1 到 1000 之间(包括两者)有多少个数字可以被 3 或 4 整除?
- 解决方案 –可被 3 整除的数字数 = = .
可被 4 整除的数字数 = = .
可被 3 和 4 整除的数字数 = = .
因此,可被 3 或 4 整除的数字数 = = 333 + 250 – 83 = 500
GATE CS 角问题
练习以下问题将帮助您测试您的知识。所有问题都在前几年的 GATE 或 GATE 模拟测试中提出。强烈建议您练习它们。
1. GATE CS 2007,问题 3
2. GATE CS 2004,问题 26
查找下一篇文章@Pigeonhole Principle
参考-
组合数学 – 维基百科
离散数学及其应用,Kenneth H Rosen