CN110532260A - 逻辑表达式的存储及读取方法、装置、电子设备及介质 - Google Patents

逻辑表达式的存储及读取方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN110532260A
CN110532260A CN201910668061.8A CN201910668061A CN110532260A CN 110532260 A CN110532260 A CN 110532260A CN 201910668061 A CN201910668061 A CN 201910668061A CN 110532260 A CN110532260 A CN 110532260A
Authority
CN
China
Prior art keywords
logical
expression
tree
node
target variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910668061.8A
Other languages
English (en)
Other versions
CN110532260B (zh
Inventor
苏艾
张轶凡
杨诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910668061.8A priority Critical patent/CN110532260B/zh
Publication of CN110532260A publication Critical patent/CN110532260A/zh
Application granted granted Critical
Publication of CN110532260B publication Critical patent/CN110532260B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种逻辑表达式的存储及读取方法、装置、电子设备及存储介质,所述存储方法包括:获取待存储的逻辑表达式,逻辑表达式包括阈值指针,阈值指针指向阈值的存储位置;解析逻辑表达式,获取逻辑表达式中的运算表达式;根据运算表达式,生成运算表达式对应的比较运算树,比较运算树包括阈值指针节点,阈值指针节点与阈值指针相对应;根据逻辑表达式,生成以指标变量名替换运算表达式的逻辑运算树,逻辑运算树包括指标变量节点,指标变量节点与指标变量名相对应;根据比较运算树和逻辑运算树,生成待存储的逻辑表达式对应的树形结构;存储树形结构。本申请实施例降低了耦合度,而且不需要重复存储逻辑表达式,节省了存储空间。

Description

逻辑表达式的存储及读取方法、装置、电子设备及介质
技术领域
本申请涉及数据存储技术领域,特别是涉及一种逻辑表达式的存储及读取方法、装置、电子设备及存储介质。
背景技术
在对业务指标进行逻辑判断时,通常需要使用逻辑表达式进行判断,在业务指标较多的场景中,逻辑表达式也较为复杂。因此需要对复杂的逻辑表达式进行存储和查找。
现有技术中,对逻辑表达式进行存储时使用关系表直接存储逻辑表达式。这种存储方式耦合度较高,阈值与表达式耦合在一起,不易修改。而且如果多个逻辑表达式基本相同,只是阈值不同时,需要存储多个逻辑表达式,造成重复存储,浪费存储空间。因此,现有技术存在着耦合度高及重复存储的问题。
发明内容
本申请实施例提供一种逻辑表达式的存储及读取方法、装置、电子设备及存储介质,以降低耦合度并解决重复存储的问题。
为了解决上述问题,第一方面,本申请实施例提供了一种逻辑表达式的存储方法,包括:
获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置;
解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式;
根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应;
根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构;
存储所述树形结构。
可选的,所述根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,包括:
确定与所述运算表达式对应的指标变量名;
在所述逻辑表达式中,以所述指标变量名替换所述运算表达式;
识别替换后的逻辑表达式中的指标变量名和逻辑运算符;
根据所述逻辑运算符生成逻辑运算节点,并根据所述指标变量名生成指标变量节点;
根据所述替换后的逻辑表达式中的逻辑关系,确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系,生成所述逻辑运算树。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
可选的,所述根据所述运算表达式,生成所述运算表达式对应的比较运算树,包括:
识别所述运算表达式中的指标变量名、比较运算符和阈值指针;
根据所述指标变量名生成指标变量节点,根据所述比较运算符生成比较运算节点,根据所述阈值指针生成阈值指针节点;
基于所述运算表达式,根据所述指标变量节点、所述比较运算节点、所述阈值指针节点以及预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,生成所述运算表达式对应的比较运算树。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,在存储所述树形结构之后,还包括:
在接收到所述逻辑表达式的扩展子表达式的情况下,生成所述扩展子表达式对应的扩展子树;
根据所述扩展子表达式与所述逻辑表达式的关系,将所述扩展子树添加到所述树形结构的相应节点下,得到扩展的树形结构。
可选的,在存储所述树形结构之后,还包括:
响应于对所述树形结构的编辑操作指令,显示所述树形结构;
接收用户对所述树形结构的修改指令;
基于所述修改指令,对所述树形结构进行修改,得到修改后的树形结构。
可选的,在存储所述树形结构之前,还包括:
在所述树形结构中,若所述指标变量节点只有一个子节点,则将所述指标变量节点和所述子节点合并为一个节点,得到优化后的树形结构。
第二方面,本申请实施例提供了一种逻辑表达式的读取方法,包括:
获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置;
根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构;
遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括与替换所述比较运算树的指标变量名相对应的指标变量节点,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名;
对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式;
将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
可选的,所述对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,包括:
根据预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,识别所述比较运算树中的指标变量节点、比较运算节点和阈值指针节点;
根据所述指标变量节点确定指标变量名,根据所述比较运算节点确定比较运算符,并根据所述阈值指针节点确定阈值指针;
根据所述指标变量名、比较运算符和阈值指针,生成所述比较运算树对应的运算表达式。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,所述对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式,包括:
识别所述逻辑运算树中的逻辑运算节点和指标变量节点;
根据所述逻辑运算节点确定逻辑运算符,根据所述指标变量节点确定指标变量名,并根据所述逻辑运算树确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系;
基于所述逻辑运算节点之间的父子关系以及所述逻辑运算节点与指标变量节点的父子关系,根据所述逻辑运算符和指标变量名,生成包括替换所述比较运算树的指标变量名的逻辑表达式。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
第三方面,本申请实施例提供了一种逻辑表达式的存储装置,包括:
表达式获取模块,用于获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置;
运算表达式获取模块,用于解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式;
比较运算树生成模块,用于根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点的与所述阈值指针相对应;
逻辑运算树生成模块,用于根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应;
树形结构生成模块,用于根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构;
树形结构存储模块,用于存储所述树形结构。
可选的,所述逻辑运算树生成模块包括:
确定单元,用于确定与所述运算表达式对应的指标变量名;
替换单元,用于在所述逻辑表达式中,以所述指标变量名替换所述运算表达式;
识别单元,用于识别替换后的逻辑表达式中的指标变量名和逻辑运算符;
指标节点生成单元,用于根据所述逻辑运算符生成逻辑运算节点,并根据所述指标变量名生成指标变量节点;
逻辑运算树生成单元,用于根据所述替换后的逻辑表达式中的逻辑关系,确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系,生成所述逻辑运算树。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
可选的,所述比较运算树生成模块包括:
表达式识别单元,用于识别所述运算表达式中的指标变量名、比较运算符和阈值指针;
节点生成单元,用于根据所述指标变量名生成指标变量节点,根据所述比较运算符生成比较运算节点,根据所述阈值指针生成阈值指针节点;
比较运算树生成单元,用于基于所述运算表达式,根据所述指标变量节点、所述比较运算节点、所述阈值指针节点以及预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,生成所述运算表达式对应的比较运算树。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,所述装置还包括:
扩展子树生成模块,用于在接收到所述逻辑表达式的扩展子表达式的情况下,生成所述扩展子表达式对应的扩展子树;
扩展模块,用于根据所述扩展子表达式与所述逻辑表达式的关系,将所述扩展子树添加到所述树形结构的相应节点下,得到扩展的树形结构。
可选的,所述装置还包括:
树形结构显示模块,用于响应于对所述树形结构的编辑操作指令,显示所述树形结构;
修改指令接收模块,用于接收用户对所述树形结构的修改指令;
树形结构修改模块,用于基于所述修改指令,对所述树形结构进行修改,得到修改后的树形结构。
可选的,所述装置还包括:
树形结构优化模块,用于在所述树形结构中,若所述指标变量节点只有一个子节点,则将所述指标变量节点和所述子节点合并为一个节点,得到优化后的树形结构。
第四方面,本申请实施例提供了一种逻辑表达式的读取装置,包括:
阈值指针获取模块,用于获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置;
树形结构获取模块,用于根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构;
树形结构拆分模块,用于遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括与替换所述比较运算树的指标变量名相对应的指标变量节点,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
运算表达式生成模块,用于对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名;
逻辑运算树解析模块,用于对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式;
逻辑表达式生成模块,用于将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
可选的,所述运算表达式生成模块包括:
比较运算树识别单元,用于根据预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,识别所述比较运算树中的指标变量节点、比较运算节点和阈值指针节点;
比较运算树确定单元,用于根据所述指标变量节点确定指标变量名,根据所述比较运算节点确定比较运算符,并根据所述阈值指针节点确定阈值指针;
运算表达式生成单元,用于根据所述指标变量名、比较运算符和阈值指针,生成所述比较运算树对应的运算表达式。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,所述逻辑运算树解析模块包括:
逻辑运算树识别单元,用于识别所述逻辑运算树中的逻辑运算节点和指标变量节点;
逻辑运算树确定单元,用于根据所述逻辑运算节点确定逻辑运算符,根据所述指标变量节点确定指标变量名,并根据所述逻辑运算树确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系;
逻辑表达式生成单元,用于基于所述逻辑运算节点之间的父子关系以及所述逻辑运算节点与指标变量节点的父子关系,根据所述逻辑运算符和指标变量名,生成包括替换所述比较运算树的指标变量名的逻辑表达式。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
第五方面,本申请实施例还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的逻辑表达式的存储方法或如第二方面所述的逻辑表达式的读取方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面所述的逻辑表达式的存储方法的步骤或第二方面所述的逻辑表达式的读取方法的步骤。
本申请实施例公开的逻辑表达式的存储及读取方法、装置、电子设备及存储介质,通过将逻辑表达式存储为树形结构,并且在树形结构中通过阈值指针指向阈值的存储位置,从而实现了阈值与表达式的解耦,降低了耦合度,而且在逻辑表达式相同而阈值不同时,只需在一个树形结构中通过不同的阈值指针确定,从而不需要重复存储逻辑表达式,节省了存储空间。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一的逻辑表达式的存储方法的流程图;
图2是本申请实施例中的逻辑运算树的示意图;
图3是本申请实施例中的逻辑表达式对应的树形结构的示意图;
图4是本申请实施例中的两个只有阈值不同的逻辑表达式对应的树形结构的示意图;
图5是本申请实施例中的两个只有阈值不同的逻辑表达式与另一个包含不同运算表达式的逻辑表达式对应的树形结构的示意图;
图6是本申请实施例中的对图3所示的树形结构扩展后的树形结构的示意图;
图7是本前实施例中的对图5所示的树形结构优化后的树形结构的示意图;
图8是本申请实施例二的逻辑表达式的读取方法的流程图;
图9是本申请实施例三的逻辑表达式的存储装置的结构示意图;
图10是本申请实施例四的逻辑表达式的读取装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
本实施例公开的一种逻辑表达式的存储方法,如图1所示,该方法包括:步骤110至步骤160。
步骤110,获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置。
其中,所述逻辑表达式为复杂逻辑表达式,包括逻辑关系和运算关系,还包括阈值指针。逻辑表达式可以表示为:F=L(C1(A1,T1),…,Cn(An,Tn)),其中,L表示逻辑关系,C表示运算关系,包括比较运算,A表示指标,T表示阈值。
用户要存储一个逻辑表达式时,输入逻辑表达式,并指定阈值对应的阈值指针,该阈值指针指向阈值的存储位置,电子设备便可以获取到待存储的逻辑表达式。
步骤120,解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式。
对所述逻辑表达式进行解析,识别所述逻辑表达式中的括号和运算符号,根据所述括号和运算符号,对所述逻辑表达式进行拆分,将所述逻辑表达式中的运算表达式拆分出来。
以逻辑表达式((((((z1>k1[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))为例,解析该逻辑表达式,根据括号和运算符号,将包括比较运算符号的运算表达式拆分出来,得到运算表达式:(z1>k1[0])、(z2>k1[1])和(z3>=k1[2])。
步骤130,根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点与所述阈值指针相对应。
用树状结构来表示所述运算表达式,将运算表达式生成对应的比较运算树,比较运算树的叶子节点为阈值指针节点,阈值指针节点与阈值指针相对应,即阈值指针节点的值为阈值指针。
在本申请的一个实施例中,所述根据所述运算表达式,生成所述运算表达式对应的比较运算树,包括:识别所述运算表达式中的指标变量名、比较运算符和阈值指针;根据所述指标变量名生成指标变量节点,根据所述比较运算符生成比较运算节点,根据所述阈值指针生成阈值指针节点;基于所述运算表达式,根据所述指标变量节点、所述比较运算节点、所述阈值指针节点以及预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,生成所述运算表达式对应的比较运算树。
其中,预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系为:所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
在根据运算表达式生成比较运算树时,首先识别运算表达式中的指标变量名、比较运算符和阈值指针,将指标变量名作为指标变量节点的值,将比较运算符作为比较运算节点的值,将阈值指针作为阈值指针节点的值,基于运算表达式确定指标变量节点、比较运算节点和阈值指针节点的父子关系,将阈值指针节点作为比较运算节点的孩子节点,将比较运算节点作为指标变量节点的孩子节点,从而生成运算表达式对应的比较运算树。
以上述运算表达式(z1>k1[0])为例,识别该运算表达式中的指标变量名为‘z1’,比较运算符为‘>’,阈值指针为‘k1[0]’,将‘z1’作为指针变量节点的值,将‘>’作为比较运算节点的值,将‘k1[0]’作为阈值指针节点的值,将阈值指针节点作为比较运算节点的孩子节点,将比较运算节点作为指标变量节点的孩子节点,得到运算表达式(z1>k1[0])对应的比较运算树。同理得到运算表达式(z2>k1[1])和(z3>=k1[2])分布对应的比较运算树。
步骤140,根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应。
在本申请的一个实施例中,所述根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,包括:确定与所述运算表达式对应的指标变量名;在所述逻辑表达式中,以所述指标变量名替换所述运算表达式;识别替换后的逻辑表达式中的指标变量名和逻辑运算符;根据所述逻辑运算符生成逻辑运算节点,并根据所述指标变量名生成指标变量节点;根据所述替换后的逻辑表达式中的逻辑关系,确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系,生成所述逻辑运算树。
其中,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
在所述逻辑表达式中,以一个符号标识表示对应的一个运算表达式,该符号标识作为指标变量名,并以该指标变量名替换逻辑表达式中的运算表达式,将原逻辑表达式转换为只含有逻辑运算关系的逻辑表达式,识别该逻辑表达式中的括号和逻辑运算符,识别逻辑表达式中的指标变量名和逻辑运算符,将逻辑运算符作为逻辑运算节点的值,生成逻辑运算节点,将指标变量名作为指标变量节点的值,生成指标变量节点,根据替换后的逻辑表达式中的逻辑关系,将最后一层的逻辑运算节点作为根节点,并往前推,得到根节点的孩子节点为其他逻辑运算节点和/或指标变量节点,按照此方式,直至确定所有逻辑运算节点和指标变量节点的父子关系。
仍以上述逻辑表达式((((((z1>k1[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))为例,以指标变量名‘c111’替换运算表达式‘(z1>k1[0])’,以指标变量名‘c112’替换运算表达式‘(z2>k1[1])’,以指标变量名‘c113’替换运算表达式‘(z3>=k1[2])’,得到替换后的逻辑表达式(((((c111||c112||c113)||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6));识别替换后的逻辑表达式中的指标变量名和逻辑运算符,得到指标变量名:c111、c112、c113、c12、c13、c14、c2、c3、c4、c5和c6,逻辑运算符为七个‘||’和三个‘&&’,将逻辑运算符生成对应的逻辑运算节点,将指标变量名生成对应的指标变量节点,根据替换后的逻辑表达式的逻辑关系,最后一层逻辑关系的逻辑运算符为‘||’,该逻辑运算符对应的逻辑运算节点为根节点,将该逻辑运算节点命名为C'0,该根节点的孩子节点为两个逻辑运算节点,其中一个逻辑运算节点对应的逻辑运算符为‘||’,将该逻辑运算节点命名为C'1,另一个逻辑运算节点对应的逻辑运算符为‘&&’,将该逻辑运算节点命名为C'2,则C'1的孩子节点为指标变量节点c2、c3以及逻辑表达式中c2之前的逻辑关系‘(((c111||c112||c113)||C12)||(C13&&C14))’中的逻辑运算符‘||’对应的逻辑运算节点,将该逻辑运算节点命名为c1,C'2的孩子节点为指标变量节点c4、c5、c6,指标变量节点c2、c3、c4、c5、c6均没有孩子节点;逻辑运算节点c1的孩子节点为逻辑运算节运算符‘||’对应的逻辑运算节点和逻辑运算符‘&&’对应的逻辑运算节点,这两个逻辑运算节点分别命名为C'3、C'4,C'3的孩子节点包括逻辑关系‘(c111||c112||c113)’中的逻辑运算符‘||’对应的逻辑运算节点,将该逻辑运算节点命名为c11,C'3的孩子节点还包括指标变量节点c12,C'4的孩子节点为指标变量节点c13、c14,c12、c13、c14没有孩子节点;c11的孩子节点为逻辑关系‘(c111||c112||c113)’的指标变量名c111、c112、c113对应的指标变量节点c111、c112、c113,至此,得到替换后的逻辑表达式对应的逻辑运算树,生成的逻辑运算树如图2所示。
步骤150,根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构。
基于待存储的逻辑表达式,将比较运算树下挂到所述逻辑运算树中对应的指标变量节点下。
仍以上述((((((z1>k1[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))为例,将运算表达式(z1>k1[0])、(z2>k1[1])和(z3>=k1[2])对应的比较运算树分别下挂到替换后的逻辑表达式(((((c111||c112||c113)||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))中指标变量节点c111、c112、c113下,得到待存储的逻辑表达式对应的树形结构,如图3所示。
以图3所示的树形结构为例,当存在另一个逻辑表达式,该逻辑表达式与图3所示的树形结构对应的逻辑表达式相同,只有阈值不同时,可以将该阈值对应的阈值指针节点下挂到相应的比较运算节点下,如该另一个逻辑表达式为((((((z1>k2[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6)),可以直接将阈值指针k2[0]对应的阈值指针节点下挂到比较运算节点‘>’下,得到的树形结构如图4所示。再以图4所示的树形结构为例,若又存在另一个逻辑表达式,该逻辑表达式与图3所示的树形结构对应的逻辑表达式中有一个比较运算树不同,可以将该比较运算树下挂到图4所示的树形结构中,如该另一个逻辑表达式为((((((z1<k3[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6)),可以直接将比较运算符‘<’对应的比较运算节点作为指标变量节点z1的子节点,并将阈值指针k3[0]对应的阈值指针节点作为比较运算节点的子节点,从而得到的树形结构如图5所示。
步骤160,存储所述树形结构。
在得到待存储的逻辑表达式对应的树形结构后,只需存储该树形结构。
本申请实施例公开的逻辑表达式的存储方法,通过获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置,解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式,生成所述运算表达式对应的比较运算树,根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,并根据比较运算树和逻辑运算树,生成待存储的逻辑表达式对应的树形结构,存储所述树形结构,由于在树形结构中通过阈值指针指向阈值的存储位置,从而实现了阈值与表达式的解耦,降低了耦合度,而且在逻辑表达式相同而阈值不同时,只需在一个树形结构中通过不同的阈值指针确定,从而不需要重复存储逻辑表达式,节省了存储空间。
在上述技术方案的基础上,在存储所述树形结构之后,还包括:在接收到所述逻辑表达式的扩展子表达式的情况下,生成所述扩展子表达式对应的扩展子树;根据所述扩展子表达式与所述逻辑表达式的关系,将所述扩展子树添加到所述树形结构的相应节点下,得到扩展的树形结构。
树形结构中指标变量节点下都可以进行扩展,以图3所示的树形结构为例,在接收到的扩展子表达式与指标变量节点c6对应时,按照生成上述树形结构的方式生成扩展子表达式对应的扩展子树,并将扩展子树下挂到指标变量节点c6下,如扩展子表达式为(c61&&C62)时,得到的扩展的树形结构如图6所示。通过树形结构提高了逻辑表达式的可扩展性。
在上述技术方案的基础上,在存储所述树形结构之后,还包括:响应于对所述树形结构的编辑操作指令,显示所述树形结构;接收用户对所述树形结构的修改指令;基于所述修改指令,对所述树形结构进行修改,得到修改后的树形结构。
在用户需要对树形结构进行修改时,可以通过电子设备的显示屏输入对树形结构的编辑操作指令,响应于该编辑操作指令,电子设备显示所述树形结构,基于显示的树形结构,用户可以在树形结构上进行操作对树形结构进行修改,电子设备接收到用户的修改指令,对树形结构进行修改,得到修改后的树形结构,从而使得逻辑表达式更加易于修改。以如图3所示的树形结构为例,用户通过操作可以直接删除指标变量节点c112对应的比较运算树。
在上述技术方案的基础上,在存储所述树形结构之前,还包括:在所述树形结构中,若所述指标变量节点只有一个子节点且所述子节点也是指标变量节点,则将所述指标变量节点和所述子节点合并为一个节点,得到优化后的树形结构。以图5所示的树形结构为例,指标变量节点c111只有一个子节点z1,且该子节点z1也是指标变量节点,这时可以将指标变量节点c111和z1合并为一个节点z1;指标变量节点c112只有一个子节点z2,且该子节点z2也是指标变量节点,这时可以将指标变量节点c112和z2合并为一个节点z2;指标变量节点c113只有一个子节点z3,且该子节点z3也是指标变量节点,这时可以将指标变量节点c113和z3合并为一个节点z3,节点合并之后的树形结构如图7所示,从而简化了树形结构。
实施例二
本实施例公开的一种逻辑表达式的读取方法,如图8所示,该方法包括:步骤810至步骤860。
步骤810,获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置。
由于一个树形结构可以表示多个逻辑表达式,从而用户在读取逻辑表达式时,需要指定逻辑表达式的阈值指针,所述阈值指针指向待读取逻辑表达式中阈值的存储位置。
步骤820,根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构。
根据所述阈值指针,检索树形结构中包括所述阈值指针的树形结构,该树形结构中选取包括所述阈值指针的分支,而与该分支并列的其他分支去掉,得到与所述待读取逻辑表达式对应的树形结构。
以图5所示的树形结构为例,阈值指针为k1[0],则将包括阈值指针k2[0]和k3[0]的分支去掉,得到图3所示的树形结构,该树形结构即待存储逻辑表达式对应的树形结构。
步骤830,遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括与替换所述比较运算树的指标变量名相对应的指标变量节点,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应。
遍历所述树形结构,根据树形结构中的各个节点的类型,将所述树形结构拆分为逻辑运算树和比较运算树。以图3所示树形结构为例,拆分出来的逻辑运算树如图2所示,另外图3所示树形结构中指标变量节点c111、c112、c113下的子树为三个比较运算树。
步骤840,对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名。
识别所述树形结构中与比较运算树对应的指标变量节点,该指标变量节点对应的指标变量名即为运算表达式在逻辑运算树中的指标变量名。以图3所示树形结构为例,阈值指针节点k1[0]所在的比较运算树对应的指标变量节点为c111,确定该比较运算树在逻辑运算树中的指标变量名为c111,以同样方式分别确定阈值指针节点k1[1]、k1[2]所在比较运算树在逻辑运算树中的指标变量名为c112、c113。
在本申请的一个实施例中,所述对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,包括:根据预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,识别所述比较运算树中的指标变量节点、比较运算节点和阈值指针节点;根据所述指标变量节点确定指标变量名,根据所述比较运算节点确定比较运算符,并根据所述阈值指针节点确定阈值指针;根据所述指标变量名、比较运算符和阈值指针,生成所述比较运算树对应的运算表达式。
其中,预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系为:所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
在比较运算树中,将与阈值指针相对应的节点为阈值指针节点,阈值指针节点的父节点为比较运算节点,比较运算节点的父节点为指标变量节点,获取指标变量节点的值,该值为指标变量名,获取比较运算节点的值,该值为比较运算符,并获取阈值指针节点的值,该值为阈值指针,将指标变量名、比较运算符和阈值指针组合为运算表达式。
以图3所示树形结构为例,指标变量节点c111对应的运算表达式为(z1>k1[0]),指标变量节点c112对应的运算表达式为(z2>k1[1]),指标变量节点c113对应的运算表达式为(z3>=k1[2])。
步骤850,对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式。
对逻辑运算树进行解析,生成带有比较运算树对应的指标变量名的逻辑表达式。
在本申请的一个实施例中,所述对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式,包括:识别所述逻辑运算树中的逻辑运算节点和指标变量节点;根据所述逻辑运算节点确定逻辑运算符,根据所述指标变量节点确定指标变量名,并根据所述逻辑运算树确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系;基于所述逻辑运算节点之间的父子关系以及所述逻辑运算节点与指标变量节点的父子关系,根据所述逻辑运算符和指标变量名,生成包括替换所述比较运算树的指标变量名的逻辑表达式。
其中,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
在逻辑运算树中,叶子节点为指标变量节点,指标变量节点的父节点为逻辑运算节点,逻辑运算节点的父节点为其他逻辑运算节点或根节点,从而根据该关系,依次确定各个节点的值,即确定指标变量节点对应的指标变量名,确定逻辑运算节点对应的逻辑运算符,从而从叶子节点开始根据逻辑运算符组合该逻辑运算符两侧的子树,得到逻辑表达式。
以图2所示的逻辑运算树为例,识别逻辑运算树中的叶子节点为c111、c112、c113、c12、c13、c14、c2、c3、c4、c5、c6,叶子节点c111、c112、c113的父节点为c11,而c11对应的逻辑运算符为‘||’,因此节点c111、c112、c113和c11对应的逻辑表达式为(c111||c112||c113);c11和c12的父节点为C'3,C'3对应的逻辑运算符为‘||’,因此,c11和c12对应的逻辑关系为(c11||c12),将c11替换为(c111||c112||c113),得到C'3对应的逻辑关系((c111||c112||c113)||c12);c13、c14的父节点为C'4,C'4对应的逻辑运算符为‘&&’,因此,C'4对应的逻辑关系为(c13&&c14);C'3和C'4的父节点为c1,c1对应的逻辑运算符为‘||’,因此,C'3和C'4的逻辑关系为(C'3||C'4),分别代入C'3和C'4对应的逻辑关系,得到c1对应的逻辑关系为(((c111||c112||c113)||c12)||(c13&&c14));c1、c2、c3的父节点为C'1,C'1对应的逻辑运算符为‘||’,因此,c1、c2、c3的逻辑关系为(c1||c2||c3),将c1对应的逻辑关系代入,得到C'1对应的逻辑关系为((((c111||c112||c113)||c12)||(c13&&c14))||c2||c3);c4、c5、c6的父节点为C'2,C'2对应的逻辑运算符为‘&&’,因此,c4、c5、c6的逻辑关系为(c4&&c5&&c6),即C'2对应的逻辑关系为(c4&&c5&&c6);C'1和C'2的父节点为根节点C'0,C'0对应的逻辑运算符为‘||’,因此,C'1和C'2的逻辑关系为(C'1||C'2),分别代入C'1和C'2对应的逻辑关系,得到逻辑表达式为(((((c111||c112||c113)||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6)),该逻辑表达式中包含代替运算表达式的指标变量名,即c111、c112、c113。
步骤860,将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
在得到带有比较运算树对应的指标变量名的逻辑表达式后,将该逻辑表达式中该指标变量名替换为对应的运算表达式,得到的表达式为待读取逻辑表达式。
以图3所示树形结构为例,在得到图2所示逻辑运算树对应的逻辑表达式(((((c111||c112||c113)||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))后,将该逻辑表达式中代替运算表达式的指标变量名c111、c112和c113分别替换为各自对应的运算表达式,得到待读取逻辑表达式((((((z1>k1[0])||(z2>k1[1])||(z3>=k1[2]))||c12)||(c13&&c14))||c2||c3)||(c4&&c5&&c6))。
本申请实施例公开的逻辑表达式的读取方法,通过获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置,根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构,遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树,对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名,对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式,将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式,由于在树形结构中通过阈值指针指向阈值的存储位置,从而实现了阈值与表达式的解耦,降低了耦合度,而且在逻辑表达式相同而阈值不同时,只需在一个树形结构中通过不同的阈值指针确定,从而不需要重复存储逻辑表达式,节省了存储空间,在读取逻辑表达式时只需根据指定的阈值指针获取对应的树形结构并解析得到要读取的逻辑表达式。
实施例三
本实施例公开的一种逻辑表达式的存储装置,如图9所示,所述逻辑表达式的存储装置900包括:
表达式获取模块910,用于获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置;
运算表达式获取模块920,用于解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式;
比较运算树生成模块930,用于根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点的与所述阈值指针相对应;
逻辑运算树生成模块940,用于根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应;
树形结构生成模块950,用于根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构;
树形结构存储模块960,用于存储所述树形结构。
可选的,所述逻辑运算树生成模块包括:
确定单元,用于确定与所述运算表达式对应的指标变量名;
替换单元,用于在所述逻辑表达式中,以所述指标变量名替换所述运算表达式;
识别单元,用于识别替换后的逻辑表达式中的指标变量名和逻辑运算符;
指标节点生成单元,用于根据所述逻辑运算符生成逻辑运算节点,并根据所述指标变量名生成指标变量节点;
逻辑运算树生成单元,用于根据所述替换后的逻辑表达式中的逻辑关系,确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系,生成所述逻辑运算树。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
可选的,所述比较运算树生成模块包括:
表达式识别单元,用于识别所述运算表达式中的指标变量名、比较运算符和阈值指针;
节点生成单元,用于根据所述指标变量名生成指标变量节点,根据所述比较运算符生成比较运算节点,根据所述阈值指针生成阈值指针节点;
比较运算树生成单元,用于基于所述运算表达式,根据所述指标变量节点、所述比较运算节点、所述阈值指针节点以及预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,生成所述运算表达式对应的比较运算树。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,所述装置还包括:
扩展子树生成模块,用于在接收到所述逻辑表达式的扩展子表达式的情况下,生成所述扩展子表达式对应的扩展子树;
扩展模块,用于根据所述扩展子表达式与所述逻辑表达式的关系,将所述扩展子树添加到所述树形结构的相应节点下,得到扩展的树形结构。
可选的,所述装置还包括:
树形结构显示模块,用于响应于对所述树形结构的编辑操作指令,显示所述树形结构;
修改指令接收模块,用于接收用户对所述树形结构的修改指令;
树形结构修改模块,用于基于所述修改指令,对所述树形结构进行修改,得到修改后的树形结构。
可选的,所述装置还包括:
树形结构优化模块,用于在所述树形结构中,若所述指标变量节点只有一个子节点,则将所述指标变量节点和所述子节点合并为一个节点,得到优化后的树形结构。
本申请实施例提供的逻辑表达式的存储装置,用于实现本申请实施例一中所述的逻辑表达式的存储方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本申请实施例公开的逻辑表达式的存储装置,通过表达式获取模块获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置,运算表达式获取模块解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式,比较运算树生成模块生成所述运算表达式对应的比较运算树,逻辑运算树生成模块根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,树形结构生成模块根据比较运算树和逻辑运算树,生成待存储的逻辑表达式对应的树形结构,树形结构存储模块存储所述树形结构,由于在树形结构中通过阈值指针指向阈值的存储位置,从而实现了阈值与表达式的解耦,降低了耦合度,而且在逻辑表达式相同而阈值不同时,只需在一个树形结构中通过不同的阈值指针确定,从而不需要重复存储逻辑表达式,节省了存储空间。
实施例四
本实施例公开的一种逻辑表达式的读取装置,如图10所示,所述装置包括:
阈值指针获取模块1010,用于获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置;
树形结构获取模块1020,用于根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构;
树形结构拆分模块1030,用于遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括与替换所述比较运算树的指标变量名相对应的指标变量节点,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
运算表达式生成模块1040,用于对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名;
逻辑运算树解析模块1050,用于对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式;
逻辑表达式生成模块1060,用于将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
可选的,所述运算表达式生成模块包括:
比较运算树识别单元,用于根据预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,识别所述比较运算树中的指标变量节点、比较运算节点和阈值指针节点;
比较运算树确定单元,用于根据所述指标变量节点确定指标变量名,根据所述比较运算节点确定比较运算符,并根据所述阈值指针节点确定阈值指针;
运算表达式生成单元,用于根据所述指标变量名、比较运算符和阈值指针,生成所述比较运算树对应的运算表达式。
可选的,所述指标变量节点的孩子节点为所述比较运算节点,所述比较运算节点的孩子节点为所述阈值指针节点。
可选的,所述逻辑运算树解析模块包括:
逻辑运算树识别单元,用于识别所述逻辑运算树中的逻辑运算节点和指标变量节点;
逻辑运算树确定单元,用于根据所述逻辑运算节点确定逻辑运算符,根据所述指标变量节点确定指标变量名,并根据所述逻辑运算树确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系;
逻辑表达式生成单元,用于基于所述逻辑运算节点之间的父子关系以及所述逻辑运算节点与指标变量节点的父子关系,根据所述逻辑运算符和指标变量名,生成包括替换所述比较运算树的指标变量名的逻辑表达式。
可选的,所述逻辑运算节点的孩子节点为其他逻辑运算节点或指标变量节点。
本申请实施例提供的逻辑表达式的读取装置,用于实现本申请实施例二中所述的逻辑表达式的读取方法的各步骤,装置的各模块的具体实施方式参见相应步骤,此处不再赘述。
本申请实施例公开的逻辑表达式的读取装置,通过阈值指针获取模块获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置,树形结构获取模块根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构,树形结构拆分模块遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树,运算表达式生成模块对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名,逻辑运算树解析模块对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式,逻辑表达式生成模块将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式,由于在树形结构中通过阈值指针指向阈值的存储位置,从而实现了阈值与表达式的解耦,降低了耦合度,而且在逻辑表达式相同而阈值不同时,只需在一个树形结构中通过不同的阈值指针确定,从而不需要重复存储逻辑表达式,节省了存储空间,在读取逻辑表达式时只需根据指定的阈值指针获取对应的树形结构并解析得到要读取的逻辑表达式。
相应的,本申请实施例还公开了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例一所述的逻辑表达式的存储方法或如本申请实施例二所述的逻辑表达式的读取方法。所述电子设备可以为PC机、移动终端、个人数字助理、平板电脑等。
本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例一所述的逻辑表达式的存储方法的步骤或如本申请实施例二所述的逻辑表达式的读取方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请实施例提供的一种逻辑表达式的存储及读取方法、装置、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

Claims (10)

1.一种逻辑表达式的存储方法,其特征在于,包括:
获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置;
解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式;
根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应;
根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构;
存储所述树形结构。
2.根据权利要求1所述的方法,其特征在于,所述根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,包括:
确定与所述运算表达式对应的指标变量名;
在所述逻辑表达式中,以所述指标变量名替换所述运算表达式;
识别替换后的逻辑表达式中的指标变量名和逻辑运算符;
根据所述逻辑运算符生成逻辑运算节点,并根据所述指标变量名生成指标变量节点;
根据所述替换后的逻辑表达式中的逻辑关系,确定所述逻辑运算节点之间的父子关系,并确定所述逻辑运算节点与所述指标变量节点的父子关系,生成所述逻辑运算树。
3.根据权利要求1所述的方法,其特征在于,所述根据所述运算表达式,生成所述运算表达式对应的比较运算树,包括:
识别所述运算表达式中的指标变量名、比较运算符和阈值指针;
根据所述指标变量名生成指标变量节点,根据所述比较运算符生成比较运算节点,根据所述阈值指针生成阈值指针节点;
基于所述运算表达式,根据所述指标变量节点、所述比较运算节点、所述阈值指针节点以及预先设置的指标变量节点、比较运算节点和阈值指针节点的父子关系,生成所述运算表达式对应的比较运算树。
4.根据权利要求1所述的方法,其特征在于,在存储所述树形结构之后,还包括:
在接收到所述逻辑表达式的扩展子表达式的情况下,生成所述扩展子表达式对应的扩展子树;
根据所述扩展子表达式与所述逻辑表达式的关系,将所述扩展子树添加到所述树形结构的相应节点下,得到扩展的树形结构。
5.根据权利要求1所述的方法,其特征在于,在存储所述树形结构之后,还包括:
响应于对所述树形结构的编辑操作指令,显示所述树形结构;
接收用户对所述树形结构的修改指令;
基于所述修改指令,对所述树形结构进行修改,得到修改后的树形结构。
6.一种逻辑表达式的读取方法,其特征在于,包括:
获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置;
根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构;
遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括与替换所述比较运算树的指标变量名相对应的指标变量节点,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名;
对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式;
将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
7.一种逻辑表达式的存储装置,其特征在于,包括:
表达式获取模块,用于获取待存储的逻辑表达式,所述逻辑表达式包括阈值指针,所述阈值指针指向所述逻辑表达式中阈值的存储位置;
运算表达式获取模块,用于解析所述逻辑表达式,获取所述逻辑表达式中的运算表达式;
比较运算树生成模块,用于根据所述运算表达式,生成所述运算表达式对应的比较运算树,所述比较运算树包括阈值指针节点,所述阈值指针节点的与所述阈值指针相对应;
逻辑运算树生成模块,用于根据所述逻辑表达式,生成以指标变量名替换所述运算表达式的逻辑运算树,所述逻辑运算树包括指标变量节点,所述指标变量节点与所述指标变量名相对应;
树形结构生成模块,用于根据所述比较运算树和所述逻辑运算树,生成待存储的逻辑表达式对应的树形结构;
树形结构存储模块,用于存储所述树形结构。
8.一种逻辑表达式的读取装置,其特征在于,包括:
阈值指针获取模块,用于获取待读取逻辑表达式的阈值指针,所述阈值指针指向所述待读取逻辑表达式中阈值的存储位置;
树形结构获取模块,用于根据所述阈值指针,获取与所述待读取逻辑表达式对应的树形结构;
树形结构拆分模块,用于遍历所述树形结构,将所述树形结构拆分为逻辑运算树和比较运算树;其中,所述逻辑运算树包括指标变量节点,所述指标变量节点与指标变量名相对应,所述比较运算树的叶子节点为阈值指针节点,所述阈值指针节点与所述阈值指针相对应;
运算表达式生成模块,用于对所述比较运算树进行解析,生成所述比较运算树对应的运算表达式,并确定所述运算表达式在所述逻辑运算树中的指标变量名;
逻辑运算树解析模块,用于对所述逻辑运算树进行解析,生成带有所述指标变量名的逻辑表达式;
逻辑表达式生成模块,用于将所述逻辑表达式中的指标变量名替换为与所述指标变量名对应的运算表达式,得到所述待读取逻辑表达式。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5任意一项所述的逻辑表达式的存储方法或权利要求6所述的逻辑表达式的读取方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至5任意一项所述的逻辑表达式的存储方法的步骤或权利要求6所述的逻辑表达式的读取方法的步骤。
CN201910668061.8A 2019-07-23 2019-07-23 逻辑表达式的存储及读取方法、装置、电子设备及介质 Active CN110532260B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910668061.8A CN110532260B (zh) 2019-07-23 2019-07-23 逻辑表达式的存储及读取方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910668061.8A CN110532260B (zh) 2019-07-23 2019-07-23 逻辑表达式的存储及读取方法、装置、电子设备及介质

Publications (2)

Publication Number Publication Date
CN110532260A true CN110532260A (zh) 2019-12-03
CN110532260B CN110532260B (zh) 2021-05-25

Family

ID=68661921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910668061.8A Active CN110532260B (zh) 2019-07-23 2019-07-23 逻辑表达式的存储及读取方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN110532260B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378008A (zh) * 2021-04-29 2021-09-10 上海工程技术大学 一种支持树形模型的操作回撤方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102457569A (zh) * 2010-10-25 2012-05-16 中国科学院声学研究所 一种面向物联网应用的Web服务的冗余检测方法及系统
CN102799806A (zh) * 2012-06-14 2012-11-28 中国人民解放军信息工程大学 一种基于树结构的密码算法逻辑表达式识别方法
CN106776888A (zh) * 2016-11-30 2017-05-31 北京赛迈特锐医疗科技有限公司 智能结构化搜索系统及其搜索方法
CN108491207A (zh) * 2018-03-02 2018-09-04 平安科技(深圳)有限公司 表达式处理方法、装置、设备及计算机可读存储介质
CN109460543A (zh) * 2018-10-18 2019-03-12 北京字节跳动网络技术有限公司 一种逻辑表达式的录入方法、装置、电子设备及可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102457569A (zh) * 2010-10-25 2012-05-16 中国科学院声学研究所 一种面向物联网应用的Web服务的冗余检测方法及系统
CN102799806A (zh) * 2012-06-14 2012-11-28 中国人民解放军信息工程大学 一种基于树结构的密码算法逻辑表达式识别方法
CN106776888A (zh) * 2016-11-30 2017-05-31 北京赛迈特锐医疗科技有限公司 智能结构化搜索系统及其搜索方法
CN108491207A (zh) * 2018-03-02 2018-09-04 平安科技(深圳)有限公司 表达式处理方法、装置、设备及计算机可读存储介质
CN109460543A (zh) * 2018-10-18 2019-03-12 北京字节跳动网络技术有限公司 一种逻辑表达式的录入方法、装置、电子设备及可读介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
兰洋: "一种利用二叉树来实现逻辑表达式自动推导的算法", 《信阳师范学院学报(自然科学版)》 *
肖红德: "表达式不同形式间转换及二叉树建立研究", 《软件导刊》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378008A (zh) * 2021-04-29 2021-09-10 上海工程技术大学 一种支持树形模型的操作回撤方法
CN113378008B (zh) * 2021-04-29 2022-10-11 上海工程技术大学 一种支持树形模型的操作回撤方法

Also Published As

Publication number Publication date
CN110532260B (zh) 2021-05-25

Similar Documents

Publication Publication Date Title
CN103309797B (zh) 用户界面自动化测试方法及装置
CN106250100A (zh) 系统逻辑控制方法及装置
CN105468702A (zh) 一种大规模rdf数据关联路径发现方法
CN108089893A (zh) 冗余资源的确定方法、装置、终端设备与存储介质
CN101571810B (zh) 执行程序的方法、验证程序结果的方法、装置及系统
CN101884198B (zh) 用于并行拓扑发现的方法和装置
CN114936019B (zh) 一种组件及策略联动方法、装置、设备、系统及存储介质
US20120109931A1 (en) Technique for compression of state information in the crawling of interactive client-server applications
CN103677765A (zh) 版本自动发布方法、装置及存储介质
CN102523155B (zh) 一种基于Boost库的K则最短路径搜索方法和系统
CN106598973A (zh) 一种基于云存储管理的智能检索的方法及系统
CN103092866B (zh) 数据监控方法及监控装置
CN107239492A (zh) Xml文档转换为对象、对象转换为xml文档的方法及装置
CN104516813A (zh) 网络页面的测试节点的选取方法和装置
CN107968833A (zh) 一种基于执行路径的云应用性能监测方法
CN102591641A (zh) 业务流程验证方法及系统
CN109656898A (zh) 基于节点度的分布式大规模复杂社团探测方法及装置
CN110532260A (zh) 逻辑表达式的存储及读取方法、装置、电子设备及介质
Mendling et al. Yet another event-driven process chain
CN102868601B (zh) 一种有关基于图形配置数据库业务网络拓扑的路由系统
CN103984554B (zh) 软件设计文档的生成方法及装置
CN103455964A (zh) 一种基于案件信息的案件线索分析系统及方法
Bonte et al. Streaming linked data: A survey on life cycle compliance
US20120109928A1 (en) Synchronization scheme for distributed, parallel crawling of interactive client-server applications
CN102420812A (zh) 一种支持分布并行处理的Web服务自动QoS组合方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant