当前位置: 首页 > news >正文

组合数学学习笔记

计数原理

计数技巧

等效替代(映射):

构造一个映射,将每一种原问题的方案映射为新问题的一种方案,并使答案更容易计算。
例如捆绑法,插空法,隔板法等。

捆绑法: 也成整体法,即若要求若干物品相邻,可以将他们视作一个整体来计数。

插空法: 如果要求若干物品两两不相邻,可以先将其他物品放好,然后将这些物品插入空挡当中进行计数。

隔板法: 将不可区分物品分配问题、不定方程整数解问题转化为插板组合问题。

经典例题: n n n 个相同的苹果分给 k k k 个人,要求每人至少分到一个的方案数。(求解不定方程 x 1 + x 2 + . . . + x k = n x_1+x_2+...+x_k=n x1+x2+...+xk=n ∀ i ∈ [ 1 , k ] , 1 ≤ x i ≤ n \forall i \in [1, k], 1 \le x_i \le n i[1,k],1xin) 的解的个数)。
解决方案: n − 1 n-1 n1 个空隙,在这些空隙中插入 k − 1 k-1 k1 个板将苹果分为 k k k 部分,方案数为 C n − 1 k − 1 C^{k-1}_{n-1} Cn1k1

拓展问题 1: 求解不定方程 x 1 + x 2 + . . . + x k = n x_1+x_2+...+x_k=n x1+x2+...+xk=n ∀ i ∈ [ 1 , k ] , 0 ≤ x i ≤ n \forall i \in [1, k], 0 \le x_i \le n i[1,k],0xin) 的解的个数。
解决方案: 将每个 x x x 提前加一个 1 1 1,问题变成了 “求解不定方程 x 1 + x 2 + . . . + x k = n + k x_1+x_2+...+x_k=n+k x1+x2+...+xk=n+k ∀ i ∈ [ 1 , k ] , 1 ≤ x i ≤ n + k \forall i \in [1, k], 1 \le x_i \le n+k i[1,k],1xin+k) 的解的个数。”。

拓展问题 2: 求解不定方程 x 1 + x 2 + . . . + x k ≤ n x_1+x_2+...+x_k \le n x1+x2+...+xkn ∀ i ∈ [ 1 , k ] , 1 ≤ x i ≤ n \forall i \in [1, k], 1 \le x_i \le n i[1,k],1xin) 的解的个数。
解决方案: 添加一个新的板子放在最后面。问题变成了将 n n n 分成 k + 1 k+1 k+1 部分,前 k k k 份元素个数大于等于 1 1 1 的方案数。

容斥原理

摩根定理

交集的补等于补集的并,并集的补等于补集的交。

A ∩ B ‾ = A ‾ ∪ B ‾ , A ∪ B ‾ = A ‾ ∩ B ‾ \overline{A \cap B} = \overline{A} \cup \overline{B},\overline{A \cup B} = \overline{A} \cap \overline{B} AB=ABAB=AB


∣ A ∪ B ∣ = ∣ A ∣ + ∣ B ∣ − ∣ A ∩ B ∣ |A \cup B| = |A| + |B| - |A \cap B| AB=A+BAB

∣ A ∪ B ∪ C ∣ = ∣ A ∣ + ∣ B ∣ + ∣ C ∣ − ∣ A ∩ B ∣ − ∣ A ∩ C ∣ − ∣ B ∩ C ∣ + ∣ A ∩ B ∩ C ∣ |A \cup B \cup C| = |A| + |B| + |C| - |A \cap B| - |A \cap C| - |B \cap C| + |A \cap B \cap C| ABC=A+B+CABACBC+ABC

另一种形式:

∣ ⋃ i = 1 n A i ∣ = ∑ S u b s e t   ⊆   { 1 , 2 , … n }   ≠   ∅ ( − 1 ) ∣ S u b s e t ∣ + 1 × ∣ ⋂ j   ⊆   S u b s e t A j ∣ \left | \bigcup_{i=1}^nA_i \right | = \sum_{Subset \ \subseteq \ \{1, 2, \dots n\} \ \not= \ \emptyset}(-1)^{\left |Subset \right| + 1} \times \left | \bigcap_{j \ \subseteq \ Subset} A_j\right | i=1nAi =Subset  {1,2,n} = (1)Subset+1× j  SubsetAj

排列组合

排列数

n n n 个不同的物品排成一行,有多少种不同的顺序?

1 × 2 × 3 × ⋯ × n = n ! 1 \times 2 \times 3 \times \dots \times n = n! 1×2×3××n=n!

n n n 个物品中选出 k k k 个排成一行,考虑每个数的顺序,有多少种不同的选法,写作 A n k A^k_n Ank

排列数计算公式:

( n − k + 1 ) × ( n − k + 2 ) × ( n − k + 3 ) × ⋯ × n = n ! ( n − k ) ! (n-k+1) \times (n-k+2) \times (n-k+3) \times \dots \times n = \frac{n!}{(n-k)!} (nk+1)×(nk+2)×(nk+3)××n=(nk)!n!

组合数

http://www.dtcms.com/a/276027.html

相关文章:

  • Stance Classification with Target-Specific Neural Attention Networks
  • Linux解决vim中文乱码问题
  • SE机制深度解析:从原理到实现
  • tiktok 弹幕 逆向分析
  • 缺陷特征粘贴增强流程
  • 李宏毅(Deep Learning)--(三)
  • python内置函数 —— zip
  • MyBatis实现分页查询-苍穹外卖笔记
  • 在 Android 库模块(AAR)中,BuildConfig 默认不会自动生成 VERSION_CODE 和 VERSION_NAME 字段
  • docker基础与常用命令
  • 如何让AI更高效
  • 留学真相:凌晨两点被海关拦下时,我才明白人生没有退路
  • 如何用Python编程实现一个简单的Web爬虫?
  • Echarts学习方法分享:跳过新手期,光速成为图表仙人!
  • 【Lucene/Elasticsearch】 数据类型(ES 字段类型) | 底层索引结构
  • 易混淆英语单词对比解析与记忆表
  • 股票的k线
  • BKD 树(Block KD-Tree)Lucene
  • 以太坊重放攻击
  • 特辑:Ubuntu,前世今生
  • 关于学习docker中遇到的问题
  • AI领域的黄埔军校:OpenAI是新一代的PayPal Mafia,门生故吏遍天下
  • 可以用一台伺服电机控制多台丝杆升降机联动使用吗
  • 类和对象—多态
  • C语言:20250712笔记
  • SpringBoot集合Swagger2构建可视化API文档
  • P2619 [国家集训队] Tree I
  • 【Datawhale AI夏令营】Task2 笔记:MCP Server开发的重难点
  • 【LeetCode 热题 100】98. 验证二叉搜索树——(解法一)前序遍历
  • Python 三大高频标准库实战指南——json · datetime · random 深度解析