当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于逆波兰记号电信计费话单过滤算法设计

 摘  要: 运用逆波兰记号和堆栈技术,基于ANSIC/C++开发环境,设计了计费预处理的话单过滤系统,给出了过滤表达式的形式定义、物理存储形式和语义定义以及表达式形式定义和物理存储的转换算法。

  网计费账系统是电信重要系统之一,系统设计运行准确性和操作简单方便至极关心运营商的利益,为计费准确性在设计系统是必须要多加几个环节来保障系统安全无误。

  计费的原始数据要经历话单采集、分捡、预处理、划价、入库、合账等系列过程,最终形成客户缴费账单。其中,预处理环节是对话单准确性进行校验最重要的步骤。该环节的主要功能是对各种错误识别并进行异常处理,同时生成标准化帐单数据作为计费的依据。因此设计一个高效、灵活的话单过滤算法是计费预处理系统的一项重要工作。

  1  功能需求分析

  算法的实现必须要考虑到特定业务需求的逻辑性和相关性。电信计费话单过滤的功能需求有以下几个方面:(1)可以分别根据通话记录各信息要素以及其组合实现过滤。如主叫和被叫电话以及主被叫电话组合的号码段,通话开始、结束时间及通话时长,出中继和入中继号码等;(2)可以根据通话记录信息要素的业务逻辑和相关性实现过滤。(3)可以通过图形界面向导配置话单过滤条件。

  2  现行方法的弊端

  目前,话单过滤功能的实现主要采用以下几种方式:

  (1)将话单文件导入数据库系统中进行手工SQL命令过滤。该方法人工干预较多,难以避免人为错误。该方法难以应用。(2)根据需要手工修改应用程序。该方法直接在程序中修改过滤判断条件,程序工作量大、改动频繁,而且不能表述话单的业务逻辑关系。(3)根据简单表格形成过滤条件。该方法避免了手工出错的可能性,但表格中表达式之间仅存在简单的“与”“或”的关系,条件优先级无法实现,因而也不能完全表述复杂的逻辑关系。

  3  基于逆波兰记号的过滤算法设计

  3.1 过滤条件的形式定义

  过滤条件是一个记号系统,其定义应当符合程序设计语言的需要,包括一组完整的文法规则。现将话单过滤条件定义为文法G={Vn,Vt,P,S},Vn为非终结符号集;Vt为终结符号集;P为产生式(规则)集;S为识别符号或开始符号。

  过滤算法成为非线性规划领域研究的热点。过滤算法的特点是不需要罚因子和效益函数,它利用一种称之为“滤子”的集合来协调可行性和最优性,从而保证全局收敛性。过滤算法是一种迭代算法。该算法将非线性优化问题转化为一个双目标优化问题,即分别最小化可行性违法度和目标函数值。其中又偏重于改善可行性。在每一个迭代点都通过某种方法(信赖域,SQP等)获得一个尝试步,若该尝试步至少能改善可行性和最优性两者之一,则判定该尝试步能被滤子接受,接下来再考察其充分下降性。

  3.2 过滤条件的物理存储表示

  物理存储器是指实际存在的具体的存储器芯片。如主板上装插的内存条和装载有系统BIOS的ROM芯片,显示卡上的显示RAM芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的RAM芯片和ROM芯片等都是物理存储器。

  话单过滤条件形式定义为一个中缀逻辑表达式,这种方式对最终用户来说是个易于理解和符合阅读或操作习惯的表达方式,但在算法处理中需要进行算符优先级的判定工作。逆波兰记号又叫后缀表示法,这种表示方法将运算对象写在前面,把运算符写在后面,只需要利用一个堆栈就可完全对输入串进行解析。3.1节中的示例表达式用逆波兰记号可表示为:A,字串,>,E,字串,≤,∩,M,字串,=,∪。通过采用逆波兰记号,合理规避了算符优先级别的判别功能,有利于程序设计的简化。[!--empirenews.page--]

  3.3 过滤条件语义的定义

  语义定义是和功能需求紧密联系的,并可以根据需求的变化进行调整和扩充。文法G中各终结符号语义见表1。

  例如话单过滤表达式(((A>4224000)∩(A≤6899123))∪(N=1)),其语义为主叫号码段在4224000和6899123之间,或者主被叫归属相同计费区。

  3.4 过滤条件形式定义和物理存储的相互转换

  话单过滤条件的形式定义和物理表述分别采用中缀法和后缀法,前者直接面向最终用户,后者是针对设计人员算法实现的需要,因此必须采用合理的机制进行相互转换。这里需要解决两个问题:一是要设计一个最终用户可理解的图形界面向导、采用中缀法来配置过滤表达式;二是设计一个依据中缀式形成后缀式的算法。在本文中作如下定义:

  3.4.1 过滤表达式的用户配置

  这里预定义关系表T_EXPRESS,其结构见表2。该表用于存储所有话单过滤条件的原子表达式和组合表达式。基于该表,设计相关的图形配置界面向导是很容易达到用户配置过滤表达式要求的。

  3.3节中话单过滤表达式在表中存储方式见表3,记录序号5指示的组合表达式就是该过滤条件表达式的入口。

  3.4.2 中缀式向后缀式转换算法

  实现中缀表达式向后缀表达式的转换可采用递归算法,伪C语言代码如下:

  String GetSuffixExpress(int seq) {

  Billing_Record_Express=GetBillingRecordExpress(seq);

  If Billing_Record_Express.ftype=原子表达式

  Return Billing_Record_Express.felement + ″,″+

  Billing_Record_Express.fvalue +″,″+ Billing_Record_Express.foperate;

  Else //组合表达式

  Return  GetSuffixExpress(int(Billing_Record_

  Express.felement)) + ″,″+ GetSuffixExpress(int

  (Billing_Record_Express.fvalue)) + ″,″+

  Billing_Record_Express.foperate;

  }[!--empirenews.page--]

  3.5 话单过滤表达式运算算法的实现

  话单过滤表达式最终将形成布尔值结果真或假,由此来判定该张话单是否被系统过滤。算法分为语法分析、业务逻辑处理两个部分。语法分析是利用堆栈运算分解出原子表达式的过程;业务逻辑处理是针对原子表达式的语义作出相应的业务处理并求得该原子表达式的布尔值。以下是算法的伪C语言代码:

  STACK stack;

  Bool result;

  String suffixexpress;

  Bool SyntaxAnlysis(suffixexpress){

  SETNULL(stack);

  Terminalsymb=GetNextTerminalsymb(suffixexpress);

  While (!IsNull(Terminalsymb)) {

  Switch(Terminalsymb){

  Case A to N     PUSH(stack,Terminalsymbol);

  Case > to =

  POP(stack,value);

  POP(stack,factor_code);

  Comparesymb=Terminalsymb;

  Result=LogicProcess(factor_code,Com

  paresymbol,value);

  PUSH(stack,result)

  Case  ∪,∩

  POP(stack,result1);

  POP(stack,result2);

  Logicalsymb=Terminalsymb;

  Result=BoolProcess(result1,Logicalsymbol,result2);

  PUSH(stack,result);

  }

  Terminalsymbol=GetNextTerminalsymbol(suffixexpress);

  }

  return TOP(stack);

  }

  在设计和开发湖南电信本地网计费系统过程中,运用逆波兰记号和堆栈技术,基于ANSI C/C++开发环境成功完成了计费预处理的话单过滤系统。本算法稍加修改和扩充就可以应用到大部分涉及格式化文本和数据库记录过滤的应用中。

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭