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. jquery 实现全选反选

    jquery代码 $(function () { $('#inputCheck').click(function () { if ($(this).attr("checked")) ...

  2. cf442B Andrey and Problem

    B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  3. CoreData Multiple Context性能分析-读书笔记

    From: http://floriankugler.com/blog/2013/4/29/concurrent-core-data-stack-performance-shootout  http: ...

  4. POJ1159 Palindrome(数位DP)

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 58277   Accepted: 20221 Desc ...

  5. c指针点滴1

    #include <stdio.h> #include <stdlib.h> void main() { ; int *p = &num;//&num是一个地址 ...

  6. jquery ajax提交json格式的数据,后台接收并显示各个属性

    我的表单如下: <form onsubmit="return false"> <ul> <li><span>用户名</span ...

  7. C# 酒鬼买酒喝,瓶盖和空瓶子可以换新的酒

        using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...

  8. pyqt小例子 treewidget

    # -*- coding: cp936 -*- from PyQt4.QtCore import * from PyQt4.QtGui import * class InlineEditor(QWid ...

  9. iOS中的界面多选功能--(UICollectionView)

    文/Jacob_Pan(简书作者)原文链接:http://www.jianshu.com/p/9d28ebd0f5a2著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近做项目接触了一 ...

  10. stat(),lstat(),fstat() 获取文件/目录的相关信息

    stat 的使用 Linux有个命令,ls -l,效果如下: 这个命令能显示文件的类型.操作权限.硬链接数量.属主.所属组.大小.修改时间.文件名.它是怎么获得这些信息的呢,请看下面的讲解. stat ...