最新《算法艺术与信息学竞赛》标准课件.pptVIP

最新《算法艺术与信息学竞赛》标准课件.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最新《算法艺术与信息学竞赛》标准课件.ppt

分析 可以用矩阵来保存结果 C[j,k]表示从j到k的关键码组成的最优排序二叉树 Root[j,k]记录这棵排序二叉树的根 * jjjkk 分析 考虑三个结点的情形 最优值放在C[B,D]中,根放在root[B,D]中 * jjjkk 分析 类似地,更新所有C[j-2,j]和root[j-2,j] * jjjkk 分析 四个结点的情形(如A-D) * jjjkk 分析 最终计算结果为 * jjjkk 分析 可以利用root矩阵递归地构造出最优树 * jjjkk 分析 时间复杂度:计算每个C[i,j]和root[i,j]需要枚举根结点,故为O(n3) 空间复杂度:需要两个n*n矩阵,O(n2) * jjjkk 三、最长上升子序列 最长上升子序列问题(LIS)给一个序列,求它的一个递增子序列,使它的元素个数尽量多。例如序列1,6,2,5,4,7的最长上升子序列是1,2,5,7(还有其他的,这里略去) * jjjkk 分析 定义d[i]是从第1个元素到第i个元素为止的最长子序列长度, 则状态转移方程为 直接使用这个方程得到的是O(n2)算法 下面把它优化到O(nlogn) * jjjkk 状态的组织 d值相同的a值只需要保留最小的, 因此用数组g[i]表示d值为i的数的a最小值, 显然 g[1]=g[2]=…=g[k] 计算d[i]: 需要在g中找到大于等于a[i]的第一个数j, 则d[i]=j 更新g: 由于g[j]a[i], 需要更新g[j]=a[i] * jjjkk 代码 使用STL的lower_bound可以直接求出比a[i]大的第一个数, 用二分查找实现, 每次转移时间O(logn), 总时间O(nlogn) fill(g,?g?+?n,?infinity); for(int?i?=?0;?i??n;?i++){ int?j?=?lower_bound(g,?g?+?n,?a[i])?-?g; ??d[i]?=?j?+?1; ??g[j]?=?a[i]; } * jjjkk 变形1: 航线问题 有两行点, 每行n个. 第一行点和第二行点是一一对应的, 有线连接, 如下图所示 选择尽量多的线, 两两不交叉 * jjjkk 分析 设与第1行第i个点对应的是第2行第f[i]个点 假设ij, 两条线(i, f[i])和(j, f[j])的充要条件是f[i]f[j], 因此问题变成了 求f的最长上升子序列 时间复杂度为O(nlogn) * jjjkk 变形2: 两排列的LCS 给1~n的两个排列p1, p2 求p1和p2的最长公共子序列 例: 1 5 3 2 4 ? 5 3 4 2 1 * jjjkk 分析 算法一: 直接套用LCS算法, 时间O(n2) 算法二: 注意到把两个排列做相同的置换, LCS不变, 可以先把p1排列为1,2,3…,n 1 5 3 2 4 ? 1 2 3 4 5 即映射5?2, 2?4, 4?5, p2作同样置换 5 3 4 2 1 ? 2 3 5 4 1 与1,2,3..n的LCS显然是最长上升子序列, 时间降为O(nlogn) * jjjkk 推广: DAG上的最短路 “上升”依赖于序关系=, 它具有一般性 DAG(有向无环图)的最长路径问题: 把有向边看成偏序关系, 则本题的算法一仍然适用, 时间复杂度为O(n2). 如果图的边数m比较, 可进一步优化到O(m), 因为每条边恰好考虑一次(用邻接表或前向星, 而不是邻接矩阵) 算法二不再适用! 因为d值相同的a不一定可以两两相互比较, 不一定存在最小值. * jjjkk 四、最优三角剖分 给一个n个顶点的凸多边形, 有很多方法对它进行三角剖分(polygon triangulation) 每个三角形有一个权计算公式(如周长, 顶点权和), 求总权最小(大)的三角剖分方案 * jjjkk kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg kkkkk ggggg 《算法艺术与信息学竞赛》 标准课件 动态规划(一): 经典问题 刘汝佳 * jjjkk 目录 一、最长公共子序列O(mn) 二、最优排序二叉树O(n3) 三、最长上升子序列O(nlogn) 四、最优三角剖分O(n3) 五、最大m子段和O(mn) 六、0-1背包问题O(min{nc, 2n, n1.44n}) * jjjkk 一、最长公共子序列 Longest Common Sub

文档评论(0)

liuxiaoyu92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档