本技术涉及网络图布局,特别是涉及一种图数据处理方法、装置、计算机设备、存储介质和程序产品。
背景技术:
1、随着互联网技术与计算机技术的不断提高和普及,网络上的数据可形成复杂的图,图又称网络图或关系图,是一种抽象的数据类型,包括节点和边,用于表示多个对象之间的相互关系。图数据的布局即图数据的可视化,是指通过布局算法将抽象的图数据进行具象展示。然而,图数据的布局通常在浏览器中完成,而且通常图数据的体量较大,布局过程占用浏览器资源,且cpu占用比较大,导致页面会非常卡顿,布局效率较低。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提升了布局效率的图数据处理方法、装置、设备、存储介质和程序产品。
2、第一方面,本技术提供了一种图数据处理方法。所述方法包括:
3、获取待布局的图数据,所述图数据包括多个节点以及所述多个节点中相邻节点之间的边权重;
4、创建布局主线程以及多个并行的布局子线程;
5、通过所述布局主线程根据所述图数据初始化共享内存,以及为各所述布局子线程分配不同的节点;所述共享内存用于记录各节点的节点数据,所述节点数据包括节点位置、相邻节点以及与相邻节点间的边权重;
6、通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置;
7、通过所述布局主线程根据调整后的节点位置,更新所述共享内存中所述所遍历节点的节点数据;
8、在所述共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置;所述布局位置用于可视化展示所述图数据。
9、第二方面,本技术还提供了一种图数据处理装置。所述装置包括:
10、获取模块,用于获取待布局的图数据,所述图数据包括多个节点以及所述多个节点中相邻节点之间的边权重;
11、多线程创建模块,用于创建布局主线程以及多个并行的布局子线程;
12、节点分配模块,用于通过所述布局主线程根据所述图数据初始化共享内存,以及为各所述布局子线程分配不同的节点;所述共享内存用于记录各节点的节点数据,所述节点数据包括节点位置、相邻节点以及与相邻节点间的边权重;
13、节点位置更新模块,用于通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置;
14、共享内存更新模块,用于通过所述布局主线程根据调整后的节点位置,更新所述共享内存中所述所遍历节点的节点数据;
15、迭代循环模块,用于在所述共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置;所述布局位置用于可视化展示所述图数据。
16、在其中一个实施例中,获取模块还用于:监测图数据布局请求;
17、在监测到客户端发送的图数据布局请求时,与所述客户端建立连接;
18、在建立连接之后接收所述客户端发送的所述待布局的图数据。
19、在其中一个实施例中,多线程创建模块还用于:创建布局主线程,在初始化所述布局主线程的过程中,通过所述布局主线程创建第一参数类、第一图数据类和多个计算单元类;所述第一参数类用于初始化节点位置的调整参数以及用于更新节点位置的调整参数,所述第一图数据类用于更新所述共享内存中记录的各节点的节点数据,所述多个计算单元类用于创建多个并行的布局子线程;
20、在初始化每个所述布局子线程的过程中,通过各所述布局子线程创建第二参数类、第二图数据类和计算类;所述第二参数类用于从所述布局主线程的第一参数类同步所述调整参数,所述第二图数据类用于从所述共享内存读取所分配节点的节点数据;所述计算类用于遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置。
21、在其中一个实施例中,节点分配模块还用于:通过所述布局主线程随机确定所述图数据中各节点的初始节点位置;
22、基于所述初始节点位置、相邻节点以及与相邻节点间的边权重,确定所述图数据中各节点的节点数据;
23、将各节点的节点标识与相应的节点数据存储至所述共享内存。
24、在其中一个实施例中,节点分配模块还用于:将所述共享内存划分为多个内存位置,每个内存位置与所述图数据中各节点的节点标识之间存在映射关系;
25、按照所述映射关系,将所述图数据中各节点的节点数据存储至与节点标识相对应的内存位置中。
26、在其中一个实施例中,节点位置更新模块还用于:通过各所述布局子线程从所述布局主线程获取分配的节点列表;
27、遍历所述节点列表中的节点标识;
28、从所述共享内存中与遍历到的所述节点标识对应的内存位置处读取所遍历节点的节点数据。
29、在其中一个实施例中,节点位置更新模块还用于:根据读取的节点数据,计算所述所遍历节点的当前邻域能量;
30、从所述布局主线程读取用于更新节点位置的调整参数;
31、根据读取的节点数据中所述所遍历节点的节点位置和所述调整参数,确定所述所遍历节点的待调整位置;
32、根据读取的节点数据中所述所遍历节点的相邻节点、与相邻节点间的边权重和所述待调整位置,计算所述所遍历节点的调整后邻域能量;
33、基于所述当前邻域能量与所述调整后邻域能量,确定是否调整所述所遍历节点的节点位置。
34、在其中一个实施例中,节点位置更新模块还用于:根据读取的节点数据,统计所述所遍历节点的当前邻域引力与当前周边密度;
35、根据所述当前邻域引力与当前周边密度,计算所述所遍历节点的当前邻域能量。
36、在其中一个实施例中,节点位置更新模块还用于:根据读取的节点数据中所述所遍历节点的相邻节点,从所述共享内存中读取所述相邻节点的节点位置;
37、计算所述所遍历节点的节点位置与所述相邻节点的节点位置之间的距离;
38、根据读取的节点数据中与所述相邻节点间的边权重对相应的所述距离进行加权求和,得到所述所遍历节点的邻域引力。
39、在其中一个实施例中,节点位置更新模块还用于:根据读取的节点数据中所述所遍历节点的节点位置,确定以所述所遍历节点为区域中心的周边区域;
40、根据所述周边区域的位置范围,遍历所述共享内存中节点位置落入所述位置范围的节点的总数量;
41、将所述总数量与所述周边区域的比值,作为所遍历节点的当前周边密度。
42、在其中一个实施例中,节点位置更新模块还用于:根据读取的节点数据中所述所遍历节点的相邻节点、与相邻节点间的边权重和所述待调整位置,统计所述所遍历节点的调整后邻域引力与调整后周边密度;
43、根据所述调整后邻域引力与调整后周边密度,计算所述所遍历节点的调整后邻域能量。
44、在其中一个实施例中,节点位置更新模块还用于:若所述当前邻域能量小于或等于所述调整后邻域能量,则不调整所述所遍历节点的节点位置;
45、若所述当前邻域能量大于所述调整后邻域能量,则调整所述所遍历节点的节点位置为所述待调整位置。
46、在其中一个实施例中,迭代循环模块还用于:通过所述布局主线程从所述共享内存中读取每个节点的节点位置;
47、将所述节点以及相应的节点位置反馈至客户端,以使所述客户端根据所述节点位置与所述图数据对所述图数据中的节点进行可视化展示。
48、第三方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
49、获取待布局的图数据,所述图数据包括多个节点以及所述多个节点中相邻节点之间的边权重;
50、创建布局主线程以及多个并行的布局子线程;
51、通过所述布局主线程根据所述图数据初始化共享内存,以及为各所述布局子线程分配不同的节点;所述共享内存用于记录各节点的节点数据,所述节点数据包括节点位置、相邻节点以及与相邻节点间的边权重;
52、通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置;
53、通过所述布局主线程根据调整后的节点位置,更新所述共享内存中所述所遍历节点的节点数据;
54、在所述共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置;所述布局位置用于可视化展示所述图数据。
55、第四方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
56、获取待布局的图数据,所述图数据包括多个节点以及所述多个节点中相邻节点之间的边权重;
57、创建布局主线程以及多个并行的布局子线程;
58、通过所述布局主线程根据所述图数据初始化共享内存,以及为各所述布局子线程分配不同的节点;所述共享内存用于记录各节点的节点数据,所述节点数据包括节点位置、相邻节点以及与相邻节点间的边权重;
59、通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置;
60、通过所述布局主线程根据调整后的节点位置,更新所述共享内存中所述所遍历节点的节点数据;
61、在所述共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置;所述布局位置用于可视化展示所述图数据。
62、第五方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
63、获取待布局的图数据,所述图数据包括多个节点以及所述多个节点中相邻节点之间的边权重;
64、创建布局主线程以及多个并行的布局子线程;
65、通过所述布局主线程根据所述图数据初始化共享内存,以及为各所述布局子线程分配不同的节点;所述共享内存用于记录各节点的节点数据,所述节点数据包括节点位置、相邻节点以及与相邻节点间的边权重;
66、通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置;
67、通过所述布局主线程根据调整后的节点位置,更新所述共享内存中所述所遍历节点的节点数据;
68、在所述共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置;所述布局位置用于可视化展示所述图数据。
69、上述图数据处理方法、装置、设备、存储介质和程序产品,在获取待布局的图数据之后,创建布局主线程以及多个并行的布局子线程,通过布局主线程根据图数据初始化共享内存,以及为各布局子线程分配不同的节点,该共享内存用于记录各节点的节点数据,该节点数据包括节点位置、相邻节点以及与相邻节点间的边权重,这样,可以通过各布局子线程遍历分配的节点,从共享内存中读取所遍历节点的节点数据,根据读取的节点数据调整所遍历节点的节点位置,各个布局子线程仅需处理分配的节点,耗时短,并且多个子线程并行从共享内存读取节点数据,可以提高各个节点位置的调整效率,大幅提升了位置更新速度。而后,通过布局主线程根据调整后的节点位置,更新共享内存中所遍历节点的节点数据;在共享内存中每个节点被遍历到后,返回所述通过所述布局主线程为各所述布局子线程分配不同的节点的步骤继续执行,直至满足停止条件,得到每个节点的布局位置,整个过程效率极快,提升了总体布局速度。
1.一种图数据处理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述获取待布局的图数据包括:
3.根据权利要求1所述的方法,其特征在于,所述创建布局主线程以及多个并行的布局子线程,包括:
4.根据权利要求1所述的方法,其特征在于,所述通过所述布局主线程根据所述图数据初始化共享内存,包括:
5.根据权利要求4所述的方法,其特征在于,所述将各节点的节点标识与相应的节点数据存储至所述共享内存,包括:
6.根据权利要求1所述的方法,其特征在于,所述通过各所述布局子线程遍历分配的节点,从所述共享内存中读取所遍历节点的节点数据,包括:
7.根据权利要求1所述的方法,其特征在于,所述根据读取的节点数据调整所遍历节点的节点位置,包括:
8.根据权利要求7所述的方法,其特征在于,所述根据读取的节点数据,计算所述所遍历节点的当前邻域能量,包括:
9.根据权利要求8所述的方法,其特征在于,所述根据读取的节点数据,统计所述所遍历节点的当前邻域引力,包括:
10.根据权利要求8所述的方法,其特征在于,根据读取的节点数据,统计所述所遍历节点的当前周边密度,包括:
11.根据权利要求7所述的方法,其特征在于,所述根据读取的节点数据中所述所遍历节点的相邻节点、与相邻节点间的边权重和所述待调整位置,计算所述所遍历节点的调整后邻域能量,包括:
12.根据权利要求7所述的方法,其特征在于,所述基于所述当前邻域能量与所述调整后邻域能量,确定是否调整所述所遍历节点的节点位置,包括:
13.根据权利要求1至12任一项所述的方法,其特征在于,在所述共享内存中每个节点被遍历到后,所述方法还包括:
14.一种图数据处理装置,其特征在于,所述装置包括:
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。