nvGRAPH三角形计数和遍历示例

#include “ stdlib.h”

#include“ inttypes.h”

#include“ stdio.h”

#include“ nvgraph.h”

#define check( a )\

{\

nvgraphStatus_t status =(a); \

if((status)!= NVGRAPH_STATUS_SUCCESS){\

        printf(“ERROR :%s,%s:%d \ n”,status,__ FILE __,__ LINE __); \

exit(0); \

} \

}

int main(int argc,char ** argv)

{

// nvgraph变量

nvgraphHandle_t handle;

nvgraphGraphDescr_t graph;

nvgraphCSRTopology32I_t CSR_input;

//初始化主机数据

CSR_input =(nvgraphCSRTopology32I_t)malloc(sizeof(struct nvgraphCSRTopology32I_st));

//无向 graph:

// 3个三角形

//邻接矩阵下三角形的CSR:

const size_t n = 6,nnz = 8;

int source_offsets [] = {0,0,1,2,4,4,6,8};

int destination_indices [] = {0,1,1,2,2,2,3,3,4};

check(nvgraphCreate(&handle));

check(nvgraphCreateGraphDescr( handle&graph));

CSR_input-> nvertices = n;

CSR_input-> nedges = nnz;

CSR_input-> source_offsets = source_offsets;

CSR_input-> destination_indices = destination_indices;

//设置 graph连接性

check(nvgraphSetGraphStructure(handle,graph,(void *)CSR_input,NVGRAPH_CSR_32));

uint64_t trcount = 0;

check(nvgraphTriangleCount( handle, graph,&trcount));

printf(“三角形数:%” PRIu64 “ \ n”,trcount);

free(CSR_input);

check(nvgraphDestroyGraphDescr( handle, graph));

check(nvgraphDestroy( handle));

return 0;

}

nvGRAPH遍历示例

void check_status(nvgraphStatus_t status){

if((int)status!= 0){

printf(“error:%d \ n”,status);

exit(0);

}

}

int main(int argc,char ** argv){

// graph示例(CSR格式)

const size_t n = 7,nnz = 12,vertex_numsets = 2,edge_numset = 0;

int source_offsets_h [] = {0,1,3,4,6,6,8,10,12};

int destination_indices_h [] = {5,0,2,0,4,5,5,2,3,3,4,1,5};

//存储结果的位置(与源的距离)和存储结果的位置(搜索树中的前身)

int bfs_distances_h [n],bfs_predecessors_h [n];

// nvgraph变量

nvgraphStatus_tstatus;

nvgraphHandle_t handle;

nvgraphGraphDescr_t graph;

nvgraphCSRTopology32I_t CSR_input;

cudaDataType_t * vertex_dimT;

size_t distances_index = 0;

size_t predecessors_index = 1;

vertex_dimT =(cudaDataType_t *)malloc(vertex_numsets * sizeof(cudaDataType_t));

vertex_dimT [distances_index] = CUDA_R_32I;

vertex_dimT [predecessors_index] = CUDA_R_32I;

//创建nvgraph对象

check_status(nvgraphCreate(&handle));

check_status(nvgraphCreateGraphDescr( handle&graph));

//设置 graph的连通性和属性(转移)

CSR_input =(nvgraphCSRTopology32I_t)malloc(sizeof(struct nvgraphCSCTopology32I_st));

CSR_input-> nvertices = n;

CSR_input-> nedges = nnz;

CSR_input-> source_offsets = source_offsets_h;

CSR_input-> destination_indices = destination_indices_h;

check_status(nvgraphSetGraphStructure(handle,graph,(void *)CSR_input,NVGRAPH_CSR_32));;

check_status(nvgraphAllocateVertexData( handle, graph,vertex_numsets,vertex_dimT));

int source_vert = 1;

//设置遍历参数

nvgraphTraversalParameter_t traversal_param;

nvgraphTraversalParameterInit(&traversal_param);

nvgraphTraversalSetDistancesIndex(&traversal_param,distances_index);

nvgraphTraversalSetPredecessorsIndex(&traversal_param,predecessors_index);

nvgraphTraversalSetUndirectedFlag(&traversal_param,false);

//使用BFS算法进行遍历

check_status(nvgraphTraversal( handle, graph,NVGRAPH_TRAVERSAL_BFS,&source_vert,traversal_param));

//获取结果

check_status(nvgraphGetVertexData(handle, graph表,(void *)bfs_distances_h,distances_index));

check_status(nvgraphGetVertexData( handle, graph,(void *)bfs_predecessors_h,predecessors_index));

//

for(int i = 0; i <n; i ++),期望bfs distances_h =(1 0 1 3 3 2 2147483647) printf(“距顶点%d的距离:%i \ n”,i,bfs_distances_h [i]) ; printf(“ \ n”);

//

for(int i = 0; i <n; i ++),期望bfs前驱体=(1 -1 1 5 5 0 -1) printf(“顶点%d的前驱体:%i \ n”,i,bfs_predecessors_h [i ]); printf(“ \ n”);

free(vertex_dimT);

free(CSR_input);

check_status(nvgraphDestroyGraphDescr( handle, graph));

check_status(nvgraphDestroy(handle));

return 0;

}

nvGRAPH三角形计数和遍历示例的更多相关文章

  1. 基于mapreduce实现图的三角形计数

    源代码放在我的github上,想细致了解的可以访问:TriangleCount on github 一.实验要求 1.1 实验背景         图的三角形计数问题是一个基本的图计算问题,是很多复杂 ...

  2. Luogu P2807 三角形计数

    题目背景 三角形计数(triangle) 递推 题目描述 把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问题. 输入输出格式 输入 ...

  3. Java实现三角形计数

    题: 解: 这道题考的是穷举的算法. 一开始看到这道题的时候,本能的想到用递归实现.但使用递归的话数据少没问题,数据多了之后会抛栈溢出的异常.我查了一下,原因是使用递归创建了太多的变量, 每个变量创建 ...

  4. 洛谷 P2807 三角形计数

    P2807 三角形计数 题目背景 三角形计数(triangle) 递推 题目描述 把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问 ...

  5. ContentProvider官方教程(3)ContentResolver查询、遍历 示例

    Retrieving Data from the Provider This section describes how to retrieve data from a provider, using ...

  6. luogu P2992 [USACO10OPEN]三角形计数Triangle Counting

    https://www.luogu.org/problemnew/solution/P2992 考虑包含原点,不包含原点的三角形有什么特征. 包含原点的三角形:任意找一个顶点和原点连线,一定能把另外两 ...

  7. 611. Valid Triangle Number三角形计数

    [抄题]: 给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形? [暴力解法]: 全部都用for循环 时间分析: 空间分析: [思维问题 ...

  8. 【题解】Luogu P2992 [USACO10OPEN]三角形计数Triangle Counting

    原题传送门 我们考虑进行容斥 包含原点的三角形个数=所有可能三角形的个数-不包含原点三角形的个数 对于每个点,我们会发现:将它与原点连线,在直线左边任选两点或右边任选两点与这个点构成的三角形一定是不包 ...

  9. 3828. 三角形计数 3829. ZCC loves Isaac 3830. 字符消除

    3828 给定n个点的坐标(0<=xi,yi<=10000)求选出任意三个点能组成的三角形的总面积. 题解 太naive了 枚举三角形的y最小的点,把剩余的点按角度排序 然后随便算,可以用 ...

随机推荐

  1. 【JVM】Java8 和 Java7中JVM内存模型有什么区别

    规范和实现 针对Java虚拟机的实现有专门的<Java虚拟机规范>,在遵守规范的前提下,不同的厂商会对虚拟机进行不同的实现. 就好比开发的过程中定义了接口,具体的接口实现大家可以根据不同的 ...

  2. 【maven】maven资源过滤问题<build>

    需要在pom.xml加入以下代码(在父项目添加即可,如果还不行的话,就在子module的pom.xml也添加) <build> <resources> <resource ...

  3. Python协程与JavaScript协程的对比

    前言 以前没怎么接触前端对JavaScript 的异步操作不了解,现在有了点了解一查,发现 python 和 JavaScript 的协程发展史简直就是一毛一样! 这里大致做下横向对比和总结,便于对这 ...

  4. C++ primer plus读书笔记——第8章 函数探幽

    第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...

  5. KMP(The Knuth-Morris-Pratt Algorithm)

    本文代码来自于中国大学MOOC KMP课件下载 注释内容为自己理解,如有错误请评论,或者私信给我,谢谢 #include <stdio.h> #include "stdlib.h ...

  6. [web] 系统运维--单机

    处理过程 浏览器发送请求经过网络到达web服务器 web服务器处理请求并响应数据 响应数据从web服务器发送到用户端 用户浏览器接收数据,本地计算渲染 指标 响应时间 吞吐量 响应时间 响应时间 = ...

  7. [刷题] 3 Longest Substring Without Repeating Character

    要求 在一个字符串中寻找没有重复字母的最长子串 举例 输入:abcabcbb 输出:abc 细节 字符集?字母?数字+字母?ASCII? 大小写是否敏感? 思路 滑动窗口 如果当前窗口没有重复字母,j ...

  8. linux环境下/etc/hosts文件详解

    linux环境下/etc/hosts文件详解 就没一个昵称能用关注 0.0632017.09.12 17:04:28字数 623阅读 27,096 介绍 hosts文件是linux系统中负责ip地址与 ...

  9. 在/etc/profile下配置java的环境变量

    在/etc/profile下配置java的环境变量 原创 Java 作者:xiaoyan5686670 时间:2016-01-18 14:30:28  6152  0 以root用户编辑:#vi /e ...

  10. 文件不同 diff --brief XX YY

    文件不同 diff --brief XX YY 文件不同 --哪些位置 diff -c XX YY 9.diff命令 diff命令用于比较多个文本文件的差异,格式为"diff [参数] 文件 ...