首页 > 其他分享 >基础排列组合学习笔记

基础排列组合学习笔记

时间:2023-06-18 12:44:15浏览次数:36  
标签:选出 物体 笔记 times 学习 cdots 物品 排列组合 binom

排列组合是数学中一项非常重要、基础的内容,可以解决许多与计数有关的问题。

让我们先从最基本的数数学起。

前置知识

加法原理

假设你现在有 \(a_0\) 个物品,所有物品互不相同。你要从中拿一个物品出来,拿出的物品可能有几种?

显然是 \(a_0\) 种,因为每一个物品互不相同,每一个物品都可能被拿到。

假设再放进来 \(a_1\) 种物品,所有的物品仍然互不相同。继续从这些物品中拿一个出来,现在又有几种可能被拿出的物品?

显然是 \(a_0+a_1\) 种,因为所有物品互不相同。

同理,之后又放进来了 \(a_2,a_3,a_4\cdots\) 个物品,则以上问题的答案为 \(a_0+a_1+a_2+\cdots +a_n\)。

这是加法原理,即多种事件并列,情况数量相加。

乘法原理

你一开始仍然有不同 \(a_0\) 个物品,此时仍然有 \(a_0\) 种不同的物体可能被被选中。

又有 \(a_1\) 个不同物品,所有物体均不一样。求从 \(a_0\) 个物体中选出一个物体并同时从 \(a_1\) 个物体中选出一个物体,被选中的两个物体有多少种不同的可能?

先钦定 \(a_0\) 个物体中已经选好了一个,这时 \(a_1\) 个物体都有可能被选到,情况数是 \(a_1\) 种。再因为 \(a_0\) 个物体每一个都不一样,所以答案是 \(a_0\times a_1\)。

同理,有 \(n+1\) 堆物品,所有物品互不相同且 \(n+1\) 堆物品分别有 \(a_0,a_1,\cdots,a_n\)。则每堆物品中各拿一个,能选出的方案不同数有 \(a_0\times a_1\times \cdots\times a_n\)。

这是乘法原理,多种事件按顺序发生,情况数量相乘。

基础概念

排列数

从 \(n\) 个不同的物体中选出 \(m\) 个物体,考虑顺序(即a,b与b,a不为一种方案),有多少种方案?

选第一个物体时有 \(m\) 种选择;选第二个物体时,由于已经被选走了一个物体,所以还剩 \(m-1\) 种选择;选择第 \(i\) 个物体时,已经被选走了 \(i-1\) 个物体,还剩下 \(m-(i-1)\) 种选择。

根据乘法原理,先选第一个物体,再选第二个物体,...。所以答案为 \(n\times (n-1)\times (n-2)\times\cdots\times (n-m+1)\)。

这个问题的答案被称为 \(A^m_n\),也就是排列数。即 \(A^m_n\) 的含义为从 \(n\) 个物体中选出 \(m\) 个物体,考虑顺序(物体互不相同) 的方案数。

一类特殊的排列数是 \(A^n_n\) ,即全排列, \(A^n_n=n\times (n-1)\times\cdots\times 1\),也就是 \(n!\)。可以理解为序列 \(1,2,3,\cdots,n\) 有多少种不同的排列方式。\(A_m^n\) 可以通过阶乘表示,即 \(A_n^m=\frac{n!}{(n-m)!}\) 。

组合数

从 \(n\) 个不同的物体中选出 \(m\) 个物体,不考虑顺序(即a,b与b,a为一种方案),有多少种方案?

这个问题与上面的问题很像,只是选出来之后不考虑内部顺序。考虑从上面那个问题转移过来,因为一个有 \(m\) 个物品的选择方案,考虑顺序有 \(m!\) 种排列方法(即上面的全排列),而这 \(k!\) 种顺序都会被考虑一次,但我们只要 \(1\) 次,所以将先前的方案数 \(\div m!\),也就是 \(\frac{A^m_n} {m!}\)。我们把这个数定义为 \(C^m_n\),或 \(\binom{n}{m}\),一般使用 \(\binom{n}{m}\) 来表示组合数,\(\binom{n}{m}=\frac{A^m_n} {m!}=\frac{n!}{m!(n-m)!}\)。

组合数也可以用另一种方法来表示:\(\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1}\)。

标签:选出,物体,笔记,times,学习,cdots,物品,排列组合,binom
From: https://www.cnblogs.com/lyz09-blog/p/study-combinatorics.html

相关文章

  • 前端学习C语言 - 数组和字节序
    数组本篇主要介绍:一维二维数组、字符数组、数组名和初始化注意点以及字节序。一维数组初始化有以下几种方式对数组初始化://定义一个有5个元素的数组,未初始化inta[5];//定义一个有5个元素的数组,将第一个初始化0,后面几个元素默认初始化为0inta[5]={0};//定义一个有5个元......
  • [刷题笔记] CF1059B Forgery
    ProblemSolution搜索染色类。我们发现染色是不可逆的,也就是染成了#后不得染回“.”,所以对于每次染色我们都要尽可能向std上靠拢。我们可以观察一下std,发现需要尽可能从std上的“.”向四周染色(因为3*3染色中间的"."不染)。每次染色前需要判断染完这一部分是否和std一致,如果一......
  • 【C】专家编程 (Expert C Programming) 阅读笔记
      第一章C:穿越时空的迷雾  1p22~24 ANSIC有此问题。“安静”的类型转换原则:当执行算术运算时,操作数的类型如果不同,就会发生转换。数据类型一般朝着浮点精度更高,长度更长的方向转换,整形术如果转换为singed不会丢失信息,就转换为signed,否则转换为unsign......
  • 融合模型stacking14条经验总结和5个成功案例(互联网最全,硬核收藏)_机器学习_人工智能_
    来自Toby老师,《融合模型stacking14条经验总结和5个成功案例》我也看了很多关于融合模型stacking文章,很多作者倾向于赞美融合模型stacking,对其缺点轻描淡写,这容易误导初学者。一叶障目就是这意思。我的很多学员喜欢用融合模型作为论文或专利创新点,这是一个热门技术。最近有个同学在......
  • 深度学习-算法的创世纪【人工智能】
    深度学习通过训练深层神经网络模型,可以自动学习和提取数据的特征,包括更准确的图像识别、自然语言处理、医学诊断等方面的应用。序言深度学习是一种机器学习方法,其目标是通过模拟人脑神经网络的结构和功能,让机器能够从大量的数据中自动学习和提取特征,从而实现智能化的数据处理和决......
  • 现代C++学习指南-方向篇
    C++是一门有着四十年历史的语言,先后经历过四次版本大升级(诞生、98、11、17(20),14算小升级)。每次升级都是很多问题和解决方案的取舍。了解这些历史,能更好地帮助我们理清语言的发展脉络。所以接下来我将借它的发展历程,谈一谈我对它的理解,最后给出我认为比较合理的学习路线指南。C++0......
  • ES学习笔记--文档操作
    添加文档新增文档的DSL语法如下:POST/索引库名/_doc/文档id{"字段一":"value1","字段二":"value2","字段三":{"子属性1":"value3","子属性2":"value4"}}示例:#插入文档......
  • 人工智能、AI、深度学习框架
    深度学习的框架TensorFlowPytorchPaddlePaddle深度学习模型CNNLSTMAttention机制Seq2Seq损失函数优化方法特征表示 TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplif......
  • babylon.js 学习笔记(10)
    今天来学习下车床(lathe)建型及粒子系统,babylon.js有一个很强大的函数CreateLathe,可以将一段路径经过旋转后,形成1个shape,这么说有点抽象,比如下面这张图:其中的关键点坐标为:constfountainProfile=[newBABYLON.Vector3(0,0,0),newBABYLON.Vector3(10,0,0),......
  • 3.2 鱼与熊掌可以兼得的深度学习-2022
    1.问题回顾  在上节的再谈宝可梦、数码宝贝分类问题上,我们提出了机器学习的分类原理.并提出了一个矛盾点:当可选参数过多,loss会变小,但理想和现实差距会很大;当可选参数比较少,loss会变大,但理想和现实差距会减小.现在我们需要一个Loss小,可选参数也少的模型.2.Whywene......