[发明专利]一种基于GPU的多分区强连通图检测方法有效
申请号: | 201910371230.1 | 申请日: | 2019-05-06 |
公开(公告)号: | CN110288507B | 公开(公告)日: | 2021-03-09 |
发明(设计)人: | 侯骏腾;王树鹏;吴广君;王振宇;张建宇 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06T1/20 | 分类号: | G06T1/20;G06F16/901 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 陈艳 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 gpu 分区 连通 检测 方法 | ||
1.一种基于GPU的多分区强连通图检测方法,其特征在于,包括以下步骤:
加载图数据并统一存储格式;
在图数据上基于GPU进行第一剪枝操作,检测出由单个顶点组成的强连通图1-SCC;
在除1-SCC外的部分上选取中心点,选取中心点的方法为:在GPU上申请一个变量保存要选取的中心点且赋值为0,并行计算中心点和每一个顶点的入度和出度的积,如果当前顶点的入度和出度积大于中心点的入度和出度积,则使用该顶点替换中心点,重复以上选取中心点的方法直到中心点的值不再变化,则选取该中心点;从中心点开始并行地前向和后向遍历,更新状态得到强连通图SCC和多个分区;
在未被检测的图数据上基于GPU进行第二剪枝操作,检测出由两个顶点组成的强连通图2-SCC;
在未被检测的图数据上检测弱连通区域,对弱连通区域进行检测的方法为:并行检测每一个顶点能够连接到的所有顶点,如果连接到的顶点序号小于当前顶点,则用该序号标记当前顶点,重复以上对弱连通区域进行检测的方法直到所有顶点的标记不再变化为止;并在弱连通区域上选取中心点,将弱连通区域中的被标记为所有顶点中的最小序号的顶点作为当前区域的中心点,从中心点开始前向遍历;
在弱连通区域的中未被前向遍历到的区域随机选取保存的最后一个顶点做为副中心点,从中心点与副中心点开始后向遍历,再进行第一剪枝操作,再次更新状态得到SCC和分区;
通过上述步骤获得全部的SCC。
2.如权利要求1所述的方法,其特征在于,加载图数据并统一存储格式具体包括以下步骤:
根据图数据的大小为两个数组C和R申请内存,使用CSR格式将加载的图数据保存到该两个数组中;其中数组C用于顺序保存每个顶点能够连接到的顶点,大小大于图数据的边数;数组R用于保存每个顶点在前述数组中所有连接顶点的起始位置,大小大于图数据的顶点数;
调换边的起点和终点,得到反向的CSR格式的图数据,保存到另两个数组C’和R’中;
将上述数组复制到内存中,在内存中再申请一个数组M,该数组M用于标记强连通图检测过程中的每个顶点的状态,其大小与图数据的顶点数相同。
3.如权利要求2所述的方法,其特征在于,从中心点开始并行地前向和后向遍历,是指从中心点开始,并行地在数组C和R上进行前向广度优先遍历,在数组C’和R’上进行后向广度优先遍历,将每个顶点的遍历情况标记到数组M中;
从中心点开始前向遍历,是指并行地在每一个分区中从中心点开始在数组C和R上进行前向广度优先遍历,并将每个顶点的遍历情况标记到数组M中;
从弱连通区域的中心点与副中心点开始后向遍历,是指并行地在每一个分区中分别从中心点与副中心点开始在数组C和R,与数组C’和R’上进行后向广度优先遍历,并将每个顶点的遍历情况标记到数组M中。
4.如权利要求1所述的方法,其特征在于,第一剪枝操作的方法为:在GPU上并行检测每一个顶点的入度和出度情况,如果顶点的入度为零或出度为零,则该点是一个由单个顶点组成的强连通图。
5.如权利要求1所述的方法,其特征在于,第二剪枝操作的方法为:先进行多次1-SCC的检测至无1-SCC产生为止,再进行一次2-SCC的检测,最后进行多次1-SCC的检测至无1-SCC产生为止;
其中2-SCC的检测方法为:并行检测每一个未被检测的顶点连接到的所有顶点,如果连接到的顶点有边连接到当前顶点,并且该两个点除相互的连接外出度为零或入度为零,则该两个顶点会单独形成一个强连通图,在数组M中对该两个顶点做标记。
6.如权利要求1所述的方法,其特征在于,再次更新状态得到SCC和分区后判断是否还有SCC产生;如果没有,则结束;如果有,则选取随机保存的第一个顶点做为中心点,从该中心点开始前向遍历,再选取副中心点,再从该中心点和副中心点开始后向遍历,经第一剪枝操作,更新状态得到SCC和分区。
7.如权利要求6所述的方法,其特征在于,在选取中心点时,保存了第一个顶点后,使用原子操作禁止其他的顶点继续存入。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910371230.1/1.html,转载请声明来源钻瓜专利网。