System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于排序字典树的计算机联锁码位搜索方法技术_技高网

一种基于排序字典树的计算机联锁码位搜索方法技术

技术编号:40709095 阅读:5 留言:0更新日期:2024-03-22 11:10
本发明专利技术提供一种基于排序字典树的计算机联锁码位搜索方法,包括:S1、初始化排序字典树数据结构;S2、依次插入码位表中包含的所有码位对象,每次插入时根据码位对象名称字符串重构排序字典树数据结构,将每个码位对象指针按序插入排序一维数组sortedBitArr,并根据新增的树节点重新填充用于确定起始搜索字典树节点的二维数组val2NodesArr;S3、根据用户当前输入的关键字,基于二维数组val2NodesArr获得所有起始搜索字典树节点,从各起始搜索字典树节点依次前序遍历排序字典树,若关键字匹配成功,则结合排序一维数组sortedBitArr确定所有符合的码位对象并放入搜索结果集。本发明专利技术极大提高了搜索方法的搜索效率、成功率和可用性,降低了每个字典树节点的地址空间消耗,也缩短了搜索消耗时间。

【技术实现步骤摘要】

本专利技术属于计算机联锁系统领域,特别涉及一种基于排序字典树的计算机联锁码位搜索方法


技术介绍

1、目前,国内计算机联锁系统存在如操作显示机-联锁机、联锁机-轨旁设备等诸多内部接口,此外还包括诸多外部接口,所述外部接口与tcc(列控中心)、rbc(无线闭塞中心)、邻站cbi(计算机联锁系统)、全电子等外部系统存在接口通信,内、外部接口通过协商码位表实现特定状态信息的收发,因此在计算机联锁系统的日常维护或仿真模拟等作业中,经常涉及到基于用户输入关键字对码位表进行匹配搜索,以追踪特定码位对象状态信息的操作。

2、当前基于关键字对码位表进行匹配搜索的方法,主要通过对码位表数据结构进行逐项遍历,在每个循环周期中将当前码位对象的名称字符串与关键字进行比对,若关键字为码位名称字符串的子串,则匹配成功,将码位对象放入搜索结果集,并进行下一轮循环迭代。这种方法本质上是三层循环的“暴力”搜索:(1)第一层循环对码位表数据结构逐项遍历,进入第二层循环;(2)第二层循环对当前码位对象的名称字符串逐字节遍历,直至找到关键字首字节,进入第三层循环;(3)第三层循环对名称字符串及关键字后续字节逐字节遍历。这种方法在最坏情况下时间复杂度为o(m*n*k),m为码位表大小,n为码位对象名称平均长度,k为关键字长度,当联锁车站码位数量变大,或码位对象名称平均长度变长,或用户输入关键字长度变长时,单次搜索消耗时间将显著增加,因此现有技术中的搜索方法无法满足用户对码位搜索高效性的需求,尤其在边输入边给出搜索结果集的实时响应搜索模块,将出现难以忍受的延迟卡顿。


技术实现思路

1、本专利技术的目的是提供一种基于排序字典树的计算机联锁码位搜索方法,以满足码位搜索的高效性的需求。

2、为实现上述目的,本专利技术提供一种基于排序字典树的计算机联锁码位搜索方法,其包含:

3、步骤s1、初始化排序字典树数据结构,所述排序字典树数据结构包括包含有一个根节点和若干个树节点的排序字典树、存放所有码位对象指针的排序一维数组sortedbitarr以及用于确定起始搜索字典树节点的二维数组val2nodesarr;

4、步骤s2、依次插入码位表中包含的所有码位对象,每次插入时根据码位对象名称字符串重构排序字典树数据结构,将每个码位对象指针按序插入排序一维数组sortedbitarr,并根据新增的树节点重新填充用于确定起始搜索字典树节点的二维数组val2nodesarr;

5、步骤s3、根据用户当前输入的关键字,基于二维数组val2nodesarr获得所有起始搜索字典树节点,从各起始搜索字典树节点依次前序遍历排序字典树,若关键字匹配成功,则结合排序一维数组sortedbitarr确定所有符合的码位对象并放入搜索结果集。

6、优选的,所述根节点和每个所述树节点包括:节点表示字符值val、指向第一个子节点的指针firstchild、指向同一层级的下一右侧兄弟节点的指针rightnode、节点在sortedbitarr首次出现的下标startidx。

7、优选的,步骤s1所述的初始化排序字典树数据结构,包括步骤s11:初始化字典树根节点root;所述步骤s11具体包括如下步骤:

8、步骤s111、将字典树根节点root的节点表示字符值val初始化为0,表示root仅代表字典树根节点,不表示任何码位对象关联节点;

9、步骤s112、将字典树根节点root的firstchild、rightnode初始化为nullptr,表示当前未插入任何码位对象;

10、步骤s113、将字典树根节点root的startidx初始化为0,表示从该字典树根节点往下遍历所得到的所有码位对象,在sortedbitarr中出现的最小下标为0。

11、优选的,步骤s1所述的初始化排序字典树数据结构,包括步骤s12:初始化存放所有码位对象指针的排序一维数组sortedbitarr,其中排序一维数组sortedbitarr内按照码位对象名称字符串进行升序排序。

12、优选的,步骤s1所述的初始化排序字典树数据结构,包括步骤s13:初始化用于确定起始搜索字典树节点的二维数组val2nodesarr,其中val2nodesarr的第一维表示字符值映射的下标,第二维表示存放对应字符值的所有字典树节点指针数组。

13、优选的,步骤s2具体包括如下步骤:

14、步骤s21、根据码位表生成码位对象,所述码位对象包括码位名称字符串;

15、步骤s22、初始化当前遍历处在的树节点curnode为字典树根节点root的firstchild,设置匹配成功的所有树节点数组为遍历数组parentnodes,并将字典树根节点root插入parentnodes中,表示成功匹配字典树根节点root;

16、步骤s23、依次取出码位对象名称字符串的字符char,根据当前遍历处在的树节点curnode状态重构排序字典树数据结构;

17、其中,当前遍历处在的树节点curnode含义为匹配成功的前一树节点的第一个子节点指针firstchild。、

18、优选的,若当前遍历处在的树节点curnode为nullptr,表示不存在当前字符char对应的树节点,匹配失败,创建第一新树节点,具体包括如下步骤:

19、步骤s231、初始化该第一新树节点的firstchild、rightnode为nullptr,且初始化该第一新树节点的val为当前字符char;

20、步骤s232、初始化该第一新树节点的startidx为对应父节点的startidx+1,将遍历数组parentnodes中的所有树节点进行递归前序遍历,使位于第一新树节点右侧的所有树节点的startidx自增1;其中,parentnodes中的所述右侧所有树节点包括所有匹配成功节点的firstchild节点、rightnode节点及firstchild节点和rightnode的衍生节点;

21、步骤s233、将码位对象指针插入sortedbitarr,插入位置为第一新树节点的startidx;

22、步骤s234、根据第一新树节点的val值,将第一新树节点插入到val2nodesarr的结构中。

23、优选的,若当前码位对象名称字符串还有剩余字符未处理,则依次创建剩余字符的第二新树节点,其包括如下步骤:

24、步骤s235、初始化第二新树节点的节点表示字符值val为当前字符char;

25、步骤s236、每次创建的第二新树节点为第一新树节点的firstchild,且由于是同一码位对象的名称字符串,设置第二新树节点的startidx为第一新树节点的startidx;

26、步骤s237、根据第二新树节点的val值,将各个第二新树节点插入到val2nodesarr的结构中,完成该码位对象的插入处理。

<本文档来自技高网...

【技术保护点】

1.一种基于排序字典树的计算机联锁码位搜索方法,其特征在于,包括:

2.如权利要求1所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,所述根节点和每个所述树节点包括:节点表示字符值val、指向第一个子节点的指针firstChild、指向同一层级的下一右侧兄弟节点的指针rightNode、节点在sortedBitArr首次出现的下标startIdx。

3.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤S1所述的初始化排序字典树数据结构,包括步骤S11:初始化字典树根节点root;所述步骤S11具体包括如下步骤:

4.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤S1所述的初始化排序字典树数据结构,包括步骤S12:初始化存放所有码位对象指针的排序一维数组sortedBitArr,其中排序一维数组sortedBitArr内按照码位对象名称字符串进行升序排序。

5.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤S1所述的初始化排序字典树数据结构,包括步骤S13:初始化用于确定起始搜索字典树节点的二维数组val2NodesArr,其中val2NodesArr的第一维表示字符值映射的下标,第二维表示存放对应字符值的所有字典树节点指针数组。

6.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤S2具体包括如下步骤:

7.如权利要求6所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前遍历处在的树节点curNode为nullptr,表示不存在当前字符char对应的树节点,匹配失败,创建第一新树节点,具体包括如下步骤:

8.如权利要求7所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前码位对象名称字符串还有剩余字符未处理,则依次创建剩余字符的第二新树节点,其包括如下步骤:

9.如权利要求6所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前遍历处在的树节点curNode不为nullptr,则依次向右遍历rightNode,进行匹配char,其包括三种情况:

10.如权利要求9所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,在情况1下,若当前码位对象名称字符串均处理完成,表示当前码位对象名称字符串为其他码位对象的名称字符串的前缀,对当前树节点curNode向下衍生出的所有子节点和同一层级的右侧所有兄弟节点及其衍生节点的startIdx进行递归前序遍历使各自的startIdx自增1,完成该码位对象的插入处理;同时对遍历数组parentNodes中的所有树节点进行递归前序遍历,使位于当前树节点curNode右侧的所有树节点的startIdx自增1;其中,parentNodes中的所述右侧所有树节点包括所有匹配成功节点的firstChild节点、rightNode节点及firstChild节点和rightNode的衍生节点。

11.如权利要求9所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,在情况2下,所述创建第三新树节点包括:

12.如权利要求9所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,在情况3下,所述创建第四新树节点包括:

13.如权利要求11或12所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前码位对象名称字符串还有字符未处理,则重复步骤S235~步骤S237依次创建剩余字符的树节点,完成该码位对象的插入处理。

14.如权利要求6所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,每次根据码位表生成码位对象后,通过检查码位对象名称是否重复来判断码位对象是否重复,若码位对象名称重复,则将该码位对象舍弃,不插入所述排序字典树结构。

15.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤S3具体包括如下步骤:

16.如权利要求15所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若curNode为nullptr,表示该次搜索失败,返回步骤S32进入下一次搜索;若curNode不为nullptr,则依次向右遍历rightNode,进行匹配char。

17.如权利要求16所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,在curNode不为nullptr的情况下,若遍历到某个树节点的val大于char;或遍历完所有右侧树节点,仍未找到某个树节点的val等于char,表示该次搜索失败,返回步骤S32进入下一次搜索...

【技术特征摘要】

1.一种基于排序字典树的计算机联锁码位搜索方法,其特征在于,包括:

2.如权利要求1所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,所述根节点和每个所述树节点包括:节点表示字符值val、指向第一个子节点的指针firstchild、指向同一层级的下一右侧兄弟节点的指针rightnode、节点在sortedbitarr首次出现的下标startidx。

3.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤s1所述的初始化排序字典树数据结构,包括步骤s11:初始化字典树根节点root;所述步骤s11具体包括如下步骤:

4.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤s1所述的初始化排序字典树数据结构,包括步骤s12:初始化存放所有码位对象指针的排序一维数组sortedbitarr,其中排序一维数组sortedbitarr内按照码位对象名称字符串进行升序排序。

5.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤s1所述的初始化排序字典树数据结构,包括步骤s13:初始化用于确定起始搜索字典树节点的二维数组val2nodesarr,其中val2nodesarr的第一维表示字符值映射的下标,第二维表示存放对应字符值的所有字典树节点指针数组。

6.如权利要求2所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,步骤s2具体包括如下步骤:

7.如权利要求6所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前遍历处在的树节点curnode为nullptr,表示不存在当前字符char对应的树节点,匹配失败,创建第一新树节点,具体包括如下步骤:

8.如权利要求7所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前码位对象名称字符串还有剩余字符未处理,则依次创建剩余字符的第二新树节点,其包括如下步骤:

9.如权利要求6所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,若当前遍历处在的树节点curnode不为nullptr,则依次向右遍历rightnode,进行匹配char,其包括三种情况:

10.如权利要求9所述的基于排序字典树的计算机联锁码位搜索方法,其特征在于,在情况1下,若当前码位对象名称字符串均处理完成,表示当前码位对象名称字符串为其他码位对象的名称字符串的前缀,对当前树节点curnode向下衍生出的所有子节点和同一层级的右侧所有兄弟节点及其衍生节点的startidx进行递归前序遍历使各自的startidx自增1,完成该码位对象的插入处理;同时对遍历数组parentnodes中的所有树节点进行递归前序遍历,使位于当前树节点cu...

【专利技术属性】
技术研发人员:叶正君高武徐筱筱陈吉余张程梁昱喻焰张杰
申请(专利权)人:卡斯柯信号有限公司
类型:发明
国别省市:

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

1