【暖*墟】 #组合# 多重集的排列与组合

本文深入探讨了多重集的排列与组合理论,包括无限重复数的多重集r排列计算,以及有限重复数的多重集排列公式。通过具体实例,如三元数的计算和国际象棋中非攻击型车的放置,阐述了定理的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【多重集的排列与组合】

如果S是一个多重集合,那么S的一个r排列,是S中r个对象的一个有序放置。

如果S的对象总数是n(重复对象计数在内),那么S的n排列也称为S的排列。

例如,如果S={2·a,1·b,3·c},那么

acbc  cbcc

都是S的4排列,而

abccca

是S的一个排列。多重集合S没有7排列,因为7>2+1+3=6,即7大于集合S的对象个数。

我们首先计算多重集合S的r排列的个数,其每一个重复数都是无限的。

定理2.4.1 设S是有k种不同类型对象的多重集合,每一个元素都有无限重复数。那么,S的r排列的数目是kr。

证明 在构造S的r排列的过程中,我们可以把第一项选择为k个类型中任意类型的一个对象。

类似地,第二项可以是k个类型中任意类型的一个对象,等等。因为S的所有重复数都是无限的,

所以任意一项的不同选择数量也总是k,它不依赖于前面项的选择。根据乘法原理,r项可以有kr种选择方法。

这个定理的另一种描述是:k个不同对象(每一个对象的供给是无穷的)的r排列数量等于kr。

我们还注意到,如果S的k种不同类型的对象的重复数都至少是r,那么定理也是成立的。

重复数无限的假设是保证我们在构造r排列时不能用尽任何类型的对象的一种简单保证。

例子 最多有4位的三元数的个数是多少?

//一个三元数(ternary numeral)或者三进制数是用3的幂表示一个数而得到的数。

//例如,46=1×33+2×32+0×31+1×30。所以46的三元数是1201。

这个问题的答案是多重集合{∞·0,∞·1,∞·2}或多重集合{4·0,4·1,4·2}的4排列的个数。

根据定理2.4.1,这个数等于34=81。

现在我们计数有k种不同类型的对象且有有限重复数的多重集合的排列。

定理2.4.2 设S是多重集合,它有k种不同类型的对象,且每一种类型的有限重复数分别是n1,n2,…,nk。

设S的大小为n=n1+n2+…+nk。则S的排列数目等于  


 

证明 给定多重集合S,它有k种类型对象,比如说a1,a2,…,ak,

且重复数分别是n1,n2,…,nk,对象总数n=n1+n2+…+nk。

我们想要这n个对象的排列数量。可以这样考虑这个问题。

一共有n个位置,而我们想要在每一个位置放置S中的一个对象。

首先,我们确定放置a1的位置。a1的数量是n1,因此必须从n个位置的集合中取出n1个位置的子集。

这样做的方法数是。下一步,要确定放置a2的位置。

此时还剩下n-n1个位置,我们必须从中选取n2个位置来。

这样做的方法数量是。再接下来我们有种方法为a3选择位置。

继续这样做下去,利用乘法原理,我们发现S的排列个数等于


 

使用定理2.3.1,我们看到上面这个数等于


 

消去分子分母上的相同因子,上面的数化简成为


 

例子 词MISSISSIPPI中的字母的排列数是


 

因为这个数字等于多重集合{1·M,4·I,4·S,2·P}的排列数。

如果多重集合S只有两种类型的对象a1,a2,且它们的重复数分别是n1和n2,其中n=n1+n2,

那么按照定理2.4.2,S的排列数是


 

因此,我们可以把看成是n对象集合的n1子集的数量,

还可以看成是一个有两种类型的对象且它们的重复数分别是n1和n-n1的多重集合的排列个数。

在定理2.4.2中出现的数还有另外一种解释。

它涉及这样一个问题:把一个对象集合划分成指定大小的各个部分,其中这些部分都有指定给它们的标签。

为了理解上面这段话的意思,我们给出下面的例子。

例子 考虑有4个对象的集合{a,b,c,d},把它划分成两个子集,每一个大小为2。

如果这两部分没有做标签,那么有3种不同的划分:

{a,b},{c,d}; {a,c},{b,d}; {a,d},{b,c}

现在假设给这些部分做上不同的标签(例如,红色和蓝色)。

那么划分数量增大;实际上,有6个划分,因为我们要用两种方法给划分的每一部分标上红色和蓝色。

例如,对于上面的划分{a,b},{c,d},有   红盒{a,b},蓝盒{c,d}   和     蓝盒{a,b },红盒{c,d}。

在一般情形下,我们可以用B1,B2,…,Bk(看成是颜色1,颜色2,…,颜色k)标记这些部分,

并把这些部分想象成一些盒子。这时,下面定理成立。

定理2.4.3 设n是正整数,并设n1,n2,…,nk是正整数且n=n1+n2+…+nk。

把n对象集合划分成k个标有标签的盒子,且第k个盒子含有nk个对象,这样的划分方法数等于

如果这些盒子没有标签,且n1=n2=…=nk,那么划分数等于:

证明 这一证明是乘法原理的直接应用。我们必须在满足大小限制的情况下选取哪些对象放进哪些盒子。

首先,我们选取n1个对象放入第1个盒子,然后从剩下的n-n1个对象中选取n2个对象放入第2个盒子,

然后从剩余的n-n1-n2个对象中选取n3个对象放入第3个盒子,…,最后将n-n1-…-nk-1=nk个对象放入第k个盒子。

由乘法原理,进行这些选择的方法数为


 

同定理2.4.2的证明一样,上面这个数等于


 

如果这些盒子没有标签,且n1=n2=…=nk,那么这个结果就必须除以k!。

这是因为,同前面的例子一样,对于把这些对象分配到k个没有标签的盒子里的每一种方法,

都有k!种方法给这些盒子标上标签1,2,…,k。

因此,使用除法原理,我们发现没有标签盒子的划分的个数是


 

这类例子考虑的是国际象棋棋盘上的非攻击型车。为免除读者担心本书要求事先具有国际象棋的知识,

我们在这里给出唯一需要知道的国际象棋知识:两个车能够互相攻击当且仅当它们位于棋盘的同一行或同一列上。

除此之外,无需知道国际象棋的其他知识(且这些知识也于事无补)。

因此,棋盘上非攻击型车的集合指的就是叫做“车”的那些棋子的集合,

它们占据着棋盘上的一些方格,并且没有两个车位于同一行或同一列上。

例子 有多少种方法在8×8棋盘上放置8个非攻击型车?

在8×8棋盘上放置8个非攻击型车的例子如下:

我们给棋盘上每一个方格赋予一个坐标对(i,j)。整数i指明这个方格所处的行,

而整数j指明这个方49格所处的列。因此i,j都是1和8之间的整数。

因为这个棋盘是8×8的并且有8个不能相互攻击的车放在棋盘上,所以每一列一定只存在一个车。

因此,这些车占据8个方格,其坐标是

(1,j1),(2,j2),…,(8,j8)

但是,每一列上也必须存在一个车,这使得j1,j2,…,j8中没有两个是相等的。更准确地说,

j1,j2,…,j8

必须是{1,2,…,8}的一个排列。反过来,如果j1,j2,…,j8是{1,2,…,8}的一个排列,

那么把车放在坐标是(1,j1),(2,j2),…,(8,j8)的各个方格上,就得到棋盘上的8个非攻击型车。

因此,8×8棋盘上8个非攻击型车的集合与{1,2,…,8}的排列之间存在一一对应,

因为{1,2,…,8}有8!个排列,所以,把8个车放到8×8棋盘上使得它们具有非攻击性的方法也有8!个。

在上面讨论中,我们实际上已经间接假设这些车彼此没有区别,

即它们构成只有一种类型的8个对象的一个多重集合。因此,唯一重要的是车要占据哪些方格。

如果我们有8个不同的车,比如,用8种不同的颜色分别给8个车着色,

那么还要考虑在8个被占据的每一个方格里放的是哪个车。假设有8个不同颜色的车。

在决定哪8个方格要被这些车占据后(8!种可能),我们现在还要决定在每个所占据的方格上的车是什么颜色的?

观察从第一行到第8行的这些车时我们看到8种颜色的一个排列。

因此,决定了哪8个方格要被这些车占据之后(8!种可能),就必须确定8种颜色的哪个排列(8!种排列)。

于是,在8×8棋盘上具有8种不同颜色的8个非攻击型车的放置方法数等于

8!8!=(8!)2

现在假设不是有8个不颜色的车,而是有1个红(R)车、3个蓝(B)车和4个黄(Y)车,

而且还假设同颜色的车彼此没有区别1。现在,当我们从第1行到第8行观察这些车时,看到多重集合

{1·R,3·B,4·Y}

的一个颜色排列。根据定理2.4.2,这个多重集合的排列个数等于


 

因此,在8×8棋盘上放置1个红车、3个蓝车和4个黄车并使它们彼此不能互相攻击的方法数等于


 

前面例子中的推理具有相当的普遍性,直接导致下面的定理。

定理2.4.4 有k种颜色共n个车,第一种颜色有n1个,第二种颜色有n2个,…,第k种颜色有nk个。

把这些车放置在一个n×n的棋盘上使得车之间不能相互攻击的方法数等于


 

注意,如果这些车都有不同的颜色(即k=n,ni=1),那么上面的公式给出的答案就是(n!)2。

如果这些车的颜色都相同(即k=1,n1=n),那么上面的公式给出的答案就是n!。

设S是n元素多重集合,其重复数分别是n1,n2,…,nk,且n=n1+n2+…+nk。

定理2.4.2给出了求S的n排列数的简单公式。如果r<n,一般来说,没有求S的r排列数的简单公式。

尽管如此,可以利用生成函数技术进行求解,我们将在第7章对此加以讨论。

在某些情况下,还是可以像下面的例子那样进行论证。

例子 考虑3种类型9个对象的多重集合S={3·a,2·b,4·c}。求S的8排列的个数。

S的8排列可以被划分成3个部分:

(ⅰ){2·a,2·b,4·c}的8排列数,有


 

(ⅱ){3·a,1·b,4·c}的8排列数,有


 

(ⅲ){3·a,2·b,3·c}的8排列数,有


 

因此,S的8排列的个数是

420+280+560=1260

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值