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. linq 跨库查询

    可以用多个DBContext,例如有DBContext1和DBContext2,但是不能将两个DBContext用在同一个查询中,可以分开,先用一个查出结果集1,再在第二个查询中使用结果集1就可以了

  2. MVC4.0系统开发新手历程(二)

    登录页 首先声明登录页不是我开发完成的 所以就简单的发下供大家参考 思路:由于是奖金系统,里面涉及到Money,所以在验证方面上下了很大的功夫,我看了下 主要的思想是 获取到那几个人会用到这个系统,然 ...

  3. Jetty直接调试,不用部署,不用弄一些杂七杂八的设置

    以前调试web程序的,搭建Tomcat实在是费劲,就想找一个比较简单的方式,我就想调试一下我写的某一个servlet形式,看到<how Tomcat works>这本书,才明白确实可以,不 ...

  4. ZOJ3765---Lights (Splay伸展树)

    Lights Time Limit: 8 Seconds      Memory Limit: 131072 KB Now you have N lights in a line. Don't wor ...

  5. Codeforces Round #272 (Div. 1) Problem C. Dreamoon and Strings

    C. Dreamoon and Strings time limit per test 1 second memory limit per test 256 megabytes input stand ...

  6. Ext中窗体第二次点击报错或者其内控件不显示的问题,弄了2天才解决,记录下

    registerPanel.js: registerPanel = new Ext.form.FormPanel({ id:'registerPanel', layout:'form', autoHe ...

  7. Matlab画图常用的符号和颜色

    线型 说明 标记符 说明 颜色 说明 - 实线(默认) + 加号符 r 红色 -- 双划线 o 空心圆 g 绿色 : 虚线 * 星号 b 蓝色 :. 点划线 . 实心圆 c 青绿色 x 叉号符 m 洋 ...

  8. VS 代码段 自定义

    <?xml version="1.0" encoding="utf-8"?> <CodeSnippets xmlns="http:/ ...

  9. CGI、FastCGI和php-fpm的区别

    参考网上的描述,将网上的描述内容,整理进来: 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者.web server(比如说nginx)只是 ...

  10. StoryBoard 加入一个自定义View

    1. 建一个 UIView的子类(MyView.h/MyView.m) 2. 建一个 View类型的XIB 3. 把xib的file‘s owner设为MyView 4. 在.h文件里加上 @prop ...