组合数学-Bell数与Stirling数

排列组合逐渐进入正轨,这节介绍两类特殊排列组合数,变个角度也可以称为三类,再变一个角度又可以称为两类。看完看完这篇blog学了之后就会明白👍。

Stirling数

Stirling 数是一类特殊的排列组合数,它分为两类,第一类Stirting数和第二类Stirting数,这两种数联系不大,但是证明上却有相似之处,且慢慢看来...🙏

第一类Stirting数

第一类Stirling数讨论的是把N个元素放入K个环排列的方法数。其中S(n,0) =0 ; S(1,1) = 1 ; S(n,k) = S(n-1 , k-1) +(n-1)*S(n-1,k)

环排列,n个数字的环排列可以理解为把n个数字围成一个环形,没有起点终点,也就是说判定这个环的异同只能根据数字之间的相对位置来看,所以 1,2,3,4 与4,1,2,3,以及3,4,1,2其实是同一个环排列,而1,2,3,4与4,3,2,1,就不是同一个环排列.读到这里你应该能直到环排列的意思了。

而第一类Stirting数就是解决这个问题,递推公式我已给出,至于为什么这样递推,下面我给出证明:

证明

设n个元素 a[1]~a[n] 放入k个环排列中的方法数是S(n,k),在放的过程中,其实有如下两种互不相容的情况:

☝ 如果a[n]这个元素是k个环排列中单独的一个环排列(也就是说这一个数字单独成一个环排列),那么其余的n-1个数字只能放入剩下的k-1个环排列中,方法数就是S(n-1,k-1)
✌ 如果a[n]不单独形成一个环排列(也就是说a[n]在其它环排列里面),那么剩 下n-1个元素就可以放入k个环排列中去,方法数是S(n-1,k),而这个时候重点来了:a[n]这个元素该怎么放,他要放到k个环排列中的方法数是多少?答案是n-1中,而不是k种(因为环排列考虑的相对位置,这个不懂可以问我)所以这种情况就是S(n-1,k)*(n-1)咯

所以综合以上两种情况,根据加法原理n个元素放入k个环排列种的方法数是S(n-1,k-1)+S(n-1,k)*(n-1)

第二类Stirting数

第二类Stirting数是求解将n个元素划分为k个不为空的子集的方法数,容易想到S(n,n) = S(n,1) = 1 (因为将n个元素化为一个集合只能是所有元素都在一块方法是1种,将n个元素划分为n个集合只能是每个元素各自一个集合,所以方法数也是1) 其递推公式为S(n,k) = S(n-1,k-1) + S(n-1,k) * k

证明

证明过程与第一类Stirting类似,分为两种情况

☝ :如果a[n]自己一个集合的话,剩下n-1个元素的方法数是S(n-1,k-1)

✌ :如果a[n]跟在k个集合种的某一个的时候,我们先排剩下的n-1个元素,方法数是S[n-1][k]然后把a[n]加入进来有k种方式,即k*S[n-1][k]

👏综上,根据加法原理,S[n][k] = S[n-1][k-1] + S[n-1][k] *k
第二类Stirting数代码如下:

void GetStirting()
{
    for (int i = 1; i <= 20; i++)
        S[i][1] = 1;
    for (int i = 2; i <= 20; i++)
        for (int j = 2; j <= 20; j++)
            S[i][j] = S[i - 1][j - 1] + S[i - 1][j] * j;
}

Bell数

Bell数就是集合的划分数,就是n个元素的集合的划分方法数,仔细想想这里与第二类Stirting有什么异同,第二类Stirting数也是关于集合的划分,只不过Stirting是求解n个元素化为k个集合的方法数,而Bell数没有这个k,那么我们就能联想到,其实Bell数就是第二类Stirting数的和,对于每个n(n=1,2,3...)对应一个k(1<=k<=n),令Bell数为B[n],Stirting数为S[n][k]那么B[n]= S[n][1]+S[n][2]+...+S[n][n]。
那么这里你应该可以知道,Bell数可以通过求解出第二类Stirting数来,然后对Stirting数求和就能解出。其实Bell数还有其它两种种求解方法

😜 递推式:B[n+1] = C[n][0]B[0] + C[n][1]B[1] +...+C[n][n]*B[n](不常用)

😊 构建Bell三角形
Bell三角形的构建与杨辉三角类似,有如下构建方法:
a[1][1] =1

对于n > 1,第n行第一项等于第n-1行最后一项,即a[n] = a[n-1][n-1]
对于m,n>1,第n行第m项等于它左边和左上方的两个数之和,即a[n][m] = a[n][m-1]+a[n-1][m-1] 三角形构建完成之后,每行首项即Bell[i][1]就是Bell数

int Bell[100][100];
void GetBell()
{
    Bell[1][1] = 1;
    for (int i = 2; i < 50; i++)
    {
        Bell[i][1] = Bell[i - 1][i - 1];
        for (int j = 2; j <= i; j++)
            Bell[i][j] = Bell[i][j - 1] + Bell[i - 1][j - 1];
    }
}

读到这里你应该就能明白这三种组合数的各自的含义了吧...

码到这里又累了,估计你看到这里也累了,打个广告?😂

有没有对机器学习,物联网,大数据,云计算感兴趣的童鞋,我有个交流群,想把它建设起来,大家来助力哇,有想法的私聊我,咱们大二大三的时候一块做项目😊

🆗来几道题吧:

题目一

小 J 有 N 块大小不同的积木,他要在海滩上搭建城市,一座城市由一组建筑物组成,在海滩上的一块积木就可以被视为一栋建筑,小J也可以将一块积木放在另一块积木之上,这样他就能搭建更高的建筑。他只能把小积木放在比大积木之上。一块积木用一个自然数表示其大小。
本题要求使用N块积木可以构建的不同的城市的数目。比如N=2时只有可能搭建两种不同的城市:
City1 两个木块1和2各自成为一个建筑,这座城市就有两栋建筑。
City2 两个木块种小的放在大的之上,1放在2的上面,即这座城市有一栋建筑
所以N=2时,我们可以构造出两个不同的城市
😋下面由你来解答,对于输入的N,输出它的结果。

这就是以上讲的三类数的应用,先不码题解了,有想法或者有迷惑的私聊我。

题目二

等会再更....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容

  • 这个不错分享给大家,从扣上看到的,就转过来了 《电脑专业英语》 file [fail] n. 文件;v. 保存文...
    麦子先生R阅读 6,510评论 5 24
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,026评论 0 2
  • 【针对欲速成急训人群】: 功夫是时间的累计,基本功如同树木的根基,需要稳扎稳打。但对以下急需学习功夫的人群,光远...
    安宝祥阅读 211评论 0 0
  • 生命向前,每天都有忙不完的工作,操不完的心,系统大小,身份定位的不同,需要我们不断觉察,才会有当下的和谐和准确沟通...
    徐尔我的宝阅读 182评论 0 1
  • 【七言绝句】《夜坐》 当代/蜀山倦客 夜坐朱楼醉指弹,西风凄紧月光寒。 凭高谁会登临意,洛水茫茫衣带宽。 20...
    寺咀山主人阅读 352评论 2 16