1.本发明涉及图数据处理领域,具体来说涉及资金网络的图数据处理领域,更具体地说,涉及一种用于资金网络的图数据处理方法。
背景技术:2.随着对数据间关系的形象表示以及对数据大规模分析的需求持续增长,在许多领域中,大规模的图计算受到了广泛关注。图(graph)是描述事物关联属性最常用的一种数据结构,现实生活中的诸多应用场景都可以用图结构来表示。例如,用户之间的转账形成的资金网络可以用带权重的有向图来直观的表示,其中用户对应于图结构中的顶点,转账方向以及金额对应于图结构中的边。资金网络表示为图结构之后,就有多种方法来对图数据进行处理。通过对金融风控的资金流水图结构进行建模与分析,可以有效的识别其中的循环转账,能辅助公安等机关挖掘出洗钱的组织,也能帮助银行预防信用卡的诈骗。
3.在对图结构进行分析时,需要对图结构进行遍历,其中主要采用的算法是宽度优先搜索算法(breadth first search,简称bfs算法)。bfs算法是解决图遍历问题的经典算法,也是很多重要图算法的基础。其基本思想是,对于图结构g=(v,e),其中v表示顶点集合,e表示边集合,在给定源顶点后,bfs算法将开始搜索图g中源顶点所有可达的邻居顶点。在bfs算法开始时,将源顶点放入当前层的活跃顶点队列。如果当前层队列存在活跃顶点,依次检查队列中活跃顶点的所有邻居顶点;如果某一个邻居顶点没有被访问过,则更新该邻居顶点的父亲和距离信息,然后将该邻居顶点放入下一层的活跃顶点队列。循环迭代,直到处理完当前层队列中的所有顶点,开始下一层的搜索。
4.bfs算法逐层不重不漏的遍历特性决定了它能查找到资金网络中所有的循环转账,这样可以发现图数据中存在的所有环路。但是,由于资金流水网络的数据规模巨大,某些特性的环路并不是用户所需的。因此,如果直接采用现有bfs算法,bfs算法会逐层遍历直至最后一层,易产生无效的计算,浪费计算资源和降低检测效率,导致检测时效性不高。因此,有必要对现有技术进行改进。
技术实现要素:5.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于资金网络的图数据处理方法。
6.本发明的目的是通过以下技术方案实现的:
7.根据本发明的第一方面,提供一种用于资金网络的图数据处理方法,包括:获取与所述资金网络相关的图数据,其中,所述图数据包括节点和边,其中节点表示用户,边表示资金流向以及资金数额;根据图数据中的每条边构建与之方向相反的虚边;获取图数据的源节点以及用于限定所需资金环路要求的约束参数,从源节点开始根据图数据中的边和约束参数进行正向遍历以及根据图数据中的虚边和约束参数进行反向遍历;基于正向遍历和反向遍历的结果,确定图数据中存在的资金环路。
8.在本发明的一些实施例中,所述约束参数包括资金环路的规模、相邻边的资金比限制、相邻边的资金浮动比限制、最低资金数额要求或者其组合。
9.在本发明的一些实施例中,所述从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:根据资金环路的规模参数,确定正向遍历的第一遍历深度以及反向遍历的第二遍历深度;基于bfs算法,从源节点开始根据图数据中的边进行正向遍历,其中,正向遍历的深度达到第一遍历深度时终止正向遍历的bfs算法并存储正向遍历的结果;基于bfs算法,从源节点开始根据图数据中的虚边进行反向遍历,其中,反向遍历的深度达到第二遍历深度时终止反向遍历的bfs算法并存储反向遍历的结果。
10.在本发明的一些实施例中,所述从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历和反向遍历时,根据两条相邻边的资金数额确定相邻边的资金比;将资金比不满足资金比限制的相邻边确定为不可达相邻边,为不可达相邻边标记不可达信息。
11.在本发明的一些实施例中,所述从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历和反向遍历时,根据两条相邻边的资金数额确定相邻边的资金浮动比;将资金浮动比不满足资金浮动比限制的相邻边确定为不可达相邻边,为不可达相邻边标记不可达信息。
12.在本发明的一些实施例中,在正向遍历的过程中发现边中的不可达相邻边时,同时为边中的不可达相邻边所对应的虚边中相邻边标记不可达信息;或者在反向遍历的过程中发现虚边中的不可达相邻边时,同时为虚边中的不可达相邻边所对应的边中相邻边标记不可达信息。
13.在本发明的一些实施例中,所述从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历或者反向遍历时,根据边的资金数额确定不满足最低资金数额要求的边,不对该边所指向的节点进行后续的遍历。
14.在本发明的一些实施例中,所述方法还包括:根据资金网络中一段时间内的初始转账数据,构建图数据。
15.在本发明的一些实施例中,所述图数据按照以下方式构建:获取资金网络对应的初始转账数据,所述初始转账数据包括资金关系中的账号和转账金额;将初始转账数据中两个账号之间同方向的所有转账合并为一次转账后,递归去除入度和出度之和小于等于1的账号,得到第一转账数据;根据第一转账数据中所有的本端账号以及对端账号进行重映射,为所有账号分配编号连续的局部用户id,得到第二转账关系,并建立局部用户id与账号的映射关系;根据第二转账关系构建图数据。
16.在本发明的一些实施例中,所述图数据处理方法还包括:利用多个处理线程并行处理所述图数据。
17.在本发明的一些实施例中,利用多个处理线程并行处理所述图数据的步骤包括:在开始处理图数据之前,确定用于处理图数据的处理核总数以及每个处理核对应缓存的数据块大小;根据所述处理核总数生成对应数量的处理线程,在每个处理核所在设备为处理线程保留专属内存区域以及在所有处理核都能访问的设备中为所有线程保留共享内存区
域的配置信息;根据每个处理核对应缓存的数据块大小,设置处理线程处理的数据块大小,以与其所要部署的核对应缓存的数据块大小相一致;利用生成的多个处理线程对图数据进行并行处理,并且利用专属内存区域保存各线程进行遍历所需的数据以及中间遍历结果,利用共享内存区域保存遍历过程所需共享的信息。
18.根据本发明的第二方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序可被处理器执行以实现第一方面中任一项所述方法的步骤。
19.根据本发明的第三方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现权利要求第一方面所述方法的步骤。
附图说明
20.以下参照附图对本发明实施例作进一步说明,其中:
21.图1为根据本发明实施例的图数据处理方法的流程示意图;
22.图2为根据本发明实施例的转账关系的示意图;
23.图3为根据本发明实施例的转账关系构建的图数据的示意图;
24.图4为现有技术构建的原始的图数据的结构示意图;
25.图5为根据本发明实施例的图数据处理方法构建虚边的原理示意图;
26.图6根据本发明实施例的图数据处理方法进行双向遍历的示意图;
27.图7根据本发明实施例的图数据处理方法利用多个处理线程进行处理的示意图。
具体实施方式
28.为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
29.如在背景技术部分提到的,由于资金流水网络的数据规模巨大,某些特性的环路并不是用户所需的(比如:而且资金网络中往往需要检测特定长度的环路,bfs算法难以适配)。因此,如果直接采用现有bfs算法,bfs算法会逐层遍历直至最后一层,易产生无效的计算,浪费计算资源和降低检测效率,导致检测时效性不高。本发明在原始的图数据中,根据每条边构建与之方向相反的虚边,这样得到的虚边除方向外可以保持原有边的其余特性;并且本发明添加了用于限定所需资金环路要求的约束参数,基于约束参数和边进行正向遍历,基于约束参数和虚边进行反向遍历;可以高效地确定图数据满足所需资金环路要求的资金环路。进而基于确定的资金环路对资金网络中的风险(如洗钱、信用卡诈骗等)进行把控。
30.根据本发明的一个实施例,提供一种图数据处理方法,或者说一种用于资金网络的图数据处理方法,包括步骤:a1、a2、a3、a4、a5。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。
31.步骤a1:根据资金网络中一段时间内的初始转账数据,构建图数据。
32.若对处理数据的时效要求不高,根据本发明的一个实施例,直接根据初始转账数据构建图数据。
33.对于寻找环路的任务,并非所有的原始数据都是有用,为了提供处理数据的时效,根据本发明的一个实施例,图数据按照以下方式构建:获取资金网络对应的初始转账数据,所述初始转账数据包括资金关系中的账号和转账金额;将初始转账数据中两个账号之间同方向的所有转账合并为一次转账后,递归去除入度和出度之和小于等于1的账号,得到第一转账数据;根据第一转账数据中所有的本端账号以及对端账号进行重映射,为所有账号分配编号连续的局部用户id,得到第二转账关系,并建立局部用户id与账号的映射关系;根据第二转账关系构建图数据。根据本发明的一个实施例,资金关系中的账号包括本端账号id、对端账号id。对应的,资金网络对应的初始转账数据(也可称原始资金网络转账记录)包括本端账号id、对端账号id和转账金额。例如,资金网络对应的初始转账数据中的一条数据为0146464,0151313,1000,其表示账号为0146464用户向账号为0151313的用户转账1000元。根据本发明的一个实施例,重映射是为账号分配编号连续的账号,比如,从0开始,或者从1、2等开始,连续编号。
34.根据本发明的一个实施例,该图数据处理方法包括:读入资金网络对应的初始转账数据(例如:包含资金流水的文本文件,每一行代表一次资金交易记录,包含本端账号id、对端账号id、转账金额,数据用逗号隔开);根据初始转账数据,构建图数据,其中,构建图数据包括对初始转账数据进行预处理,初始转账数据进行预处理包括将同账号之间的相同方向的转账合并、递归去除入度和出度之和小于等于1的账号、对转账金额取整、对账号进行重映射或者其组合。处理账号做用户节点id的重映射以及数据预处理。把a到b的多次转账合为一次(转账金额加和),不仅可以便于后续处理,也可以便于后续利用这段时间内账号间的实际转账数额,更有利于发现金融风险。对账号的度数的统计以及把总度数(入度以及出度之和)小于等于1的账号依次递归地去掉(清理掉一些边缘的账号后可能会有新的账号成为新的边缘,所以需要递归去掉),是因为总度数小于等于1的节点肯定不是环中的节点,去掉后可以提高后续的处理时效。小数虽然精确,但是对金融风控而言,小数点后的数值意义不大,因此,可以把转账金额整理为整数以提高后续处理时效。重映射是为了使不连续不紧凑的用户的账号id信息更紧凑更好处理。对初始转账数据进行预处理后,可以根据预处理得到的转账关系(根据余下的账号与其(出/入)度数和边信息),构建压缩稀疏行(compressed sparse row(csr))形式的图数据。例如,假设最后得到7个账号,彼此之间的转账关系如图2所示;然后,根据该转账关系可以构建图3所示的图数据。重映射不仅为账号分配紧凑连续编号,为了便于找到资金环路后还原真实的账号信息,本技术通过重映射还会建立局部用户id和原来的账户的关系。图数据的结构示意图参见图4,包括节点(vertex)和出边节点表(out edges)。以节点1为例,出边节点表中对应于节点1(节点1指向的)的是其出边,对其他节点也是如此。
35.步骤a2:获取图数据,其中,所述图数据包括节点和边,其中节点表示用户,边表示资金流向以及资金数额。
36.根据本发明的一个实施例,图数据可以是根据初始转账数据直接构建的图。或者,按照步骤a1中,经过将同账号之间的相同方向的转账合并、递归去除入度和出度之和小于等于1的账号、对转账金额取整、对账号进行重映射或者其组合后,构建的图数据。具体实现时可以根据客户的需求设计,本发明对此不作任何限制。另外,资金数额可以是指实际所发生的资金额,或者,可以是对所有实际所发生的资金额进行等比缩放所得到的的缩放后的
资金额。
37.步骤a3:根据图数据中的每条边构建与之方向相反的虚边。
38.从图4可以看到,原始的图数据是采用节点以及其指向的节点的形式保存的,这不利于加速图遍历,为了加快图数据的处理,根据本发明的一个实施例,本技术根据图数据中的每条边构建与之方向相反的虚边,本技术中,边是图数据中原有的边,虚边是根据边虚构的用于后续反向遍历的边。例如,一条边由用户1指向用户2,资金数额为100;对应建立的一条由用户2指向用户1的虚边,资金数额为100。在图4的基础上,构建虚边后,图数据的结构示意图参见图5。
39.步骤a4:获取图数据的源节点以及用于限定所需资金环路要求的约束参数,从源节点开始根据图数据中的边和约束参数进行正向遍历以及根据图数据中的虚边和约束参数进行反向遍历。
40.金融风控领域对所需监控的资金环路的需求有差异,如果将图数据整体遍历完了再来匹配需求,则会造成过多的无效计算,影响时效和用户体验,根据本发明的一个实施例,本技术在遍历时可添加约束参数,约束参数可以由客户自定义设置。优选的,约束参数包括资金环路的规模、相邻边的资金比限制、相邻边的资金浮动比限制、最低资金数额要求或者其组合。
41.为了提高数据处理效率、节约计算资源、提高用户体验,根据本发明的一个实施例,从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:根据资金环路的规模参数,确定正向遍历的第一遍历深度以及反向遍历的第二遍历深度;基于bfs算法,从源节点开始根据图数据中的边进行正向遍历,其中,正向遍历的深度达到第一遍历深度时终止正向遍历的bfs算法并存储正向遍历的结果;基于bfs算法,从源节点开始根据图数据中的虚边进行反向遍历,其中,反向遍历的深度达到第二遍历深度时终止反向遍历的bfs算法并存储反向遍历的结果。例如,资金环路的规模参数是一个具体的值,如6,表示资金环路中的节点为6个节点。又例如,资金环路的规模参数是一个范围,如[3,7]中的整数。再例如,资金环路的规模参数是多个值,比如,4,5和7。具体可以根据客户的风控需求设置,本发明对此不作任何限制。
[0042]
金融风控中,相邻边的资金比过低或者过高,表示相应的节点不是需要监管的对象,因此,为了进一步提高处理时效,根据本发明的一个实施例,从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历和反向遍历时,根据两条相邻边的资金数额确定相邻边的资金比;将资金比不满足资金比限制的相邻边确定为不可达相邻边,为不可达相邻边标记不可达信息。不可达信息用于后续遍历的剪枝操作。优选的,剪枝操作包括:后续待遍历的相应节点与在先遍历的节点构成的边为不可达相邻边时,不对该待遍历的相应节点进行后续遍历。比如:后续遍历如果发现后续待遍历的相应节点与在先遍历的节点构成的边属于不可达相邻边,则不对该待遍历的相应节点进行后续遍历(比如将该待遍历的相应节点从待遍历的下一层活跃节点中移除,以实现剪枝操作)。资金比限制可以设置为例如[0.3,3],具体可以根据客户的风控需求设置,本发明对此不作任何限制。
[0043]
金融风控中,相邻边的资金浮动比过低或者过高,也可能表示相应的节点不是需要监管的对象,因此,为了进一步提高处理时效,根据本发明的一个实施例,从源节点开始
基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历和反向遍历时,根据两条相邻边的资金数额确定相邻边的资金浮动比;将资金浮动比不满足资金浮动比限制的相邻边确定为不可达相邻边,为不可达相邻边标记不可达信息。不可达信息用于后续遍历的剪枝操作。资金浮动比是指相邻边中的前边的资金数额减去后边的资金数额得到的差值除以前边的资金数额。应当理解,本领域技术人员还可以有其他的资金浮动比的计算方式可选,比如:资金浮动比是指相邻边中的后边的资金数额减去前边的资金数额得到的差值除以后边的资金数额。对应的,设置资金浮动比限制可以用于从边所承载的信息选择客户所要监管的对象范围.资金浮动比限制可以设置为例如[-30%,30%],具体可以根据客户的风控需求设置,本发明对此不作任何限制。
[0044]
由于可能是在边或者虚边中先发现不可达相邻边,而另一个方向的遍历也存在对应的不可达相邻边;因此,为了进一步提高处理效率,根据本发明的一个实施例,在正向遍历的过程中发现边中的不可达相邻边时,同时为边中的不可达相邻边所对应的虚边中相邻边标记不可达信息;或者在反向遍历的过程中发现虚边中的不可达相邻边时,同时为虚边中的不可达相邻边所对应的边中相邻边标记不可达信息。
[0045]
金融风控中,客户对资金数额的监管也可能存在需求,比如资金数额过低的交易也不属于需要监管的对象,因此,为了进一步提高时效,根据本发明的一个实施例,所述从源节点开始基于图数据中的边和约束参数进行正向遍历以及基于图数据中的虚边和约束参数进行反向遍历的步骤包括:在正向遍历或者反向遍历时,根据边的资金数额确定不满足最低资金数额要求的边,不对该边所指向的节点进行后续的遍历。
[0046]
步骤a5:基于正向遍历和反向遍历的结果,确定图数据中存在的资金环路。
[0047]
在约束参数包括资金环路的规模参数时,根据本发明的一个实施例,基于正向遍历和反向遍历的结果,确定图数据中存在的资金环路的步骤包括:基于约束参数中资金环路的规模参数、正向遍历和反向遍历的结果,确定图数据中存在的资金环路。根据本发明的一个实施例,基于正向遍历和反向遍历的结果,确定图数据中存在的资金环路的步骤包括:确定正向遍历和反向遍历的结果中层数之和等于所述资金环路的规模参数中限定的任意整数值的一组或者多组关联层,查找关联层中节点相等(即账号相等或者局部用户id相等)的节点用于构建资金环路。比如,结合图3,假设要求资金环路的规模参数是环的节点数属于[3,7],则bfs算法反向遍历3层、正向4层就完全能找到长度在3到7之间的环。如反向遍历的第二层和正向遍历的第二层的层数之和为4,等于[3,7]中的整数4,属于一组关联层;正向遍历到2层时,部分遍历的结果包括:节点1(源节点)-节点2(正向遍历的第一层)-节点5(正向遍历的第二层),反向遍历到2层时,部分遍历的结果包括:节点1(源节点)-节点4(反向遍历的第一层)-节点5(反向遍历的第二层);由此,可以发现关联层中节点5相等,从而可到一条资金环路:从节点1开始,经过节点2、5、4再回到1。类似地,可找出其他满足资金环路的规模参数的资金环路。
[0048]
在约束参数不包括资金环路的规模参数时,可以找出存在的所有环路,根据本发明的一个实施例,基于正向遍历和反向遍历的结果,确定图数据中存在的所有资金环路。或者,也可以在确定图数据中存在的所有资金环路指定环路的规模。比如,指定寻找3-6个节点构成的环路。
[0049]
根据本发明的一个实施例,本技术中,资金环路用于金融风险控制。例如,所述图数据处理方法还包括:基于资金环路进行金融风险控制。例如,反洗钱、预防信用卡的诈骗等金融风险控制,由此,可以帮助客户更高效地进行金融风险控制,节约劳动成本,提高用户体验。
[0050]
根据本发明的一个实施例,该实施例可以仅包括步骤a2、a3、a4、a5和a6。图数据由其他设备处理好发送给根据本技术的方法实现的程序进行后续的图遍历。
[0051]
除上述问题之外,现存技术(传统的基于bfs算法检测环的技术)的另一方面缺点是不注重软硬件的结合,专用的图计算加速硬件又难以获取,但numa结构的多核心的arm或x86结构的通用处理器是服务器的标配。为了提高遍历的效率,可以利用多线程并行遍历,根据本发明的一个实施例,所述图数据处理方法还包括:利用多个处理线程并行处理所述图数据。根据本发明的一个实施例,利用多个处理线程并行处理所述图数据的步骤包括:在开始处理图数据之前,确定用于处理图数据的处理核总数以及每个处理核对应缓存的数据块大小;根据所述处理核总数生成对应数量的处理线程,在每个处理核所在设备为处理线程保留专属内存区域以及在所有处理核都能访问的设备中为所有线程保留共享内存区域的配置信息;根据每个处理核对应缓存的数据块大小,设置处理线程处理的数据块大小,以与其所要部署的核对应缓存的数据块大小相一致;利用生成的多个处理线程对图数据进行并行处理,并且利用专属内存区域保存各线程进行遍历所需的数据以及中间遍历结果,利用共享内存区域保存遍历过程所需共享的信息。例如,专属内存区域和共享内存区域都可以保存图数据以用于正向遍历和/或反向遍历。专属内存区域可以保存其对应处理线程的中间遍历结果,一定周期或者完成遍历后更新中间遍历结果或者最终遍历结果到共享内存区域。专属内存区域还可以保存对应处理线程标记的不可达信息,并更新到共享内存区域,以便所有处理线程同步不可达信息,提高遍历的时效。
[0052]
根据本发明的一个实施例,所述图数据处理方法还包括:在正向遍历或者反向遍历时,根据遍历出的当前层的节点进行下一层节点的遍历的过程中,每个处理线程每次按由小到大的顺序读取当前层的节点中未遍历的预定个数的节点(如1个、2个或者3个,更多节点也可以,但是不利于负载均衡)进行处理,并且如果后续遍历到比读取的节点的编号更小的节点直接跳过。由此,以保证各个处理线程间的负载均衡。例如,参见图5,每个处理线程每次依次从未标记的节点集中取一个节点(编号暂记为v)并标记(这样能保证各个线程不会冲突访问同一个节点,下一个线程要取的节点就只能是v+1或更大编号),然后双向对此节点进行基于bfs算法的双向遍历,同时对反向与正向遍历到的节点编号小于当前节点编号(暂记为v)的节点直接跳过(这样能保证从节点v找到的环中最小的节点编号就是v,保证找到的环不重,可以反证:若环中有节点编号小于v的节点,那先前一定有某个线程取了这个节点并找完经过这个节点的所有环了)。当前线程每次找完以v为开始的环,则会把环路输出到自己的内存区域(输出的内容是用户原本的id,可以根据步骤一中的节点映射反向得到),然后去取下一个未标记的节点继续操作。多个处理线程中每个处理线程每次都只处理一个节点,处理完后取下一个未处理节点,这样能保证各个线程间的负载均衡。
[0053]
参见图7,示出了根据本技术对应方法实现的程序在单机上的运行情况,由于各个处理线程的并行性,程序也可以很简单的扩展到分布式多机环境中执行。其中,图7中的箭头表示把处理线程0-5分别部署在设备的处理器中的处理核0-5上,每个处理线程都被固定
到底层的一个处理器(cpu)的处理核(core)上以高效运行;并且,在设备中为处理线程0-5分别分配专用的专属内存区域0-5,以及共用的共享内存区域。由此,本技术可以借助多线程以高效地运行。
[0054]
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0055]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0056]
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0057]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。