1.一种银行交易资金流向路径检测方法,其特征在于,包括:构建并发的无锁共享数据结构;
根据银行交易记录构建有向图,并设置有向图中每个顶点为并发的无锁共享数据结构;所述根据银行交易记录构建有向图,包括:在所述有向图中增加一个虚拟顶点,所述虚拟顶点指向所述有向图中的每一个顶点,所述虚拟顶点与所述有向图中的每一个顶点之间构成一条有向边;
获取待检测账号流水信息,并从所述待检测账号流水信息中提取流入流出账户对;
当发起待检测账号交易路径的检测请求时,根据所述流入流出账户对,采用多线程并行检测方法检测所述有向图,获得待检测账号的交易路径。
2.根据权利要求1所述的银行交易资金流向路径检测方法,其特征在于,所述根据银行交易记录构建有向图,具体包括:将银行交易记录中每一条交易流水为一条有向边,每一条交易流水的资金转出账户为起始顶点,每一条交易流水的资金转入账户为终止顶点,构建出银行交易记录的有向图。
3.根据权利要求1所述的银行交易资金流向路径检测方法,其特征在于,所述并发的无锁共享数据结构包括:isDone标记、isReachable标记和存放邻居结点指针的动态数组;
isDone标记为true称为已完成结点,已完成结点表示结点的所有邻居结点已被一个线程探索完成;
isDone标记为false称为未完成结点,未完成结点表示结点的邻居结点还未被遍历完;
isReachable标记为true称为可达结点,可达结点表示结点为终点或通过结点可以到达终点;
isReachable标记为false称为不可达结点,不可达结点表示任何结点通过结点都不可到达终点。
4.根据权利要求3所述的银行交易资金流向路径检测方法,其特征在于,根据所述流入流出账户对,采用多线程并行检测方法检测所述有向图,获得待检测账号的交易路径,具体包括:根据所述流入流出账户对,以所述流入流出账户对中的资金转出账户为起点,以所述流入流出账户对中的资金转入账户为终点,每个线程运行深度优先算法并行检测所述有向图,协同得到流入流出账户对间的所有交易路径。
5.根据权利要求4所述的银行交易资金流向路径检测方法,其特征在于,所述每个线程运行深度优先算法并行检测所述有向图,具体包括:基于所述有向图构建路径栈,并将所述虚拟顶点作为路径栈的栈顶结点;
将终点标记为可达结点和已完成结点,同时将终点以外的所有结点置为未访问,并将起点压入路径栈;
基于所述起点判断所述路径栈是否为空,得到第一判断结果;
若所述第一判断结果表示是,则结束检测;
若所述第一判断结果表示否,则提取所述路径栈的栈顶结点;
遍历所述栈顶结点的邻居结点;
在遍历所述栈顶结点的邻居结点过程中,判断所述栈顶结点是否为已完成结点且不可达结点,得到第二判断结果;
若所述第二判断结果表示是,则所述栈顶结点出栈,将所述栈顶结点的邻居结点作为新的栈顶结点,并返回执行“遍历所述栈顶结点的邻居结点”;
若所述第二判断结果表示否,则获取所述栈顶结点的任意一个邻居结点,记为邻居结点u;
若邻居结点u为已完成结点且可达结点,则将所述栈顶结点标记为可达结点,并返回执行“基于所述起点判断所述路径栈是否为空,得到第一判断结果”;
若邻居结点u为未完成结点且未被访问过,则将邻居结点u入栈且标记为已访问,并返回执行“基于所述起点判断所述路径栈是否为空,得到第一判断结果”;
在遍历完所述栈顶结点的邻居结点后,判断所述栈顶结点的邻居结点是否有可达结点,得到第三判断结果;
当所述第三判断结果为是时,将所述栈顶结点标记为可达结点;
令所述栈顶结点出栈且标记为未访问,并将所述栈顶结点的邻居结点作为新的栈顶结点,并返回执行“遍历所述栈顶结点的邻居结点”;
当所述第三判断结果为否时,令所述栈顶结点出栈且标记为未访问,并将所述栈顶结点的邻居结点作为新的栈顶结点,并返回执行“遍历所述栈顶结点的邻居结点”。
6.一种银行交易资金流向路径检测系统,其特征在于,包括:共享数据结构构建模块,用于构建并发的无锁共享数据结构;
有向图构建模块,用于根据银行交易记录构建有向图,并设置有向图中每个顶点为并发的无锁共享数据结构;
待检测信息获取模块,用于获取待检测账号流水信息,并从所述待检测账号流水信息中提取流入流出账户对;
检测模块,用于当发起待检测账号交易路径的检测请求时,根据所述流入流出账户对,采用多线程并行检测方法检测所述有向图,获得待检测账号的交易路径。
7.一种电子设备,其特征在于,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述的银行交易资金流向路径检测方法。
8.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被执行时实现如权利要求1至5中任一项所述的银行交易资金流向路径检测方法。