Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

In C /* SpMV-based BFS implementation input parameters: These are 'consumed' by this function int** int_array input array representing the adjacency matrix int rows #

In C

/* SpMV-based BFS implementation input parameters: These are 'consumed' by this function int** int_array input array representing the adjacency matrix int rows # of rows of the adajcency matrix int cols # of cols of the adajcency matrix int source source vertex for the BFS These are 'produced' by this function int* color color array int* distance distance array return parameters: none */ void bfs_spmv(int** int_array, int rows, int cols, int source, int* color, int* distance) { // check the input parameters to see if they are valid if(rows != cols) { fprintf(stderr, "Not an adjacency matrix "); exit(EXIT_FAILURE); } if(source >= rows) { fprintf(stderr, "Invalid source vertex "); exit(EXIT_FAILURE); } assert(int_array); assert(color); assert(distance);

fprintf(stdout, "Breadth first search on the graph using SpMV ... ");

// Transpose the adjacency matrix int** mat_trans = NULL; init_2d_array(&mat_trans, cols, rows); matrix_transpose(mat_trans, int_array, rows, cols);

#if DEBUG print_matrix(mat_trans, cols, rows); #endif

// Initialize the various data structures int* vec = (int*) malloc(sizeof(int) * rows); assert(vec); for(int i = 0; i < rows; i++) { if(i == source) { vec[i] = 1; color[i] = 2; distance[i] = 0; } else { vec[i] = 0; color[i] = 0; distance[i] = -1; } } int* res = (int*) malloc(sizeof(int) * cols); assert(res); reset_vector(res, cols);

int iter = 1; int done = 0; int *src = vec; int *dst = res;

// Do BFS until done while(!done) { // INSERT YOUR CODE HERE

// given a vector of source vetices, find the neighbors // HINT: spmv

// color the source vertices for this iteration `black'

// store the distance for the newly discovered neighbors

// Before we begin, eliminate vertices that have already been visited

// Check to see if no neighbors were found, // in which case, we are done

// iter is equivalent to each `breadth' searched (i.e., distance from // the source vertex) }

fprintf(stdout, "done ");

#if DEBUG print_bfs_matrix_result(rows, color, distance); #endif

free_2d_array(mat_trans, cols); free(vec); free(res); }

Plese sepecify what information you need besides this.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Transactions On Large Scale Data And Knowledge Centered Systems Xxxviii Special Issue On Database And Expert Systems Applications Lncs 11250

Authors: Abdelkader Hameurlain ,Roland Wagner ,Sven Hartmann ,Hui Ma

1st Edition

3662583836, 978-3662583838

More Books

Students also viewed these Databases questions

Question

=+ 31-2 Discuss how psychologists describe the human memory system.

Answered: 1 week ago

Question

Solve the integral:

Answered: 1 week ago

Question

What is meant by Non-programmed decision?

Answered: 1 week ago

Question

What are the different techniques used in decision making?

Answered: 1 week ago

Question

9. Understand the phenomenon of code switching and interlanguage.

Answered: 1 week ago