Reference:
[1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Documents.
[2]M. Qiao, L. Qin, H. Cheng, J. X. Yu, W. Tian. Top-K Nearest Keyword Search on Large Graphs.
 

 
 
假设原树如Figure4所示;节点上有t的即为关键词节点;节点上的数字表示在树的先序遍历中的次序;祖先节点的先序序号一定比子孙节点的先序序号小;

 
CT树:有两类节点,第一类是关键词节点{2、5、9、23};第二类是至少含有两个含有关键词的直接子树的节点{3、1}(为了保证树的连通性)
 
下面是构造CT树的伪码,由两步构成,第一步在原树中找出所有CT树的节点,第二步将这些节点建成树
 
 
注释:For each node u in the data tree T, we use W(u) to represent the set of keywords associated with u. Let U(w) be the set of nodes inT that include word w.
 
1step:即找出CT树的两类节点
1line:S = {带关键词w的节点}     //第一类节点
2line:对S中的节点以其在原树中的先序访问次序按升序进行排序
3, 4line:对在S中的连续的两个关键词节点{u,v},求LCA,并将其加入S末尾;所有关键词处理完时停止;     //第二类节点
 
 
注释:For each node u of T, define its rank, denoted as rank(u), to be the sequence number of u in the pre-order traversal of T. We associate u with an interval R(u)=[x, y], where x is the rank of u, and y is the largest rank of the nodes in sub(u).
 
2step:
1line:对S中的节点以其在原树中的先序访问次序按升序进行排序
5line:若R(v)与R(u)不相交,说明v、u不在以v为根的子树下,即v、u之间没有边
 
本质上,步骤二按先序访问顺序构造出了CT树,并利用先序区间确定父节点
 
ECT树:
     改变节点:考虑在CT树上的边{u,v},如{1,23},在原树中走{1->17->18->22->23},NN(1) = {2} != NN(18) = {23},18为改变节点(即第一个与NN(u)不同的点);
 
     ECT树为在CT树上加入改变节点后的树;
 
     思考:在CT树上的边{u,v}的NN,只会有两种可能,NN(u),NN(v),因此,改变节点在每个CT边上至多有一个
     作用:用于求解使得相同先序区间为同一个NN
 
对于边{u,v}求改变节点所在的层,注意这里的层的意思是:根节点到节点的边数(相当于边的权值为1)
 
 
 
可以这么理解
 
 
 
再看图
 
 
 
 
其实求的是距离NN(u)以及NN(v)“相等”的层,即为改变节点所在的层
 
下面是构造ECT树的伪码
 
 
 
1line:即为了后继对边进行宽度优先遍历
2line:没用,在6line也会求NN(u),可每次循环判断u是否改变,决定是否重新计算NN(u)
6line:如下图所示,NN(v) = { NN(u) or NNsub(v) };若pre_order(NN(u)) >= pre_order(NNsub(v)),那么NN(u)在(2)区域中,
则NN(u) == NNsub(v)==NN(v);若pre_order(NN(u)) < pre_order(NNsub(v)),那么NN(u)在(1)区域中,则需要判断dist(NNsub(v), v)及
dist(v, NN(u))的距离,哪个更小,取更小的节点作为NN(v)
 
7line:若NN(u) = NN(v),则{u, v}边上没有改变节点
9line:否则利用前述公式求出改变节点所在的层,在原树{u, v}路径上执行a level-on-path query即可求出改变节点z(注意:若边权值不为1,你不可以这么做)
11line:将{u, z},{z, v}加入ECT树
 

读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)的更多相关文章

  1. 读论文系列:Deep transfer learning person re-identification

    读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...

  2. 读论文系列:Object Detection SPP-net

    本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivat ...

  3. 读论文系列:Object Detection NIPS2015 Faster RCNN

    转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...

  4. 读论文系列:Object Detection CVPR2016 YOLO

    CVPR2016: You Only Look Once:Unified, Real-Time Object Detection 转载请注明作者:梦里茶 YOLO,You Only Look Once ...

  5. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...

  6. 读论文系列:Object Detection ICCV2015 Fast RCNN

    Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...

  7. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  8. Kaldi的关键词搜索(Keyword Search,KWS)

    本文简单地介绍了KWS的原理--为Lattice中每个词生成索引并进行搜索:介绍了如何处理OOV--替补(Proxy,词典内对OOV的替补)关键词技术:介绍了KWS的语料库格式:介绍了KWS在Kald ...

  9. (读论文)推荐系统之ctr预估-NFM模型解析

    本系列的第六篇,一起读论文~ 本人才疏学浅,不足之处欢迎大家指出和交流. 今天要分享的是另一个Deep模型NFM(串行结构).NFM也是用FM+DNN来对问题建模的,相比于之前提到的Wide& ...

随机推荐

  1. java web: eclipse & maven & jetty & struts2 & mysql = 简单登录页面

    第一次接触java web开发,花费了一天半的时间,写了个简单的登录页面,以此文为记. 开发工具 Eclipse Luna Release (4.4.0) 已集成maven,maven目前的体会就是管 ...

  2. 深入理解Java的protected修饰符

    其实Java的protected修饰符,权限定义的很微妙,大致有以下几种: (1)protected控制符用于修饰方法和成员变量: (2)一个类的protected方法或成员变量,在包外是不能通过该类 ...

  3. 2015第19周三小众app

    今天搜集下个人知道好玩的小众app: 1.开眼每日推荐5个小视频,世界那么大,一起来看看吧. 2.懒人周末周末去哪了?简洁美观 3.LOFTER 网易良心出品. 4.玩儿去 发现很多很多好玩的去处 5 ...

  4. Oracle查询死锁&杀死会话

    select object_name,machine,s.sid,s.serial#  from v$locked_object l,dba_objects o ,v$session s where ...

  5. hdu1695:数论+容斥

    题目大意: 求x属于[1,b]和 y属于[1,d]的 gcd(x,y)=k 的方案数 题解: 观察发现 gcd()=k 不好处理,想到将x=x/k,y=y/k 后 gcd(x,y)=1.. 即问题转化 ...

  6. EL表达式使用之类switch语句

    http://blacksonny.iteye.com/admin/blogs/1879878

  7. c++ 依据输入动态声明数组(一维,二维)

    较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...

  8. DIV+CSS 自适应布局

    两栏布局,左边定宽200px,右边自适应.如何实现?我的第一个反应就是:用flex伸缩盒呀,然后balabala...说完之后,面试官说,还有没有别的方法?flex有些浏览器不支持嗯...我愣了一下, ...

  9. unity音频组件

    unity 支持的四种音频格式: .AIFF  适用于较短的音乐文件可用作游戏打斗音效 .WAV  适用于较短的音乐文件可用作游戏打斗音效 .MP3  适用于较长的音乐文件可用作游戏背景音乐 .OGG ...

  10. (四)CodeMirror - API

    内容相关 cm.getValue() cm.setValue() cm.getRange() editor.getRange({line:1},{line:2}) // 获取内容块字符 cm.repl ...