基于图的前缀可判断的任意长度电话号码存储和查询方法技术

技术编号:15296217 阅读:110 留言:0更新日期:2017-05-11 16:19
一种基于图的前缀可判断的任意长度电话号码存储和查询方法,所述方法利用语音网关或电话终端设备为平台,首先构造字典树,从根结点开始按位依次存储电话号码和前缀号码,然后添加前缀结点指向根结点的路径,将树变为有向图,通过遍历结点路径,实现判断前缀号码并查询电话号码相关信息的目的,本方法适用于电话号码存储和查询功能,相比现有方法,可有效降低存储和查询操作的空间复杂度及时间复杂度,提升执行效率。

Method for storing and querying telephone number with arbitrary length based on graph prefix

A graph of arbitrary length can be judged based on prefix number storage and query method, the method of using voice gateway or telephone terminal equipment as the platform, we first construct the dictionary tree, from the root node to a sequentially stored phone number and prefix number, and then add the path prefix node to the root node of the tree, will become directed graph, by traversing the node path, to determine the number and telephone number prefix query related information, this method is applicable in the telephone number storage and query functions, compared with the existing methods, can effectively reduce the storage and query operation space complexity and time complexity, enhancing the efficiency of the implementation of.

【技术实现步骤摘要】

本专利技术涉及一种基于图的前缀可判断的任意长度电话号码存储和查询方法,本专利技术来源于在不同类型的电话系统构成的电话网络中,在各系统间互相拨打电话时,包含电话号码适配功能、语音服务器查询功能的语音网关设备,以及包含电话号码查询功能、归属地查询功能的电话终端设备。其中涉及使用图结构存储和查询任意长度电话号码的方法,特别涉及能够判断电话号码前缀的查询方法。
技术介绍
在一个由多种不同类型的电话系统构成的电话网络中,需要语音网关进行电话系统间话音业务的转发。但是,各电话系统的拨号方式往往有所不同。如某些电话交换机系统拨打外线号码规则为添加前缀89,某些企业内部电话交换机需添加前缀9,某些基于IP电话的语音服务器可任意设置前缀规则或者不添加前缀号码。这些电话交换机或语音服务器可能会将前缀号码一并送给语音网关,语音网关需要对这些不同格式、不同前缀、不同规则的电话号码进行适配,判断此电话号码应该转发给哪个交换机或者语音服务器。某些语音网关系统或者电话终端设备还需要包含查询电话号码的归属地、联系人信息的功能。一般地,系统使用电话号码表存储和查询电话号码。常用的电话号码表存储和查询方法有两种:哈希散列法和字典树法。这两种方法都是使用特定的数据结构构造电话号码表,达到电话号码存储和查询的目的。在小型的语音网关系统或者电话终端设备中,常使用哈希散列表存储电话号码。该方法需要将所有已知号码逐条、完整的存储。该方法实现简单,但是需要消耗巨大的存储空间,因此只适合存储少量的电话号码。在大中型语音网关系统中,多使用字典树存储电话号码,这种方法将有公共头的电话号码合并存储在同一结点中,优化了存储空间。上述两种电话号码存储和查询方法,在处理前缀号码问题时一般有两个解决方案。第一种方案,将带有不同前缀和不带前缀的电话号码分别当做独立的电话号码存储。例如,分别存储815002、89815002,无论查询815002还是89815002,都能匹配到正确的电话号码。但是,每增加一个新的前缀号码,电话号码表就要多消耗一倍的存储空间,造成了存储空间的巨大消耗。第二种方案,增加独立的前缀号码表,在查询电话号码前,先遍历前缀号码表,判断前缀号码。例如,前缀号码表中存储了号码89,查询电话号码前,先查询前缀号码表,若待查询电话号码以89开头,则先将89删除,再使用剩余位数去电话号码表中查询。由于需要增加前缀号码表,因此该方案需要增加额外的存储空间。由于无论待查询的电话号码是否包含前缀号码,每次查询电话号码时都要遍历前缀号码表,因此该方法也会增加额外的查询时间。以上两种方法都不能较好的解决查询电话号码时,判断电话号码前缀的问题。要么大幅增加存储空间,要么增加查询步骤,增加查询时间。
技术实现思路
鉴于上述现有技术现状,本专利提供一种基于图的前缀可判断的任意长度电话号码存储和查询方法。本方法采用有向图数据结构,在一张图中同时存储电话号码和前缀号码,为图中的结点添加属性,添加前缀号码结点指向根结点的路径,实现在查询电话号码的同时判断前缀号码的目的。本专利为实现上述目的,所采取的技术方案是:一种基于图的前缀可判断的任意长度电话号码存储和查询方法,利用语音网关或电话终端设备为平台,实现电话号码存储和查询功能,其特征在于,使用图结构存储电话号码,可查询任意长度的电话号码,可判断电话号码前缀,步骤如下:步骤一、存储电话号码,规则为:构造一棵字典树,从根结点开始,依次使用待存储电话号码的每一位数字创建子结点,每个子结点的值等于该数字,从根结点至叶子结点的路径,不包含根结点,表示一个完整的电话号码,兄弟结点间的值不重复,具有相同前缀的电话号码拥有共同的父结点,按上述方法为每个不包含前缀的电话号码创建对应路径;步骤二、按步骤一中的方法为所有已知的前缀号码在同一棵树中创建路径,前缀号码与步骤一中的电话号码可共同拥有相同的父结点;步骤三、为每个结点标识结点属性,结点属性有以下四种:0x00表示此结点为中间结点,该结点不包含任何附加信息,0x01表示此结点为服务器结点,该结点包含语音服务器信息,0x02表示此结点为联系人结点,该结点包含此电话号码所属联系人信息,0x04表示此结点为前缀结点,从根结点至此结点的路径为前缀号码,一个结点最多可以包含两个属性:前缀结点属性和任意一个其他属性;步骤四、为前缀结点添加指向根结点的路径,将树升级为有向图;步骤五、查询电话号码,规则为:从步骤一中描述的根结点开始作为当前结点,依次读取待查询电话号码中的每一位数字,并与当前结点所指向的所有邻接结点的值进行比较,若相等,则匹配该邻接结点成功,继续以该邻接结点作为当前结点,遍历电话号码中的下一位数字,若当前结点所指向的所有邻接结点中没有与该数字相等的结点,或已读完待查询电话号码中的所有数字,则结束查询;步骤六、遍历过程中,若当前结点包含服务器结点属性,则提取此结点存储的服务器信息,并继续遍历,若当前结点包含联系人结点属性,则提取此结点存储的联系人信息,并结束查询,若遍历至前缀结点,则根据该结点的指向返回起始结点继续遍历;步骤七、为了防止死循环的发生,约定一个结点的前缀属性只能生效一次,第二次遍历至该结点则忽略其前缀属性继续遍历;步骤八、结束查询时,若遍历过程中成功查询到服务器信息或联系人信息,则查询成功,否则查询失败。本方法特点是:在存储空间方面,假设前缀号码的位数为“M”,不包含前缀号码的电话号码的位数为“N”。使用哈希散列法存储不包含前缀号码的电话号码消耗的存储空间最大为N×10N个存储单元。使用字典树法存储不包含前缀号码的电话号码消耗的存储空间最大为(10(N+1)-1)/9个存储单元。当使用哈希散列法存储电话号码表,且使用第一种前缀号码解决方案时,需要的存储空间最大为原电话号码表的M×10M倍。当使用字典树法存储电话号码表,且使用第二种前缀号码解决方案时,需要的存储空间最大为在原电话号码表的基础上,增加(10(M+1)-1)/9个存储单元。而本专利技术相比原电话号码表,当M≤N时,不增加任何存储空间;当M>N时,最大仅增加(10(M+1)-10(N+1))/9个存储单元。因此,本专利技术相比现有的两种技术方案,可大幅降低存储空间消耗。在查询时间方面,本专利技术与第一种方案前缀号码解决方案耗时相当,本专利技术在查询没有前缀号码的电话号码时,不增加额外的查询时间,但第二种前缀号码解决方案无论待查询电话号码是否包含前缀号码,都需遍历前缀号码表,因此本专利技术在总体查询时间上优于第二种前缀号码解决方案。综上所述,在判断电话号码前缀时,本方法将前缀号码与不包含前缀的电话号码合并存储在一张图中,既不大幅增加存储空间,又无需增加额外的查询时间。本方法比第一种前缀号码解决方案大幅减少存储空间消耗。本方法比第二种前缀号码解决方案大幅减少存储空间消耗和总体查询时间。相比现有技术方案,本方法使用更少的存储空间和更短的查询时间,大大提高了电话号码的存储和查询效率,可有效降低存储和查询操作的空间复杂度及时间复杂度,极大提升执行效率。因此,本方法是一种整体上优于现有技术方案的方法。本方法适用于语音网关或电话终端设备的电话号码存储和查询功能。附图说明图1为本专利技术的有向图存储结构示意图。具体实施方式为了更清楚的理解本专利技术,结合附图本文档来自技高网
...
基于图的前缀可判断的任意长度电话号码存储和查询方法

【技术保护点】
一种基于图的前缀可判断的任意长度电话号码存储和查询方法,利用语音网关或电话终端设备为平台,实现电话号码存储和查询功能,其特征在于,使用图结构存储电话号码,可查询任意长度的电话号码,可判断电话号码前缀,步骤如下:步骤一、存储电话号码,规则为:构造一棵字典树,从根结点开始,依次使用待存储电话号码的每一位数字创建子结点,每个子结点的值等于该数字,从根结点至叶子结点的路径,不包含根结点,表示一个完整的电话号码,兄弟结点间的值不重复,具有相同前缀的电话号码拥有共同的父结点,按上述方法为每个不包含前缀的电话号码创建对应路径;步骤二、按步骤一中的方法为所有已知的前缀号码在同一棵树中创建路径,前缀号码与步骤一中的电话号码可共同拥有相同的父结点;步骤三、为每个结点标识结点属性,结点属性有以下四种:0x00表示此结点为中间结点,该结点不包含任何附加信息,0x01表示此结点为服务器结点,该结点包含语音服务器信息,0x02表示此结点为联系人结点,该结点包含此电话号码所属联系人信息,0x04表示此结点为前缀结点,从根结点至此结点的路径为前缀号码,一个结点最多可以包含两个属性:前缀结点属性和任意一个其他属性;步骤四、为前缀结点添加指向根结点的路径,将树升级为有向图;步骤五、查询电话号码,规则为:从步骤一中描述的根结点开始作为当前结点,依次读取待查询电话号码中的每一位数字,并与当前结点所指向的所有邻接结点的值进行比较,若相等,则匹配该邻接结点成功,继续以该邻接结点作为当前结点,遍历电话号码中的下一位数字,若当前结点所指向的所有邻接结点中没有与该数字相等的结点,或已读完待查询电话号码中的所有数字,则结束查询;步骤六、遍历过程中,若当前结点包含服务器结点属性,则提取此结点存储的服务器信息,并继续遍历,若当前结点包含联系人结点属性,则提取此结点存储的联系人信息,并结束查询,若遍历至前缀结点,则根据该结点的指向返回起始结点继续遍历;步骤七、为了防止死循环的发生,约定一个结点的前缀属性只能生效一次,第二次遍历至该结点则忽略其前缀属性继续遍历;步骤八、结束查询时,若遍历过程中成功查询到服务器信息或联系人信息,则查询成功,否则查询失败。...

【技术特征摘要】
1.一种基于图的前缀可判断的任意长度电话号码存储和查询方法,利用语音网关或电话终端设备为平台,实现电话号码存储和查询功能,其特征在于,使用图结构存储电话号码,可查询任意长度的电话号码,可判断电话号码前缀,步骤如下:步骤一、存储电话号码,规则为:构造一棵字典树,从根结点开始,依次使用待存储电话号码的每一位数字创建子结点,每个子结点的值等于该数字,从根结点至叶子结点的路径,不包含根结点,表示一个完整的电话号码,兄弟结点间的值不重复,具有相同前缀的电话号码拥有共同的父结点,按上述方法为每个不包含前缀的电话号码创建对应路径;步骤二、按步骤一中的方法为所有已知的前缀号码在同一棵树中创建路径,前缀号码与步骤一中的电话号码可共同拥有相同的父结点;步骤三、为每个结点标识结点属性,结点属性有以下四种:0x00表示此结点为中间结点,该结点不包含任何附加信息,0x01表示此结点为服务器结点,该结点包含语音服务器信息,0x02表示此结点为联系人结点,该结点包含此电话号码所属联系人信息,0x04表示此结点为前缀结点,从根结点至...

【专利技术属性】
技术研发人员:韩福春吴昊苏泽有朱春祥宋荣权熊焕宇王骁勇程磊
申请(专利权)人:天津七一二通信广播股份有限公司中国人民解放军国防信息学院
类型:发明
国别省市:天津;12

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

1