- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
组合数学在程序设计竞赛中的应用 1.ppt
组合数学在程序设计竞赛中的应用(一) 软件学院2003级穆浩英 内容提要 排列组合和容斥原理 群论与Polya定理 递推关系 两个基本原则 1、加法原则 如果完成一件事情有两种方案,而第一个方案有m种方法,第二个方案有n中方法,则完成该事情共有m+n种方法。 2、乘法原则 如果完成一件事情需要两个步骤,第一步有m中方法,第二步又有n种方法,则完成该事情共有m*n种方法 排列组合的几个基本结论 1、相异元素不允许重复的排列数和组合数: 排列组合的几个基本结论 3、相异元素不允许重复的圆排列 排列组合例题 例1:电子锁 某机要部门安装了电子锁。M工作人员每人发一张磁卡,卡上有开锁的密码特征,为了确保安全,规定至少有N人同时使用各自的磁卡才能将锁打开。 现在需要计算一下,电子锁上至少要有多少种特征,每个人的磁卡上至少要有多少特征。 排列组合例题 先做一个简单的假设:M=7,N=4。 排列组合例题 例2:zju1976 Path On a Grid 排列组合例题 我们用组合数学的思路来解题。最短路径必定是一条只向右上走得路。设向右走一步为x,向上走一步为y。则每一条路线一定对应由n个x,m个y共m+n个元素组成的排列。 排列组合数的一般计算方法 排列组合数的一般计算方法 (一)计算组合数的函数 排列组合数的一般计算方法 (二)使用double类型 排列的生成算法 字典序法: 顾名思义,这种方法就是将所有n元排列按“字典顺序”排成队,以12……n为第一个排列,排序规则,即:由一个排列P(p1,p2……pn)直接生成下一个排列的算法可归结为: 组合的生成算法 Zju1089 有n(n=6)个数字,要求按字典序输出所有从该n个数字中取6个的组合。 组合的生成算法 Code: 组合的生成算法 容斥原理 容斥原理应用 1、错排问题。 问题描述:n个元素一次给以标号1,2,…,n进行全排列,求每个元素不再自己原来位置上的排列数Dn。 容斥原理应用 一般地, |Ai1Ai2…Aik| = (n-k)!, k=1,2…,n 容斥原理应用 例:zju1619Present n个朋友每人买了一份礼物,混合在一起后,每人拿一份,求恰有m人拿到了恰好是自己买的礼物的概率。 容斥原理应用 容斥原理应用 群论 群论 置换:n个元素1,2,…,n之间的一个置换: 群论 循环 记: (a1a2…an)= 群论 轮换上乘上一个对换的效果: 群论 群论 群论 结论: 1、把初始状态转化成一系列轮换之积 2、若原轮换的长度为n,次数为n-1; Polya定理 Polya定理 Polya定理 Polya定理 Polya定理 Polya定理 递推关系 递推关系 递推关系 分析: 设n个人参加比赛,m个不同名次的ranklist共有F(n,m)个,则: 对于有4个嵌宝 石位置的手镯 来说,有4种旋 转方式,有4种 翻转方式,用 轮换相乘来表 示: 1 2 3 4 3 (2)(4)(1 3) 翻转4 2 (1 2)(3 4) 翻转3 3 (1)(3)(2 4) 翻转2 2 (1 4)(2 3) 翻转1 1 (1 4 3 2) 旋转4 2 (1 3)(2 4) 旋转3 1 (1 2 3 4) 旋转2 4 (1)(2)(3)(4) 旋转1 C(i)循环节数 轮换相乘 置换 Polya定理: 设G是p个对象的一个置换群,用k种颜色突然这p个对象,若一种染色方案在群G的作用下变为另一种方案,则这两个方案当作是同一种方案,这样的不同染色方案数为: L = 1 G ∑ f∈ G kc(f) 对于手镯一题,设n=4,m=2 L = (24+2+22+2+22+23+22+23)/8=6 置换及循环节数的计算方法: 对于有n个位置的手镯,有n种旋转置换和n种翻转置换 对于旋转置换: c(fi) = gcd(n,i) i为一次转过i颗宝石。 i = 0 时 c=n; 对于翻转置换: 如果n为偶数 c(f) = n/2 的置换有n/2个; c(f) = n/2+1 的置换有n/2个 如果n为奇数,c(f) = n/2+1; Code #include iostream #include cmath #include iomanip using namespace std; int gcd(int a,int b){ return b?gcd(b,a%b):a; } double go(int n); int main(){ int n; while(cinn n!=-1)
文档评论(0)