[发明专利]一种基于并行环路检测的虚开增值税专用发票检测方法有效
申请号: | 201710147850.8 | 申请日: | 2017-03-14 |
公开(公告)号: | CN106920162B | 公开(公告)日: | 2021-01-29 |
发明(设计)人: | 丁军;张宇;牛臻;刘卓瑞;谢峰;刘海明;卢华 | 申请(专利权)人: | 西京学院 |
主分类号: | G06Q40/00 | 分类号: | G06Q40/00 |
代理公司: | 西安西达专利代理有限责任公司 61202 | 代理人: | 郭秋梅 |
地址: | 710199 陕西*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 并行 环路 检测 虚开 增值税专用发票 方法 | ||
1.一种基于并行环路检测的虚开增值税专用发票检测方法,其特征在于,包括以下步骤:
1)构建数据结构来对图数据进行存储;
2)采用了BSP总体同步并行计算模型思想作为算法的主体;
3)数据存储单元会将图数据分布式的保存在各个计算节点中,在每个超级步中,集群中的各个进程,也就是Processors会提取数据存储单元中的数据来进行计算;每一个超级步中包含计算主要分成3个部分,分别为Vprog点初始化,SendMsg分发信息,MergeMsg结合信息;所述的Vprog点初始化表示将设定的初始化程序运行在每一个顶点中,负责接收进来的信息,计算新的顶点信息,并将满足条件的点进行激活;所述的SendMsg分发信息是指被激活的点会向它的下一个节点进行信息传递,由于分布式计算,SendMsg传来的信息会有多条;所述的MergeMsg结合信息则负责将这些多条信息安装一定的规则整合到一起,再交给Vprog;
4)Vprog点初始化负责在每个超级步的初始阶段,对每个顶点的信息进行初始化以及更新;
5)SendMsg分发信息模块负责生成路由信息同时检测环路,对各类的情况进行分析设计,顶点的数据结构定义为 Int VertexId,String route,Int round,Int flag,同时已知flag为点属性中保存标志位信息,且数值0表示该顶点从来没有被激活过,1表示该顶点被激活,2表示该顶点曾经被激活过但现在处于未激活状态,所以在SendMsg阶段,就需要通过标志位信息调用不同的send方法;在进行SendMsg分发信息时,源节点一定处于激活状态;
6)MergeMsg结合信息是这个算法主体的最后一个部分,MergeMsg结合信息会将SendMsg暂存的信息以设定的方法,将信息结合到一起,并赋给newMsg,MergeMsg模块主要分成2类情况来进行分析;
a更新节点的节点信息都是来自上一层节点;
b更新节点的信息除了来自上层节点外,自身也会传来“过时”的节点信息,即这个节点在上个超级步中也是处于激活状态,它的信息往下一层传递后,它自身要消去激活状态,所以,在迭代器中,也会保存它自身“过时”的信息;
构建数据结构来对图数据进行存储,使用Vertex来存储顶点信息,属性包括ID和点属性,这其中,用户自定义点属性包含的信息,同时,使用Edge来存储边信息,属性包括三个部分,源顶点的ID,目标顶点的ID,边属性,同样边属性的内容可由用户进行设计,在算法的实现过程中,Edge的边属性只需要保存点的连通方向,所以在边属性中保存了点之间的距离,用Int sourceId,Int destinationId,Int distance表示, sourecId表示为源顶点的ID,destinationId为目标顶点的ID,而distance则表示2个顶点之间的距离,具体表示从源顶点指向目标顶点,且距离为distance值,而Vertex中所需要保存的信息会相对较多,主要将各个顶点的路由,标志位,超级步这三类信息保存在点属性中,具体的数据结构使用IntVertexId,String route,Int round,Int flag,VertexId表示顶点的id信息,route表示顶点的当前超级步更新的路由,round表示当前进入第几个超级步,flag值为标志位,其中,0表示该顶点没有被激活,1表示该顶点被激活,2表示该顶点曾经被激活过,但现在处于未激活状态;
BSP模型由以下几个方面来描述:
a、Processors,指的是集群中的进行并行计算的进程,一个集群中会包含多个Processors计算进程;
b、LocalComputation,指单个Processors的计算,即每个Processors进行的本地计算;
c、Communication,指各个Processors间的通讯,各个并行计算的进程通过信息交互来实现同步;
d、Superstep,叫做超级步,指BSP的一次计算迭代,一个算法由许多的超级步构成,一个超级步相当于一个集群一次总体的分布式计算;
e、BarrierSynchronization,叫做障碍同步或者栅栏同步,每一次同步就是一个超步的完成以及下一个超步的开始;
f、程序什么时候结束,由程序的主节点Master确定,Master在若干个超步后,发现所有的进程的计算都已经结束且再没有新的计算任务,即通知所有的Processors结束并退出任务;
Vprog负责在每个超级步的初始阶段,对顶点信息进行初始化以及更新,分为2个方面:
a、当第一次运行该算法时,图信息的初始化;
b、该算法以及运行了若干个超级步后,图信息的更新;
在进行SendMsg时,源节点一定处于激活状态,由flag的状态分类可知,flag分成以下3种情况:
a、situation1对应它的源节点处于激活状态,而它的目标节点处于非激活状态,且从未被访问过,所以取源节点中的route信息,更新目标节点的route信息,源节点的route信息可能保存不只一条路径,即当源节点的上层节点有多个节点同时指向它时或者它的上层节点内本身就保存了多条路由时,这个路由情况就会继承下来,它也会保存多条路由,这种情况的产生会在MergeMsg模块进行解释,所以每一条路由信息都要更新到目标节点中,在更新完路由信息后,还需将目标节点激活,并在目标节点的round中记录当前超级步阶段,再把源节点转换为非激活状态,除此之外,SendMsg模块会将所有的信息先暂存在迭代器Iterator中,信息的整合将在MergeMsg模块进行;
b、situation2对应它的源节点处于激活状态,目标节点处于非激活状态,但目标节点曾经被访问过,在这种情况下,除了像situation1一样需要将路由情况更新到目标节点中外,还需要判断是否已经形成环路,假如没有形成环路,则不需要进行处理;假如形成了环路,还要分成3种情况进行分析,第1种就是源节点的route里只保存了一条路径,假如这条路径与目标节点形成环路,将环路输出,且不需要再对目标节点进行激活;第2种情况就是源节点的route里保存了多条路径,且至少有一条路径与目标节点形成环,但没有全部路径都形成环路,那么将形成环路的节点输出,在更新目标节点的route时,去掉以及形成环路的路径,保存还没有形成环路的路径,再更新目标节点的round值并激活目标节点;第3种情况与第1中情况类似,源节点的route里保存了多条路径,但每条路径都与目标节点构成了环路,那么也将形成环路的路径输出,也不必对目标节点进行激活,最后,再将源节点的激活状态转化成非激活状态,这些输出会都先暂存在迭代器Iterator中;
c、situation3,的路由情况为源节点处于激活状态,而其目标节点也处于激活状态,目标节点是否处于激活状态对SendMsg并不会造成影响,它提供的有用的信息就是它的目标节点曾经被访问过,也就是situation2这种情况,SendMsg更新的信息是先暂存在迭代器Iterator中,直到MergeMsg模块,再将这个超级步中所有的运行结果更新;
对于第一种情况,需要考虑的节点的前驱,即上层有多个的情况,也就是这个原因,造成了上文SendMsg模块中situation1的节点的route中保存了多条路径,需要将他们所有的route信息都要结合到一起形成newMsg,同时,使用“;”来进行分隔多条路径,对于第二种情况,使用到点属性中的round属性值,也就是通过round值来区分是第一类情况还是第二类情况;round值记录了该顶点被激活时的超级步的阶段,假如取出2个迭代器中的round相同,则表明这是第一种情况,而假如取出2个迭代器中的round有大小只差,则表明round值较小的是“过时”的,即可去掉,保存round值较大的值即可。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西京学院,未经西京学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710147850.8/1.html,转载请声明来源钻瓜专利网。