欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    经典黑书组合计数.ppt

    • 资源ID:6373506       资源大小:410KB        全文页数:89页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    经典黑书组合计数.ppt

    2005年浙江省队培训第2讲 组合计数,刘汝佳,目录,一、置换群二、组合数学基础三、生成函数四、等价类计数五、递推法,一、置换群,群,群是集合G和其上的二元运算*,并满足封闭性:对于群里元素a,b,a*b也在G内)结合律:(a*b)*c=a*(b*c)单位元:存在e,对于每个元素a*e=e*a=a逆元:对于每个元素a,存在b使a*b=b*a=e,记b=a-1一般简写a*b为ab,置换,用置换表示1被a1取代,2被a2取代n被an取代.其中a1,a2,an是1n的一个排列,置换群,置换群的元素是置换,运算是置换的连接可以验证置换群满足群的四个条件,定理,设G是1n的置换群,K是1n的某个元素G中使K保持不变的置换集合,记为Zk,称为K不动置换类K在G作用下的轨迹记为Ek,也就是通过置换G能变换到的元素集合定理:|Ek|*|Zk|=|G|(证明略),循环,n阶循环每个置换都可以写若干互不相交的循环的乘积,例如表示是唯一的.置换的循环节数是上述表示中循环的个数,上例的循环节数是3,传球游戏,n个人围成一圈,每个人编号为1n.有n个球,编号也为1n.一开始每人手里拿一个球基本操作为对传,即a手里的球和b手里的球交换.每个时间单位,一个人可以不做任何动作,或者与另外一人对传目标:每个人拿到和自己编号相同的球问题1:至少需要多少次对传?问题2:至少需要多少时间?,分析,用置换表示初始状态每次对传相当于乘以一个对换置换可以唯一地表示成若干循环的乘积,因此只考虑循环乘以对换(a,b)的结果a和b属于不同循环a个b属于同一个循环,分析,情况一:a和b属于不同循环因为循环的任何一个元素都可写成第一个,不妨设两个循环为(a,a1,a2,an)和(b,b1,b2,bm)结果为(b,b1,b2,bm,a,a1,a2,an)结论:两个循环合并成一个,分析,情况二:a和b属于同一个循环设为(a,a1,a2,ai,b,b1,b2,bm),乘以(a,b)后变为(a,a1,a2,ai)(b,b1,b2,bm)可以这样理解:乘以(a,b)是自身的逆操作结论:一个循环拆为了两个,分析,问题1:由于目标状态是(1)(2)(n),所以需要不断的拆循环.答案为n-c.其中c为轮换个数问题2:结论非常简单循环长度为1,次数为0,显然循环长度为2,次数为1,显然循环长度大于等于3的时候呢?,分析,循环长度大于等于3,次数为2.对于循环(a1,a2,an),只需要乘以(a2,an),就变成了(a1,an)(a2,a3,an-1),再乘以(a3,an-1),就变成了(a2,an-1)(a3,a4,an-2)等等因此只需要乘以(a2,an)(a3,an-1)(a4,an-2)就可以得到(a1,an)(a2,an-1)(a3,an-2)再对换一次就可以了,无聊的排序,你弟弟有一项家庭作业需要你帮助完成。老师给了他一列数,需要他把这些数按升序排列。你可以每次交换两个数的位置,而一次交换的代价被定义成交换的两个数的和。写一个程序,用最小的交换代价和来帮助弟弟完成这项无聊的排序工作。,分析,从初始状态变为目标状态可以看作完成一个置换.把置换分解为s个不相交循环乘积各循环是独立的,所以依次完成各个循环对于任意循环i,设它的长度为ki,容易证明至少需要交换ki-1次,即每次让一个元素到达目标,则前ki-1个元素到达目标后最后一个元素也到达目标,分析,显然每个元素至少参与一次交换.既然交换次数一定,应该让循环中的最小元素ti参加所有交换,其他元素各只参加一次例如(8 2 7),2占了7的位置,则2和7交换;2又占了8的位置,则2和8交换花费为sumi+(ki-2)*ti,其中sumi为第i个循环所有数之和,分析,特殊情况:先让ti和全局最小值m交换,让m进入循环,然后和所有元素交换一次后再和ti交换,花费为sumi+ti+(ki+1)m例如1,8,9,7,6,目标状态为1,6,7,8,9,分解为(1)(8 6 9 7),考虑第二个循环方案一:花费为30+(4-2)*6=42方案二:花费为30+6+(4+1)*1=41,分析,程序实现:只需要记录每个循环节的长度ki和它的最小元素ti,不需要模拟交换找循环最多访问每个元素一次,时间复杂度是线性的,同构计数,一个竞赛图是这样的有向图任两个不同的点u、v之间有且只有一条边不存在自环用P表示对竞赛图顶点的一个置换。当任两个不同顶点u、v间直接相连的边的方向与顶点P(u)、P(v)间的一样时,称该图在置换P下同构对给定的置换P,我们想知道对多少种竞赛图在置换P下同构,同构计数,例:有顶点1、2、3、4和置换P:P(1)=2,P(2)=4,P(3)=3,P(4)=1对于下图的四种竞赛图,在置换P下同构,分析,先把置换它分解成为循环,首先证明长度为L的偶循环将导致无解对于点i1,记P(ik)=ik+1,假设i1和iL/2+1的边方向为i1-iL/2+1,那么有i2-iL/2+2,i3-iL/2+3,iL/2+1-i1,和假设矛盾!假设确定其中k条独立边后其他边也会确定,则答案为2k考虑两类边:循环内边和循环间边.,分析,循环内顶点的关系定了i1和ij之间的关系,ik与i(k+j-2)mod n+1之间的关系也被确定下来了,因此只需要确定i1和i2,i3,i(L-1)/2+1这(L-1)/2对顶点的关系不同循环间顶点的关系设循环为(i1,i2,iL1)和(j1,j2,jL2),通过类似分析得只需要确定gcd(L1,L2)对关系即可,分析,最后答案为2k1+k2其中k1=sum(L-1)/2,k2=sumgcd(L1,L2)可以用二分法加速求幂,二、组合数学基础,单色三角形,给定空间里的n个点,其中没有三点共线。每两个点之间都用红色或黑色线段连接。如果一个三角形的三条边同色,则称这个三角形是单色三角形。对于给定的红色线段的列表,希望能找出单色三角形的个数。,分析,三角形只有单色和非单色两种非单色三角形的个数等于由一个点连接两条非同色线段的情况数的一半。设第i个点连接的红色线段数为ri,由于每个点只引出红色或黑色的线段,故黑色线段数目为n-1-ri。由乘法原理,第i个点连接两条非同色线段的情况数为ci=ri(n-1-ri)。每个非单色三角形被算了两次,因此答案为c(n,3)-sumci/2,电子锁,某机要部门安装了电子锁。M个工作人员每人发一张磁卡,卡上有开锁的密码特征。为了确保安全,规定至少要有N(=M)个人同时使用各自的磁卡才能将锁打开,并且任意N个人在一起都能将锁打开电子锁上至少要有多少种特征?每个人的磁卡至少要有几个特征?,分析,任意N-1个人在一起,都无法将锁打开,从而必然缺少一种开锁的密码特征A;并且在其余的M-(N-1)个人中,任意一人加入到N-1个人中,他们就能将锁打开结论1:每M-(N-1)个人拥有一个共同的特征,分析,设一个N-1人组G所缺少的特征为M(G)结论:任两个不同的G的M(G)都不同反证法.设M(G1)=M(G2)=M.显然G1G2至少包含N个人且他们都缺少特征M,故这些人在一起无法将锁打开,矛盾一共有C(M,N-1)个N-1人组,因此结论2:总特征数tot=C(M,N-1),分析,对于每一个工作人员T来说,在其余M-1个人中任选N-1个人在一起都会因为缺少某种特征而无法开锁,而这缺少的特征必须是T所具备的由于这些缺少的特征各不相同,所以T的磁卡上至少需要有C(M-1,N-1)个特征,分析,构造法:枚举M人选M-(N-1)人的组合,给它们赋于一个新的共同的特征合法性:对于每N-1个人,不具备剩下M-(N-1)拥有的公共特征,因此打不开门;由于这N-1个人具备其他所有特征(其他特征在分配时至少分配到了这N-1个人中的一个),所以随便再找一个就可以打开门最优性:由结论2,这个方案是最优的,用AND算XOR,对于2n位二进制数A,分成两个n位数后进行AND操作,返回n位数。记该操作为ANDn(A),同理可定义XORm(A)给定n,求满足mn的条件下,最大的m值,使得存在编码映射g1,将2m位数映射为2n位数,和解码映射g2,将n位数映射为m位数使得XORm(A)=g2(ANDn(g1(A),分析,XORm(A):有2m个象,每个都有2m个原象ANDn(A):原象有3k的象有C(n,k)个问题转化为:有2n个箱子,其中有C(n,i)个容积为3i,求m(mn)的最大值,使得2m个大小为2m的物品可以被放入算法:二分枚举m,算出每一种箱子可以放多少物品,再乘以这种箱子的数量,检测总和是否满足。需要高精度.时间复杂度:O(nlogn),彩票,大街上到处在卖彩票,一元钱一张。购买撕开它上面的锡箔,你会看到一个漂亮的图案。图案有n种,如果你收集到所有n种彩票,就可以得大奖。请问,在平均情况下,需要买多少张彩票才能得到大奖呢?,分析,已经有k个图案,s=k/n,拿到一个新的需要1次的概率:1-s2次的概率:s*(1-s)t次的概率:st-1*(1-s)期望:概率加权和(1-s)*(1+2s+3s2+4s3+)=(1-s)E而sE=s+2s2+3s3+=E-(1+s+s2+)移项得(1-s)E=1+s+s2+=1/(1-s)=n/(n-k),分析,总结已有0个图案:拿1次就可以多搜集一个已有1个图案:平均拿n/(n-1)次就可多搜集一个已有k个图案:平均拿n/(n-k)次就可多搜集一个所以总次数为:n(1+1/2+1/3+1/n),Pibonacci数,可以对任何实数x0定义一个函数P(x):给定整数x(x30,000),计算P(x)P(4)=2,P(25)=4024,P(47)=14,355,865,分析,由于每次递归不是减1,就是减pi,因此任意时刻P函数的参数都是x减去整数个1和整数个pi由于递推边界都是不大于4的非负实数,令让r(i)表示满足x-i-j*pi4的j的最小值,则有r(i)=(x-i-4)/pi,且任意一个递推边界都可以表示成P(x-i-r(i)*pi),分析,用待定系数法.设P(x i r(i)*pi)的系数为ai,则最后答案为a0+a1+ax-3,则问题的关键是求ai递归的时候P(x)转化成了P(x-pi),因此P(x i r(i)*pi)是由P(x)经过i+r(i)层递归得到的,且恰好有i层减1,r(i)层减pi若x-i-r(i)*pi=3,则最后一层有两种可能,因此 ai=C(i+r(i),i)若x-i-r(i)*pi3,则最后一层必须是x-pi得到,因此ai=C(i+r(i)-1,i),分析,称满足第一个条件的i为A类数,满足第二个条件的i为B类数,那么最简单的方法是每次判断i的类型,然后计算组合数,每步O(i2),共O(x3)改进:注意到ai和ai-1相差并不大,记di=ai/ai-1,则ai=ai-1*di.设ai-1=C(m,i-1),ai=C(m+a,i),由于r(i)-r(i-1)分0即1,故-1=a=2,因此,分析,则计算di始终是常数级别的,因此时间复杂度为O(x).另外需要高精度运算,三、生成函数,生成函数,定义一个序列ai 的生成函数(或称“母函数”)为a0+a1x+a2x2+a3x3+为什么要定义这样一个函数呢?因为生成函数把ai 的所有信息浓缩到了一个多项式里可以把它作为整体进行运算,而不需要单独考虑每一个ai。类似定义指数生成函数:,一般排列组合问题,有k种元素重数均为无限大第i种元素选的个数ci必须属于一个给定的集合Si求r排列数和r组合数,并列举出方案对于每个元素k构造序列ai(k),其中ai(k)等于1当且仅到iSk设该问题的r组合数br,则序列bi的生成函数等于所有ai(k)的生成函数的积设该问题的r排列数为cr,则序列ci的指数生成函数等于所有ai(k)的指数生成函数的积,一般排列组合问题,有苹果、香蕉和桃子三种水果苹果只能选不超过3个,选香蕉的个数必须是5的倍数,而桃子只能选2,3或者5个问要选k个水果有几种方法?写出生成函数苹果:S1=0,1,2,3,生成函数是1+x+x2+x3香蕉:S2=5,10,,生成函数是x5+x10+x15+桃子:S3=2,3,5,生成函数是x2+x3+x5因此r组合数序列的生成函数是(1+x+x2+x3)(x5+x10+x15+)(x2+x3+x5)把多项式展开后,xk项的系数就是所求,巧克力,有袋子里均匀地装着c种颜色的巧克力,每种巧克力均有无限多。佳佳每次从袋子里拿一块放在桌子上,如果桌子上已经有一块颜色相同的巧克力,佳佳就把两块巧克力都吃掉。佳佳一共取出n块巧克力,请问最后桌上有m块的概率有多大?例如c=5,n=100,m=2时,概率为0.625。,分析,由于mc或者mn或者m和n不同奇偶性时概率为0,以下均认为mminc,n,且m和n同奇偶。方法一:递推法。设di,j为取出i块巧克力,恰好有j块的概率,则di,j=di-1,j-1*(c-j+1)/c+di-1,j+1*(j+1)/c算法的复杂度为O(nc)。,分析,本题实际上是要让m种颜色取奇数个,c-m种颜色取偶数个,求排列有多少种回忆:奇数项指数生成函数为(ex-e-x)/2,偶数项生成函数为(ex+e-x)/2由于哪m种颜色取奇数个并不确定,方案数要乘以C(c,m),再除以总方案数cn得到概率答案为下式的xn的系数,分析,为了求上式的xn的系数,做展开由于ekx的xn系数为kn/n!,因此所求概率为,分析,时间复杂度分析花O(c2)的时间做多项式展开,得到tk花O(c)的时间算组合数和2c花O(c)的时间求和(每一项用对数)总时间O(c),和n无关附加结论:n比较大时概率约为,分析,引理1:|tk|=500时,2*10-9证明:0kc时-c+2=2k-c=c-2,因此,分析,定理的证明:显然t0=(-1)m,tc=1,把 的首尾项分离出来,得进而有而第二项,分析,总结算法一:递推.O(nc)算法二:生成函数.O(c2)附加结论:n500时可以O(c)计算,四、等价类计数,着色问题,对22的方阵用黑白两种颜色涂色,问能得到多少种不同的图像?经过顺时针旋转能吻合的两种方案算同一种方案,原问题的置换,给四个格子1,2,3,4着k=2种颜色用置换群定义定价类:置换一(转0度):(1,2,3,4)置换二(转90度):(2,3,4,1)置换三(转180度):(3,4,1,2)置换四(转270度):(4,1,2,3)G=转0度,转90度,转180度,转270度,Burnside引理,对于一个置换f,若方案s变换到自己,称它为f的不动点.f的不动点数目记为C(f)Burnside引理:等价类数目为C(f)的平均值考虑所有满足方案s是置换f的不动点的(s,f)对.则数目=sumCf=sumZk假设有L个等价类,由于处于同一个等价类的Zk相同,因此sumZk中每个等价类可以合并在一起,即sumEk*Zk,其中每个等价类取一个k由基本定理,这个和为L*G.因此L=sumCf/L,Burnside引理计算举例,故方案数为所有C(f)的平均数,即(16+2+4+2)/4=6,和枚举的结果一致,Plya定理,Burnside定理需要计算每个置换f的不动点数目C(f)方案一:对有所有着色方案,检查它是否为f的不动点.缺点:着色方案非常多!方案二:把f分解成循环的乘积.不动点必然满足每个循环内的颜色相同.如果有m(f)个循环,则有km(f)个不动点方案二称为Polya定理,Plya定理计算举例,不同方案数为(24+21+22+21)/4=6,一般情况,n*n的格子,涂m种颜色分n为奇数和偶数两种情况讨论,环面,将一张黑白格子的纸,长边贴起来,组成一个圆柱,接下来两个底边(圆)再贴起来,组成一个环面,类似救生圈的形状,环面,给定原始的纸的大小N*M,让我们任意染色,求出本质不同的环面的数量。有两点注意:如果N=M,那么有两种组成圆柱的方案。“内侧面”和“外侧面”是可以被区分开来的,即纸不是透明的,反面不可使用,分析,置换每一行循环右移1格每一列循环下移1格旋转180度,注意不是翻转,考虑一张纸不改变上下面,只能通过旋转。旋转90度,只在N=M时可用求出每个置换的循环节,套用Polya定理,多边形,给出n,m(nm),从单位正n边形的顶点中选出m个,能组成多少种不同的m多边形?若一个m边形可由另一个m边形通过旋转、翻转、平移得到,则认为两个m边形同种,分析,m=3时,平移不可能发生重合,因此只考虑翻转和旋转.问题转化为用01两种颜色给n个点染色,m个染成1,n-m染成0,分析,还是染色问题,但polya定理不适用,因为要求染色格式为(m,n-m)直接用Burnside引理求解,需要计算每个置换的不动点数V不动点:每个循环内各元素颜色相同,分析,旋转.考虑顺时针旋转i格的置换:循环个数为gcd(n,i)每个循环的长度为L=n/gcd(n,i)枚举每个置换I计算循环长度L.如果L不是M的约数则无解(因为每个循环内的颜色相同)否则问题转化为在所有个置换里选M/L个,V=c(gcd(n,i),M/L)=c(N/L,M/L)时间复杂度为O(n),分析,翻转,考虑对称轴n为奇数.只有一种对称轴,即轴穿过一个点.有n/2个循环长度为2,还有一个循环长度为1(被穿过的点),V=C(n/2,m/2).n为偶数,有两种翻转轴每边n/2个点.这样的置换有n/2个轴穿两点,每边n/2个点.这样的置换也有n/2个,分析,轴不穿点的情形,有n/2个循环长度为2.若m为偶数,则V=C(n/2,m/2);若m为奇数,则V=0轴穿两点,每边n/2个点的情形,n/2-1个循环长度为2,两个循环长度为1(被穿过的点)若m为偶数,则V=C(n/2-1,m/2)+C(n/2-1,m/2-1)=C(n/2,m/2)(被穿点都选或者都不选)若m为奇数,则V=2C(n/2-1,(m-1)/2),分析,总结不动点:每个循环内颜色相同,因此需要给每个循环安排一种颜色,借助奇偶分析保证颜色为1的点数恰好为m结论(虽然分类讨论多,但容易合并!)方法:每类置换(n奇数只有一类)的V加起来n为偶m为奇,sumV=nC(n/2-1,m/2)n为奇或n、m同为偶,sumV=nC(n/2,m/2)时间复杂度为O(1)(不考虑高精度),分析,优化:旋转时是否可以不枚举置换i?L=n/gcd(n,i)显然是n的约数.又因为L必须是M的约数,因此L是gcd(n,m)的约数枚举gcd(n,m)的约数L,如何计算有多少个i满足L=n/gcd(n,i),即gcd(n,i)=n/L=a?,分析,有多少个i满足gcd(n,i)=n/L=a?设i=a*t,则当且仅当gcd(L,t)=1时gcd(n,i)=gcd(a*L,a*t)=a因为0=i=n,所以0=t=n/a=L结论:有phi(L)个i满足条件.由于每个置换对应的不动点数都是C(N/L,M/L),因此总数为sumphi(L)*C(N/L,M/L)计算次数仅是gcd(N,M)的约数个数,五、递推法,互不攻击的象,两个“象”互不攻击当且仅当它们不处于同一条斜线上。例如B1和B2互相攻击,但是B1和B3、B2和B3都不互相攻击。在一个nn(n30)的棋盘上放k个互不攻击的象有多少种方法?例如,当n=8,k=6时有5 599 888种方法。,分析,白格象和黑格象互不相干,抽白格得到左图行顺序无关,重排得右图问题:右图放t个象的方案数?,分析,dti,j表示第i行及下面的行放j个象的方案数已经放了t-j个象,每放一个象都会导致某列被禁止设第i行有ci个格子放:有ci-(t-j)种选择,转移到dti+1,j-1不放:转移到dti+1,j因此dti,j=(ci-t+j)*dti+1,j-1+dti+1,j枚举白格象个数t,把所有dt1,t*dk-t1,k-t加起来即可,带标号连通图计数,统计有n(=50)个顶点的连通图有多少个n=3时有四个不同的图n=4时有38个图,分析,设f(n)为所求答案,g(n)为有n个顶点的非连通图,则f(n)+g(n)=h(n)=2n(n-1)/2.g(n)可以这样计算:先枚举1所在连通分量的情况.假设共有k个点就有C(n-1,k-1)种集合.确定集合后,第一连通分量有f(k)种情况,其他连通分量有h(n-k)种情况,因此答案是g(n)=sumC(n-1,k-1)*f(k)*h(n-k),k=1.n-1状态有n个,决策n个,时间复杂度为O(n2)每次计算出g(n)时立刻需要算出f(n)和h(n),分析,f(n)=1,1,4,38,728,26704,1866256,251548592h(n)=1,2,8,64,1024,以f(5)为例.显然h(n)=1,2,8,64,1024先算g(5)C(4,0)*f(1)*h(4)=1*1*64=64C(4,1)*f(2)*h(3)=4*1*8=32C(4,2)*f(3)*h(2)=6*4*2=48C(4,3)*f(4)*h(1)=4*38*1=152则f(5)=h(5)-g(5)=1024-64-32-48-152=728,串并联网络,这个题目要求你统计串并联网络的数目。串并联网络有两个端点,一个叫源,一个叫汇。一个两端点串并联网络可以按以下方式递归定义一条单独的边是串并联网络如果G1和G2是串并联网络,那么把他们的源和汇并在一起也得到串并联网络(并联)如果G1和G2是串并联网络,那么把G1的汇和G2的源并在一起也得到串并联网络(串联),串并联网络,注意在串并联网络中两个点之间可以有多条边,而且,把串联在一起的部分调换看作是同一种串并联网络,比如 这三种网络都认为是相同的。类似的,把并联部分调换也看作是同一种串并联网络,如 这三种网络也被认为是相同的。现在,给出一个N你应该计算有N条边的串并联网络的数目。比如,N=4,15时有10、1399068种串并联网络,分析,串并联网络是递归定义的,这使我们想到可以通过递推来解决这道题。但是对串联和并联部分进行交换都看作是同一种串并联网络,直接递推的话会有很多的重复解决重复问题,最有力的手段之一就是通过序的概念。给同构的网络定一个序,我们只要序最大或最小的就可以达到去除重复的目的。直接定义串并联网络的序,是比较麻烦的,所以我们先对串并联电路的表示方法进行一下改造,分析,最容易想到的递归表示用1表示只有一条边的串并联网络n个网络串联,写成(G1,G2,Gn)n个网络并联,写成G1,G2,Gn两种括号是必须的吗?如果最外层是串联,那么从外面数奇数层都应该是串联,偶数层是并联.因此不需要区分串联还是并联,只需要用S()表示最外层为串联的,P()表示最外层为并联的即可.这样还可消除(1,(1,1)和(1,1,1)这样的重复,分析,序关系.要求所有括号内的元素(1或者括号)按所含1从多到少排序。这样,(1,1),1,1)就不能写成S(1,(1,1),1)由于1个数相同的元素还是有可能有多个,所以这样并没有完全排除重复方案一:细化序关系方案二:递推时消除重复我们采取方案二,分析,显然S型网络和P型网络的个数是一样的.只考虑S型网络.依次设计各个串联元素(每个串联元素是单条边或者一个并联项).由序关系,应该按元素个数递增的顺序设计各个串联元素dn,k 表示有n条边,主括号第一个元素含1的个数不超过k的S型网络的数目,则dn,n-1为边数为n的S型网络数目,dn,n=2*dn,n-1为问题的答案dn,k=dn,k-1+dn-k,k吗?当前项最多有k-1条边,dn,k-1当前项恰好有k条边,dn-k,k,分析,dn,k=dn,k-1+dn-k,k是错误的!因为我们没有规定1的个数相同时各项应如何排列,只能穷举前多少个元素包含1的个数等于k假设有i个元素恰好包含k个1,那么这i个元素应该都是从边数为k的P型网络里选出来的,可以重复.有重复的组合数是C(i,dk,k-1+i-1),故dn,k=dn,k-1+sumQ(i)其中Q(i)=C(dk,k-1+i-1,i)*dn-i*k,k-1,表示i个元素恰好包含k个1时有多少个S型网络,分析,S型网络递推式dn,k=dn,k-1+sumQ(i)其中Q(i)=C(dk,k-1+i-1,i)*dn-i*k,k-1,表示i个元素恰好包含k个1时有多少个S型网络考虑划线部分,需要考虑边界 d0,k=1,dn,k=dn,n(nk)状态O(n2)个,决策O(n)个,如果用C(n,m)=C(n-1,m-1)*n/m计算组合数,时间复杂度为O(n3),

    注意事项

    本文(经典黑书组合计数.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开