第10-12章习题课分析教学内容.ppt
《第10-12章习题课分析教学内容.ppt》由会员分享,可在线阅读,更多相关《第10-12章习题课分析教学内容.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第10-1210-12章章习题课分析分析第1题请设计一个字典,支持下列的操作:INSERTx:插入一个字符串xFINDx:返回一个bool 值,表示字符串是否存在请设计一个这样的字典,并且介绍其优点和缺点。注意:字符串本身可能比较长;字符串的个数在105个左右。2答案考考查知知识点:点:开散列开散列方案:考方案:考虑到字符串很多的因素,采用到字符串很多的因素,采用拉拉链式式Hash表表解决,解决,用一个用一个Hash函数函数进行行寻址址;考考虑到字符串很到字符串很长的因素,的因素,在插入的在插入的时候用另一个候用另一个Hash函数来函数来给每一个字符串一个每一个字符串一个ID,相同的字符串相
2、同的字符串ID一定相同,不同的字符串也有一定概率一定相同,不同的字符串也有一定概率ID相同,相同,在在查找找时,仅需考需考虑ID相同的串来确定是否串相同的串来确定是否串X存在,存在,避免了大范避免了大范围的的查找,和大量找,和大量长字符串匹配字符串匹配。3第2题现在有一个文本在有一个文本编辑器,具有如下的操作:器,具有如下的操作:MOVEk:将光:将光标移移动到第到第k个字符之前,如果个字符之前,如果k=0,那么移,那么移动到文档开到文档开头PRINTn:输出光出光标之后的之后的n个字符个字符PREV:光:光标前移一位前移一位NEXT:光:光标后移一位后移一位4(1)请基于基于线性数据性数据结
3、构构设计一套合理的算法,来一套合理的算法,来实现这些操作,并且分析每个操作的性能。假定:文些操作,并且分析每个操作的性能。假定:文本最大的本最大的长度度为Lh2:14那么,那么,为了了满足足红黑黑树性性质,我,我们令令T2的根的根结点点为多多(h1-h2+1)黑黑结点。我点。我们可以利用可以利用红黑黑树的的删除算除算法中法中对双黑双黑结点点处理的方法同理的方法同样处理理T2的根的根结点,点,即令其从即令其从(h1-h2+1)黑黑结点,点,变为(h1-h2)黑黑结点点直直至至为单黑黑结点,那么就点,那么就变成了一棵正常的成了一棵正常的红黑黑树。15双黑结点的调整双黑结点的调整假假设X是左子是左子
4、结点(若点(若X为右子右子结点,点,处理方法理方法类似,不重述)似,不重述)情况情况1:双黑结点的兄弟C是红色,执行旋转操作(黑红)!推出:推出:B结结点也一定是黑色,点也一定是黑色,和和也是黑色也是黑色旋旋转转:兄弟:兄弟节节点点为为根根变变黑,父黑,父节节点点变红变红X结结点仍是点仍是“双黑双黑”结结点,点,转转化化为为情况情况2,3北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法BCXXBC双黑结点16情况情况2:兄弟是黑色,且有两个黑子结点(黑黑黑)执执行行换换色操作,把色操作,把C
5、着着红红色,色,B着黑色着黑色如果如果B原原为红为红色,色,则则算法算法结结束束否否则则,对对B继续继续作作“双黑双黑”调调整(整(为为什么?什么?)BXEDCBCEDX北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法有可能继续双黑处理17双黑结点的调整双黑结点的调整情况情况3:兄弟C是黑色,且子结点有红色(黑黑红)(a)旋旋转重构:重构:侄子侄子红结点八字外撇点八字外撇将兄弟将兄弟结结点点C提上去,提上去,继继承原父承原父结结点的点的颜颜色色然后把然后把B着着为为黑色,黑色,D着着为为黑色
6、,其他黑色,其他颜颜色不色不变变即可即可BDXCDXBC单旋转调整单旋转调整北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法18(b)旋旋转重构:重构:侄子侄子红结点同点同边顺将将C结结点旋点旋转为转为D结结点的父点的父结结点,点,C继继承原子根承原子根B的的颜颜色,色,B着着为为黑色黑色BXEDCDBCXE北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法1911.6.3插入算法插入算法先
7、先调调用用BST的插入算法,将待插的插入算法,将待插记录记录定位定位新记录X着色为红色若父若父结结点是黑色,点是黑色,则则算法算法结结束束否否则则,双红调整6 6386 6384XAAX插入插入4北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法20双红调整双红调整1:红黑旋转红黑旋转情况情况1:新增结点X的叔父结点是黑色,或者NIL调调整后:祖整后:祖节节点点变为变为黑,父、叔黑,父、叔节节点点变为红变为红!每个每个结结点的点的阶阶都保持原都保持原值值,调调整完成整完成保持保持树树的的稳稳定
8、性!定性!X以祖结点为轴旋以祖结点为轴旋转父结点转父结点AXBB BA AC CC C北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法214种形式的结构调整种形式的结构调整原原则则:保持:保持BST的中序性的中序性质质2 2466 624264 4提升操作旋转操作北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法22双红调整双红调整2:红红换色红红换色情况情况2:新增结点X的叔父结点也是红色
9、X父祖换色父祖换色叔父变黑叔父变黑AXBB BA AC CC对B继续红红检查北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院北京大学信息科学技术学院数据结构与算法数据结构与算法数据结构与算法数据结构与算法如果B是根节点,则只叔父节点变色,根节点不变!2324第第10章章检索索第第11章章索引索引第第12章章高高级数据数据结构构25提供广提供广义表的下列操作表的下列操作make_GList(a,b,c.);将任意多个广将任意多个广义表表连接成一个新的广接成一个新的广义表表head(gList);取广取广义表表头tail(gList);取广取广义表尾;表尾;要求要求设计一个
10、算法,将广一个算法,将广义表置逆,不能使用其他数表置逆,不能使用其他数据据结构。比如,构。比如,对于广于广义表表(a,(a,b,c),(b,(d),置逆之置逆之后的后的结果果为:(d),b),(c,b,a),a);26解:直接用解:直接用递归即可。即可。GListreverse(gList)Returnmake_Glist(reverse(tail(gList),reverse(head(gList)272.假定假定经过分分词后的网后的网页已已经形成了倒排索引,使用形成了倒排索引,使用trie树作作为词典,叶子典,叶子结点会有指向倒排表的指点会有指向倒排表的指针,倒排表是按照网倒排表是按照网页
11、文档文档id(连续的整数的整数值)排好序的。)排好序的。现在需要系在需要系统支持支持简单的布的布尔查询。请写出以下算写出以下算法的代法的代码或或伪代代码,并分析复,并分析复杂度度28I.Keyword1andkeyword2II.Keyword2andnotkeyword2III.如果需要支持相如果需要支持相邻查询,例如,例如keywordandkeword2neardistance,distance代表代表词与与词之之间的距离,需要怎的距离,需要怎样更改倒排索引表,支更改倒排索引表,支持持这一需求?一需求?29答案答案1、用、用trie树可以在可以在O(length(string)的的时间内
12、找到内找到单词所所对应的倒排表的位置。的倒排表的位置。根据根据这一点,一点,设计如下代如下代码。设A1.AN为第一个第一个单词的文档,的文档,B1.BM为第二个第二个单词的文档的文档303132333.AVL树和和红黑黑树的高度的高度A.高度高度为h的的AVL树上的最少上的最少结点个数是多少?最多点个数是多少?最多结点个数是多少?点个数是多少?B.高度高度为h的的红黑黑树上的最少上的最少结点个数是多少?最多点个数是多少?最多结点个数是多少?点个数是多少?3435BBh=5,为奇数时,树的阶为,为奇数时,树的阶为k=inth/2k=2k=136h=6,为偶数时,树的阶为,为偶数时,树的阶为k=i
13、nth/2k=3Bk=2k=137Bh=6,为偶数时,树的阶为,为偶数时,树的阶为k=inth/2k=3k=2B384.KD树和和PR四分四分树都可以支持区域都可以支持区域查找。找。请问两者有什么两者有什么优劣劣势?391、k-d树树 k-d树是一种用于多是一种用于多维检索的索的树结构,它的每构,它的每一一层都根据特定关都根据特定关键码将将对象空象空间分解分解为两个两个顶层结点按一个点按一个维划分划分第二第二层结点按照另一点按照另一维进行划分行划分以此以此类推在各个推在各个维之之间反复反复进行划分行划分最最终当一个当一个结点中的点数少于点中的点数少于给点的最大点数点的最大点数时,划分划分结束束
14、识别器(discriminator)在每一在每一层用来用来进行决策的关行决策的关键码称称为识别器器对于于k维关关键码,在第,在第i层把把识别器定器定义为imodk例如,例如,对一个三一个三维的关的关键码做做检索,索,3个关个关键码(x,y,z)标号分号分别为0、1、2第一第一层是是0mod3=0,所以使用关,所以使用关键码x,第二第二层是是1mod3=1,所以使用关,所以使用关键码y结点的分配结点的分配在在结点分配的点分配的时候首先比候首先比较该层的的识别器器如果关如果关键码小于小于识别器的器的值就放到左子就放到左子树中中否否则放到右子放到右子树然后在下一然后在下一层使用新的使用新的识别器来判
15、断每个器来判断每个结点点的的归属属识别器的器的值应该尽量使得被划分的尽量使得被划分的结点大点大约一一半落在左子半落在左子树,另一半落在右子,另一半落在右子树K-DK-D树示例树示例K-D树的空间分解树的空间分解上上图是一个二是一个二维的的k-d树,取,取值范范围为100100之内之内k-dk-d树的每个内部的每个内部结点点把当前的空把当前的空间划分划分为两两块,交替地,交替地对两个两个维进行划分行划分根根结点把空点把空间划分成两部分划分成两部分其子其子结点点进一步把空一步把空间划分成更小的部分划分成更小的部分子子结点的划分点的划分线不会穿不会穿过根根结点的划分点的划分线 k-d树中的中的这些些
16、结点最点最终把空把空间分解分解为矩形矩形这些矩形是些矩形是结点可能落到的各子点可能落到的各子树范范围K-D树的不足 其其结构与构与输入数据的入数据的顺序也是有关的序也是有关的有可能有可能导致它每个子致它每个子树的元素分配不均衡的元素分配不均衡Bentley和和Friedman发明了明了adaptivek-d树,类似于似于BST所有的数据所有的数据记录都存都存储在叶在叶结点点内部内部结点只是用来在各个点只是用来在各个维之之间导航航每一个每一个识别器的器的选择不再依不再依赖于于输入的数据入的数据尽量选择让左右子树的记录数目相等的值 2、PR四分树四分树 PR四分四分树,即点,即点-区域四分区域四分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 12 习题 分析 教学内容
限制150内