“从组合问题建立递推时,最值得核对的是分解是否穷尽、各类是否互斥、删除操作是否可逆。前两项保证可以使用加法原理,最后一项保证较小对象数真的等于该类对象数。”
形式陈述
用于计数任务时,还要说明这些类别覆盖全部合法结果:每个结果属于其中恰好一类。互斥保证不重数,覆盖保证不漏数;只有前者而没有后者,算出的只是部分结果数。某一类为空时贡献零;没有任何类别时,并集为空,相应空和也是零。
直觉
把一批对象装进若干互不重叠的盒子,盒子不必一样大。若第
这里的“或”指选择一个属于并集的对象,不是先选类别再选对象。如果把类别标签也保留在结果中,同一对象带不同标签就成了不同结果;这时数的是带标签的不交并,已经换了计数对象。
分类标准必须描述最终结果,而不能只是描述“找到结果的方式”。同一本书可能同时出现在作者检索与题名检索中;两种检索方式不同,并不使结果集互斥。计数树中一个节点下面的分支,只有在它们代表不同结果类时才可直接相加。
例子与边界
一个字符只能是大写英文字母或十进制数字时,两类互斥,总数为
“红牌或 A”则不能直接算
分类还可把一个问题分解为更小的同类问题。用长度为
初值
推论与应用
乘法原理可视为等大分支的反复相加;大小不等的分支则保留求和。两者配合,决定计数树每一层究竟相加还是相乘。
按首块、末位或某个唯一参数划分类别,常能导出递推关系。若每个对象带权,逐类求和也可计算总权重;全概率公式沿用互斥覆盖的分解,再用条件概率求每块的概率质量。
参考资料
- Oscar Levin, Discrete Mathematics: An Open Introduction, 3rd ed., 2019,§1.1 Additive and Multiplicative Principles,互斥计数与重叠边界。
- Mitchel T. Keller and William T. Trotter, Applied Combinatorics, 在线版,访问于 2026,§2.1 Strings: A First Look,Example 2.3 中按字符类别相加、再按位置相乘。