数据结构的提炼及压缩.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构的提炼与压缩 上海市上海中学 曹钦翔 指导教师:上海市上海中学 毛黎莉 数据结构的“化繁为简” 减少存储规模 化简存储结构 时空复杂度降低 处理方式多样 “化繁为简”的三种手段 提炼:忽略无效信息,减少存储规模 压 :调整存储方式,化简存储结构 缩 :合并重复信息,减少存储规模 1.二维结构的化简 问题一:Ural 1568 Train car sorting 问题描述:对于一个序列{an},定义一种操作,将{an}分成两个子列,把其中一个置于另一个前面,得到一个新的序列。现给出一个序列(这个序列是1到n的一个排列),求一种方案,通过最少的操作次数是它变成升序序列。 一个操作的例子 5 3 2 4 1 算法 优化数据结构 问题二:CEOI 2007 Day 2 Necklace 问题描述:要求编译一个库,能够对若干已知的整数串进行两个操作: (1)在某个已知串的左端或右端增加或减少一个元素,得到一个新的已知的串。 (2)输出某个已知串的最左端或最右端的数。 在问题的一开始,只有一个已知的串:空串。 分析 两个特例 数据结构:Left-Right Tree 添加新结点 删除结点 转化结论 已知树中某链的两端点,求底部端点的父亲 已知树中某链的两端点,求顶部端点在链中的儿子 2.树形结构的化简 问题五:问题二的遗留问题 问题描述:给定一棵有根树,在线回答两种询问: (1)已知树中某链的两端点,求底部端点的父亲 (2)已知树中某链的两端点,求顶部端点在链中的儿子 分析 数据结构:Supper Father 3.图结构的化简 问题六:ural 1557 Network Attack 问题描述:给定一个无向连通图,若从中删去两条边能使它不连通,求所有这样的方案的总数。图点数n边数m。 分析 两种情况 小结 谢谢 算法 原序列的最简母矩阵中偶数行的非零元素,形成一个子列,前置。 原序列的最简母矩阵中奇数行的非零元素,形成一个子列,后置。 形成新序列。 不断重复,直到的到升序列。 2.树形结构的化简 问题三:浙江2007年省选 捉迷藏 问题描述:给定一棵树,每个节点要么是黑色,要么是白色,能执行一个操作:把某一个点取反色。动态维护并返回树中距离最远的黑色点对。 分析 数据结构:括号编码 数据结构:括号编码 数据结构:括号编码 数据结构:括号编码+线段树 维护以下变量 dis(s) : {a+b|S’(a,b)是S的一个子串,且S’介于两个黑点之间} right_plus: max{a+b|S’(a,b)是S的一个后缀,且S’紧接在一个黑点之后} right_minus: max{a-b|S’(a,b)是S的一个后缀,且S’紧接在一个黑点之后} left_plus: max{a+b|S’(a,b)是S的一个前缀,且有一个黑点紧接在S之后} left_minus: max{b-a|S’(a,b)是S的一个前缀,且有一个黑点紧接在S之后} 数据结构:括号编码+线段树 利用以下公式实现合并:S=S1+S2,其中S1(a,b)、S2(c,d) dis(S)=max{right_plus(S1)+left_minus(S2),right_minus(S1)+left_plus(S2),dis(S1),dis(S2)} right_plus(S) =max{right_plus(S1)-c+d,right_minus(S1)+c+d,right_plus(S2)} left_plus(S) =max{left_plus(S2)-b+a,left_minus(S2)+b+a, left_plus(S1)} right_minus(S)=max{right_minus(S1)+c-d,right_minus(S2)} left_minus(S)=max{left_minus(S2)+b-a,left_minus(S1)} 问题三小结 最简母矩阵 称一个p*q的矩阵A为序列{an}的母矩阵,当且仅当,矩阵A中的所有非零元素,自上到下自左到右逐列读出得到{an} ,自左到右自下到上逐行读出得到升序序列。 称序列{an}的所有母矩阵中,行数列数都最小的那个矩阵为序列{an}的最简母矩阵。 最简母矩阵 DFS VS BFS 其一:性质上(结构决定性质),DFS遍历后的可以得到DFS树,图中的边在DFS树中要么是树边要么是回边;而BFS遍历后往往得到层状结构,图中的边要么连接同一层中的两个点,要么连接相邻两层的两个点。 其二:用途上(性质决定用途),DFS能较有效解决与连通性相关的问题(因为任意

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档