[发明专利]一种适应于快速数据查找的树形链表及其生成算法无效
申请号: | 02114650.0 | 申请日: | 2002-06-28 |
公开(公告)号: | CN1387119A | 公开(公告)日: | 2002-12-25 |
发明(设计)人: | 李卫;管晓宏 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F7/08 | 分类号: | G06F7/08;G06F7/00 |
代理公司: | 西安通大专利代理有限责任公司 | 代理人: | 徐文权 |
地址: | 710049*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种适应于快速数据查找的树形链表及其生成算法,主要通过两个基本操作来实现,即增加关键字的add_key操作和删除一个关键字的del_key操作;反复进行这两个操作可以生成整棵树形链表,由于随着半导体技术的进步,内存等硬件的价格大幅度下降,本发明通过计算机算法中的“空间换时间”原则,对关键字集合K,构造专用数据链表,从而使得查找速度大大加快,使算法的性能只与N有关,与N是线性关系,而与k和SIZE(pi)无关;匹配算法简单,只需要几条汇编指令就可以完成。 | ||
搜索关键词: | 一种 适应 快速 数据 查找 树形 及其 生成 算法 | ||
【主权项】:
1、一种适应于快速数据查找的树形链表,其特征在于:树形链表是基于有限自动机DFA的,定义如下:S(afinitesetofstates):匹配过程所处的状态即每一个状态对应一个节点,对一个给定的关键字集P,其最大值是L,状态记录了扫描过程中对各个关键字pi的匹配状况;E(analphabet):0-255,即表达一个字节的内容;s(initialstate):空字符状态,即未读入任何字符状态,空字符状态s∈S;F(finialstate):最终状态集,其中每一个元素表示当匹配到某个关键字时所处的状态,FS;g(transitionfunction):S×E->S,读入一个新字符时,状态机状态转移的函数为g(A,a)=B,表示读入a使状态机从状态A转移到状态B;本树形链表实现的关键是找到一个满足定义的g的实现;树形链表的构造在DFA的构造中g的设定:(1)同一个关键字之内的状态转移设关键字为a1a2a3a4...an;每一个字符定义为DFA树形链表的一个状态,表示对该关键字进行匹配时所处的匹配位置,ai对应的状态称为Ai;则g的定义是:g(Ai,ai)=Ai+1在树形链表的DFA中,表现为连接一个关键字各个字符的链,成为树的一个分支;(2)当有两个关键字A和B时的状态转移假设:关键字A=a1a2a3...aiai+1ai+2ai+3...ajaj+1...an关键字B=aiai+1...ajb1b2...bm则称关键字B前缀包含于A,即B的前缀aiai+1...aj包含在A中,记为PrefixIn(B,A)=true,或A->B,否则PrefixIn(B,A)=false;PrefixIn是设定“交叉链接”的依据;定义PrefixInStr(B,A)=aiai+1...aj即包含的前缀部分;首先,按同一关键字之内的状态转移确定状态和g,即先确定关键字内的状态转移关系;如果A和B之间没有PrefixIn关系,则g的构造结束;如果两个关键字有PrefixIn关系,设PrefixIn(B,A)=true,且关键字A=a1a2a3...aiai+1ai+2ai+3...ajaj+1...an;关键字B=aiai+1...ajb1b2...bm对应于关键字A的各个状态记为Aa1,Aa2,...Aan;对应于关键字A的各个状态记为Ba1,Ba2,...Baj,Bb1,Bb2,...Bbm;在匹配关键字A的同时也在检查是否同时匹配B,在匹配到状态Aaj的时候,如果读入的下一个字符是b1,则下一状态为Bb1,即应添加g(Aaj,b1)=Bb1在树形链表的DFA结构中,表现为从A的链中指向B的链中的一个“交叉链接”;(3)三个以上关键字A,B,C的情况如果任意两个关键字之间没有PrefixIn关系,按同一个关键字之内的状态转移处理,如果同时最多有两个关键字之间有PrefixIn关系,即仅有小于等于两个PrefixIn关系时,则按两个关键字A和B时的状态转移处理,同时有三个PrefixIn关系的情况,设PrefixIn(B,A)=true,且Prefix(C,A)=true,那么有g(Ax,bz)=Bzg(Ay,cz)=Cz情况1:如果Ax≠Ay,则没有冲突情况发生,按两个关键字A和B时的状态转移处理;情况2:如果Ax=Ay,且bz≠cz则也不会有冲突情况发生,直接设置g(Ax,bz)=Bz,g(Ax,cz)=Cz即可;情况3:如果Ax=Ay,且bz=cz,则会有冲突情况发生,即g(Ax,bz)=Bzg(Ax,bz)=Cz如果有冲突的情况发生,B,C之间必有PrefixIn关系,设PrefixIn(B,C)=true,则去掉g(Ax,bz)=Bz这个链接,保留g(Ax,bz)=Cz。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/02114650.0/,转载请声明来源钻瓜专利网。
- 上一篇:宽波段、高偏振度金属线栅型红外偏振片
- 下一篇:无铅喷金料及其制备方法
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置