以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  3.3要求对应画出后边fig.3那个图  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=64443)


--  作者:leyu521
--  发布时间:7/7/2008 6:52:00 PM

--  3.3要求对应画出后边fig.3那个图
313 XPath查询执行器中查询的动态增加

基于转换累计自动机
,我们给出查询集合动态
增加过程中查询执行器的调整算法
1已有的查询自
动机也可以看做是采用动态增加的策略来构建的


输入
: XPath查询
p;查询集合自动机
A =

(b)自动机
B; (c)自动机
C1 ,F1 ,C1)1
输出
:增加了查询
p之后的转换累计自动机
A 1
步骤
11根据查询
p,构造特定查询自动机
P =
(Q2 ,Σ2 ,i2 ,δ2 ,F2 ,C2);
步骤
21查询自动机
P执行确定化操作
,对于
P的每个状态转换
t,t [count] =1 ;

步骤
31自动机
A的初始状态
i1标记为待处理
状态
a,i1状态在自动机
P的对应状态
i2作为待处
理状态
p;

步骤
41假定自动机
P当前状态
p,转换规则
tp:{ p} -D1 →{p1};自动机
A当前状态
a,转换规

ta:{ a} -D2 →{a T 1} 1则
:

步骤
4111如果
D1和
D2没有交集
,则自动机
A增加状态转换
t :{ a} -D1 →{ ap1 },t [count] =
1 ,同时
A中的状态集合增加
{ ap1 },A中数据输入
集合增加
{D1 } 1 ap1状态标记为待处理状态
, ap1
状态在
P中的对应状态为
p1 ;

步骤
4121如果
D1和
D2等价
,自动机
A中
ta
[ count ] = ta [count] +11标记
a1状态为待处理状

,a1状态在
P中的对应状态为
p1 ;

步骤
4131如果
D1和
D2存在交集
,但是并不
完全等价
,令
D11 = D1 ∩D2 ,D12 = D1-D2 ,D13 =
D2-D1 ,则自动机
A增加状态转换
t1= { a} -D11

→{a1 p1},t1 [ count ] = ta [count] + tp [count],标

a1 p1状态为待处理状态
,a1 p1状态在
P中的对
应状态为
p1 ;修改转换
ta为转换
{ a} -D12 →{a2},
其中转换累计不变
;增加转换
t2 :{ a} -D13 →
{ ap1},t2 [ count ] =1 ,标记
ap1状态为待处理状

, ap1状态在
P中的对应状态为
p1 ,同时增加

计算机研究与发展 
2005 , 42 (5)

774

{ ap1}到
R中的状态集合
,增加
{D13 }到
R的数据
集合
;

步骤
51按照步骤
4重复处理自动机
A的所有
待处理状态
,直到完毕为止
1

分析上述流程
,我们知道在增量过程中产生新
状态是增量计算复杂性的根源所在
,而新状态的产
生主要来源于
XPath查询的

∥”和“
3 ”操作符号
1
314 XPath查询执行器中查询的动态删除

给定
XPath查询
p,如何在查询集合自动机中
删除查询
p所关联的状态和转换是本节所研究的
一个问题
1这个过程相当于动态增加的逆过程
1按
照前面的分析
,实现动态删除可能的操作包括在查
询集合自动机中定位被删除的特定查询自动机的相
关状态转换
,减少关联状态转换的计数
,删除计数为
0的状态转换


1下面,给出整个算法的具体描述1
算法21 XPath查询的动态删除1
输入:XPath查询p ;查询集合自动机A 1
输出:删除查询p后的查询集合自动机A 1
目1图3说明增量维护之后的查询集合自动机在空
间代价上并不能等价于直接构建得到的查询集合自
动机1
Fig1 3 The illustration of the problem on redundancy
space1 (a) Automata A ; (b) Automata B ; (c) Automata
C ; and (d) Automata D1
图3 空间冗余问题示意1 (a)自动机A ; (b)自动机B ;
(c)自动机C ; (d)自动机D
②特定查询自动机
①根据查询构造特定查询自动机P;
P执行确定化操作
;
③获取查询集合自动机
A的初始状态
a1和特
定查询自动机
P的初始状态
p1 ;
④假定自动机
P在状态
p1上接受数据
D转
换到状态
p2 ,查询集合自动机
A按照状态转换
ta
在状态
a1上接受数据
D转换到状态
a2 ,
ta [count] = ta [count] -1 ,如果
ta [count] =0 ,则
删除转换
ta;

⑤递归处理下一个状态对
(a2 ,p2 ),直到自动

P到达终止状态
1

315 转换自动机删除后空间冗余问题

以上两节提出的增量维护策略能够正确调整查
询执行器
,从而满足最新查询集合的要求
1但是
,增
量维护可能带来查询执行器内部空间冗余
,我们通
过一个例子说明这个问题



21 XPath查询
p1
1= ∥a, XPath查询
p2=
PaPb,我们分别构造图
3中确定化的查询自动机
A

B,执行合并操作
,获得了查询自动机
C,在查询
自动机
C中删除查询自动机
B,得到查询自动机


D 1
我们没有在自动机
C中注明转换累计
1实际

,自动机
C中状态
“13”到状态
“23”转换的计数是
2 ,状态
“23”到状态
“15”转换的计数是
21自动机
A
和自动机
D在表达能力方面是一致的
,也都是确定
自动机
1但是
,自动机
D的状态和状态转换规则数
目都远远大于自动机
A的状态和状态转换规则数
按此在新窗口浏览图片
我们以图
3为例分析上述问题出现的原因
1自
动机
D中“24”状态接受数据
b, a,[all -a -b]转
换到新的状态
1自动机
A中“1”状态接受数据
a和
[ all -a]转换到新的状态
1数据集合划分得越细
,
自动机中状态和状态转换规则数目越多
1在
XML
数据流处理环境中
,由于系统资源有限
,避免空间冗
余是很必要的
1我们进一步分析这一问题
,发现支
持数据集合的状态转换规则在查询追加过程中产生
大量新状态和新状态转换规则是空间冗余产生的
原因


1
在当前的
XML数据流环境中
,XML数据大都
遵循
D TD或者
XML Schema模式的约束
1XML数
据模式会对查询处理器的增量维护产生两方面的影

:一方面
,由于增量操作不会产生大量新的状态
,
因而
XPath增量增加步骤的时间复杂性会显著降
低1基于本文提出的转换累计自动机
,新增查询的
作用主要体现在状态转换之上累计值的增加
1另一
方面
,由于增加过程不会产生大量的无效状态
,删除
操作不会产生明显的空间冗余问题
1我们通过实验
证明了上述结论

3.3要求对应画出后边fig.3那个图


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms