一种基于双数组TRIE树的医疗数据空间分配方法和装置制造方法及图纸

技术编号:38546809 阅读:13 留言:0更新日期:2023-08-22 20:55
本发明专利技术公开了一种基于双数组TRIE树的医疗数据空间分配方法和装置,涉及医疗数据处理技术领域。其中,所述方法包括:获取构建TRIE树的所有节点信息,根据所述所有节点信息对字符频率进行逐一统计;按照所述字符频率的大小关系对所有字符进行倒序排列,生成字符码表;从所述字符码表进行字符映射,基于静态的双数组建树方法构建双数组TRIE树;当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果在所述字符码表内,判断所述字符在所述双数组TRIE树中,跳转到所述字符。本发明专利技术能够有效压缩双数组TRIE树的空间占比,增加医疗数据的存储利用效率。增加医疗数据的存储利用效率。增加医疗数据的存储利用效率。

【技术实现步骤摘要】
一种基于双数组TRIE树的医疗数据空间分配方法和装置


[0001]本专利技术涉及医疗数据处理
,具体涉及一种基于双数组TRIE树的医疗数据空间分配方法和装置。

技术介绍

[0002]TRIE树(又叫前缀树)作为一种常见的数据结构,是词典、大规模关键字的一种重要索引结构,由于其查找效率很高,被广泛应用在大量的模式匹配业务中。其中,双数组TRIE树凭借其低资源占用,超高的执行效率被大量系统采用。
[0003]双数组TRIE树是由两个数组来表示一个TRIE树,双数组TRIE树结构由两个整型数组组成,如图 1 所示,其中一个为节点数组(又称Base 数组),另一个为检查数组(又称Check 数组),二者中的元素一一对应。Base 数组中的每一个元素相当于 TRIE 树中的一个节点,存储转移到其子节点的基值;Check 数组用于检查该子节点对应的父节点是哪一个节点,用于判断状态转移的正确性。
[0004]其中的元素通过ascii或unicode编码转换为int表示,比如,a = 97, b=98
ꢀ…ꢀ
;其状态转移方程为:
[0005] check[base[s] +c] =s
[0006] base[s] +c=t
[0007]其中,s为当前状态, t为当前状态接受一个字符c后的状态。
[0008]现有技术中,双数组TRIE树常常使用字符的ascii编码或unicode编码直接做为其跳转表示。对于英文来说,由于字母较少,可以形成较为紧凑的编码体系。但是,对于中文等以unicode编码的字符集,其元素非常的多,如果简单的使用unicode编码映射为跳转字符,会导致树的层级非常的稀疏,从而产生大量的空间浪费,医疗数据的存储利用效率较低。

技术实现思路

[0009]为至少在一定程度上克服相关技术中存在的技术问题,本专利技术提供了一种基于双数组TRIE树的医疗数据空间分配方法和装置。
[0010]第一方面,本专利技术实施例提供的一种基于双数组TRIE树的医疗数据空间分配方法,包括以下步骤:
[0011]获取构建TRIE树的所有节点信息,根据所述所有节点信息对字符频率进行逐一统计;
[0012]按照所述字符频率的大小关系对所有字符进行倒序排列,生成字符码表;
[0013]从所述字符码表进行字符映射,基于静态的双数组建树方法构建双数组TRIE树;
[0014]当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果在所述字符码表内,判断所述字符在所述双数组TRIE树中,跳转到所述字符。
[0015]进一步地,所述所有节点包括第一节点、第二节点和第三节点,所述基于静态的双数组建树方法构建双数组TRIE树的步骤,具体包括:
[0016]将所述第一节点及其对应的子节点放置于所述双数组TRIE树内;
[0017]将所述第二节点放置于所述双数组TRIE树内,所述第二节点的Check值为所述第一节点的Base索引值,所述第二节点的Base索引值为所述第二节点的后续节点计算偏移值的起始Base节点;
[0018]将所述第三节点合并到所述双数组TRIE树中,所述第三节点的Base索引值为所述第三节点的子节点计算偏移值的起始Base节点。
[0019]进一步地,所述方法还包括:
[0020]按照广度优先策略将每个节点和所述每个节点直接对应的子节点作为一个分配单元,进行双数组TRIE树的构建;
[0021]在计算所述节点的Base索引值时,表示出所述节点及其对应子节点的相对位置;
[0022]将Base索引值为2的节点作为子节点偏移起始值进行计算,搜索并检查所述节点对应的所有子节点所占的位置是否为空闲空间;
[0023]如果所有子节点所占的位置不都为空闲空间,跳转到下一Base索引值的节点,继续搜索并检查;
[0024]直到所有子节点所占的位置都为空闲空间,将当前Base索引值作为当前节点的Base索引值,并更新到所述双数组TRIE树中。
[0025]进一步地,所述方法还包括:
[0026]当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果不在所述字符码表内, 判断所述字符不在所述双数组TRIE树中,跳转失败。
[0027]第二方面,本专利技术实施例提供的一种基于双数组TRIE树的医疗数据空间分配装置,包括:
[0028]获取统计模块,用于获取构建TRIE树的所有节点信息,根据所述所有节点信息对字符频率进行逐一统计;
[0029]医疗码表生成模块,用于按照所述字符频率的大小关系对所有字符进行倒序排列,生成字符码表;
[0030]构建模块,用于从所述字符码表进行字符映射,基于静态的双数组建树方法构建双数组TRIE树;
[0031]匹配跳转模块,用于当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果在所述字符码表内,判断所述字符在所述双数组TRIE树中,跳转到所述字符。
[0032]进一步地,所述所有节点包括第一节点、第二节点和第三节点,所述构建模块,具体包括:
[0033]第一放置模块,用于将所述第一节点及其对应的子节点放置于所述双数组TRIE树内;
[0034]第二放置模块,用于将所述第二节点放置于所述双数组TRIE树内,所述第二节点的Check值为所述第一节点的Base索引值,所述第二节点的Base索引值为所述第二节点的后续节点计算偏移值的起始Base节点;
[0035]合并模块,用于将所述第三节点合并到所述双数组TRIE树中,所述第三节点的Base索引值为所述第三节点的子节点计算偏移值的起始Base节点。
[0036]进一步地,所述装置还包括:
[0037]单元分配模块,用于按照广度优先策略将每个节点和所述每个节点直接对应的子节点作为一个分配单元,进行双数组TRIE树的构建;
[0038]位置表示模块,用于在计算所述节点的Base索引值时,表示出所述节点及其对应子节点的相对位置;
[0039]搜索检查模块,用于将Base索引值为2的节点作为子节点偏移起始值进行计算,搜索并检查所述节点对应的所有子节点所占的位置是否为空闲空间;
[0040]以及,如果所有子节点所占的位置不都为空闲空间,跳转到下一Base索引值的节点,继续搜索并检查;
[0041]更新模块,用于直到所有子节点所占的位置都为空闲空间,将当前Base索引值作为当前节点的Base索引值,并更新到所述双数组TRIE树中。
[0042]进一步地,所述装置还包括:
[0043]所述匹配跳转模块,进一步用于当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果不在所述字符码表内, 判断所述字符不在所述双数组TRIE树中,跳转失败。
[0044]本专利技术的实施例提供的技术方案具备以下有益效果:
[0045]本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于双数组TRIE树的医疗数据空间分配方法,其特征在于,所述方法包括以下步骤:获取构建TRIE树的所有节点信息,根据所述所有节点信息对字符频率进行逐一统计;按照所述字符频率的大小关系对所有字符进行倒序排列,生成字符码表;从所述字符码表进行字符映射,基于静态的双数组建树方法构建双数组TRIE树;当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果在所述字符码表内,判断所述字符在所述双数组TRIE树中,跳转到所述字符。2.根据权利要求1所述的基于双数组TRIE树的医疗数据空间分配方法,其特征在于,所述所有节点包括第一节点、第二节点和第三节点,所述基于静态的双数组建树方法构建双数组TRIE树的步骤,具体包括:将所述第一节点及其对应的子节点放置于所述双数组TRIE树内;将所述第二节点放置于所述双数组TRIE树内,所述第二节点的Check值为所述第一节点的Base索引值,所述第二节点的Base索引值为所述第二节点的后续节点计算偏移值的起始Base节点;将所述第三节点合并到所述双数组TRIE树中,所述第三节点的Base索引值为所述第三节点的子节点计算偏移值的起始Base节点。3.根据权利要求2所述的基于双数组TRIE树的医疗数据空间分配方法,其特征在于,所述方法还包括:按照广度优先策略将每个节点和所述每个节点直接对应的子节点作为一个分配单元,进行双数组TRIE树的构建;在计算所述节点的Base索引值时,表示出所述节点及其对应子节点的相对位置;将Base索引值为2的节点作为子节点偏移起始值进行计算,搜索并检查所述节点对应的所有子节点所占的位置是否为空闲空间;如果所有子节点所占的位置不都为空闲空间,跳转到下一Base索引值的节点,继续搜索并检查;直到所有子节点所占的位置都为空闲空间,将当前Base索引值作为当前节点的Base索引值,并更新到所述双数组TRIE树中。4.根据权利要求1所述的基于双数组TRIE树的医疗数据空间分配方法,其特征在于,所述方法还包括:当匹配字符时,根据所述字符码表查找确定所述字符是否在所述字符码表内,如果不在所述字符码表内, 判断所述字符不在所述双数组TRIE树中,跳转失败。5.一种基于双数组TRIE树的医疗数据空间分配装置,其特征在于,包括:获取统计模块,用于获取构建...

【专利技术属性】
技术研发人员:李丽袁正航王实
申请(专利权)人:北京惠每云科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1