首页 > 其他分享 >排列与组合

排列与组合

时间:2023-04-28 18:11:27浏览次数:54  
标签:排列 frac 组合 元素 times mathrm

目录

简介

排列就是指从给定个数的元素中取出指定个数的元素进行排序。组合则是指从给定个数的元素中仅仅取出指定个数的元素,不考虑排序。

排列

乘法原理

如果完成一个工程需要分 \(n\) 个步骤,假设 \(a_i\) 代表第 \(i\) 个步骤的不同方法数目,其中,\(1 \le i \le n\),那么,完成这件事共有 \(S = a_1 \times a_2 \times \cdots \times a_n\) 种不同的方法。

排列数

假设 \(m\leq n\),且 \(m\) 与 \(n\) 均为自然数,从 \(n\) 个不同元素中,任取 \(m\) 个元素按照一定的顺序排成一列,叫做从 \(n\) 个不同元素中取出 \(m\) 个元素的一个排列

从 \(n\) 个不同元素中取出 \(m\) 个元素的所有排列的个数,叫做从 \(n\) 个不同元素中取出 \(m\) 个元素的排列数,用符号 \(\mathrm A_n^m\) 或者 \(\mathrm P_n^m\) 表示。

排列的计算公式如下:

\[\mathrm A_n^m = n(n-1)(n-2) \cdots (n-m+1) = \frac{n!}{(n - m)!} \]

其中,\(n!\) 代表 \(n\) 的阶乘,即 \(6! = 1 \times 2 \times 3 \times 4 \times 5 \times 6\)。

公式可以这样理解:

从 \(n\) 个人中选 \(m\) 个来排队,第一个位置可以选 \(n\) 个,第二位置可以选 \(n-1\) 个,以此类推,第 \(m\) 个(最后一个)可以选 \(n-m+1\) 个,得:

\[\mathrm A_n^m = n(n-1)(n-2) \cdots (n-m+1) = \frac{n!}{(n - m)!} \]

全排列

\(n\) 个人全部来排队,队伍长度为 \(n\),第一个位置可以选 \(n\) 个,第二位置可以选 \(n-1\) 个,以此类推得:

\[\mathrm A_n^n = n(n-1)(n-2) \cdots 3 \times 2 \times 1 = n! \]

全排列是排列数的一个特殊情况。

组合

加法原理

如果完成一个工程可以有 \(n\) 类办法,假设 \(a_i\) 代表第 \(i\) 类方法的数目,其中,\(1 \le i \le n\),那么,完成这件事共有 \(S=a_1+a_2+\cdots +a_n\) 种不同的方法。

组合数

假设 \(m\leq n\),且 \(m\) 与 \(n\) 均为自然数,从 \(n\) 个不同元素中,任取 \(m\) 个元素组成一个集合,叫做从 \(n\) 个不同元素中取出 \(m\) 个元素的一个组合

从 \(n\) 个不同元素中取出 \(m\) 个元素的所有组合的个数,叫做从 \(n\) 个不同元素中取出 \(m\) 个元素的组合数。用符号 \(\mathrm C_n^m\) 来表示。

组合数计算公式

\[\mathrm C_n^m = \frac{\mathrm A_n^m}{m!} = \frac{n!}{m!(n - m)!} \]

公式可以这样理解:

假设从 \(n\) 个人中选择 \(m\) 个人出来排队,那么,计算排列数 \(\mathrm A_n^m\),就可以分两步完成:

  • 首先,从 \(n\) 个人中选择 \(m\) 个人出来,选择的方法有 \(\mathrm C_n^m\) 种;

  • 对 \(m\) 个人进行全排列,排列的方法有 \(\mathrm A_m^m\) 种;

因此,根据乘法原理,可得

\[\begin{aligned} \mathrm A_n^m &= \mathrm C_n^m \times \mathrm A_m^m \end{aligned} \]

将上述等式变形,可以得到:

\[\begin{aligned} \mathrm C_n^m = \frac{\mathrm A_n^m}{\mathrm A_m^m} = \frac{\mathrm A_n^m}{m!} = \frac{n!}{m!(n-m)!} \end{aligned} \]

组合数也常用 \(\dbinom{n}{m}\) 表示,读作:\(n\) 选 \(m\),即

\[\displaystyle \mathrm C_n^m=\binom{n}{m} \]

实际上,后者表意清晰明了,美观简洁,因此现在数学界普遍采用 \(\dbinom{n}{m}\) 的记号而非 \(\mathrm C_n^m\)。

组合数也被称为二项式系数,下文二项式定理将会阐述其中的联系。

特别地,规定当 \(m>n\) 时,\(\mathrm A_n^m=\mathrm C_n^m=0\)。


参考:

标签:排列,frac,组合,元素,times,mathrm
From: https://www.cnblogs.com/larry1024/p/17362784.html

相关文章

  • 组合逻辑
    抽象 像微处理器的大规模电路有很高的复杂性,可以用抽象和模块化原则将电路视为一个明确定义了接口和功能的黑匣子布尔代数公理 单变量定理逻辑门需要花费成本、功耗和延迟,所以用导线代替门电路是有益处的 同一性定理T1:2输入与门中,若有一个输入总为1,可以删除与门,用......
  • 实战案例 | 双束聚焦离子束(DB-FIB)和透射电子显微镜(TEM)在芯片失效分析中的组合应用
    在做HTGB(高温栅偏测试)项目时,出现了Passdie漏电较小,FaildieIGSS漏电过大(>200nA)的情况。需要对漏电大的芯片进行复测,同时定位漏电所在的位置(热点Hotspot)。之后再利用FIB/TEM对漏电位置进行微观结构/成分分析,找到漏电点所在的膜层;最后基于电镜分析的结果对失效机理做初步判断......
  • a little schemer chapter 9 Y组合算子
    内容参照相关阅读推荐 首先是递归获得阶乘的例子(definef(lambda(x)(cond((=x1)1)(else(*x(f(-x1)))))))对应的lambda(f):(lambda(f)(lambda(x)(cond((=x1)1)(else(*x(f(-x1)))))))......
  • RPM常用命令以及组合使用场景
    本文分享自天翼云开发者社区《RPM常用命令以及组合使用场景》,作者:邬祥钊  当涉及到管理基于RedHat系的Linux系统时,RPM(RedHatPackageManager)是一个常用的软件包管理器。以下是一些常用的RPM命令以及它们的组合使用场景:常用命令:1.rpm-ivhpackage.rpm:安装......
  • 组合模式:处理树形结构数据
    当我们需要处理树形结构数据时,组合模式(CompositePattern)就会变得非常有用。组合模式允许我们将对象组合成树形结构来表示“整体/部分”的层次结构,使得客户端可以统一地处理单个对象和组合对象。在组合模式中,我们通常会定义一个抽象类或者接口来表示对象,可能会包含添加、删除、遍......
  • 【剑指 Offer】38. 字符串的排列
    【题目】输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s="abc"输出:["abc","acb","bac","bca","cab","cba"]来源:力扣(LeetCode)链接:https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-......
  • 实验3 控制语句与组合数据类型应用编程
    1。实验任务1task1.py1importrandom23print('用列表储存随机整数:')4lst=[random.randint(0,100)foriinrange(5)]5print(lst)67print('\n用集合储存随机整数:')8s1={random.randint(0,100)foriinrange(5)}9print(s1)1011print(&#......
  • 康托展开 全排列与其字典序的双映射转换
    对于给定的序列123,其全排列有6种,按照字典序从小到大即为01  23451,2,31,3,22,1,32,3,13,1,23,2,1可以看出,每个全排列序列都唯一对应一个字典序数(从0开始),那么,有什么方法可以根据序列求出其对应的字典序或者根据字典序来推断其对应序列呢一个朴素的思想,我们使用深搜......
  • 实验3 控制语句与组合数据类型应用编程
    task1.py程序代码:1importrandom23print('用列表存储随机整数:')4lst=[random.randint(0,100)foriinrange(5)]5print(lst)67print('\n用集合·存储随机整数:')8s1={random.randint(0,100)foriinrange(5)}9print(s1)1011print(�......
  • 实验3 控制语句与组合数据类型应用编程
    任务一importrandomprint('用列表存储随机整数:')lst=[random.randint(0,100)foriinrange(5)]print(lst)print('\n用集合存储随机整数:')s1={random.randint(0,100)foriinrange(5)}print(s1)print('\n用集合存储随机整数:')s2=set()whilele......