Tugas Take Home Kuliah Komputasi Parallel yang dikasi pak Reza bener-bener bikin mumet..
Cari pake browsing google dengan 1001 trik tetap tidak ketemu. Akhirnya berkat kerja bareng temen-temen tugas take home itu terseslesaikan juga..
Tugasnya adalah mencari triple matriks adjacency.
Triple matriks adalah suatu local graf dalam suatu graf atau anak matematika sering nyebutnya subgraf :D. Dimana subgraf ini mengandung tiga buah verteks yang saling berhubungan (dihubungkan oleh suatu edge) sehingga membentuk suatu lintasan tertutup.
/** AdjacencyMatrixTriple.c * Adalah program untuk mencari triple Matrix * Program ini belum menerapkan konsep paralelisme * hanya digunakan sebagai pembanding untuk mengecek kebenaran program * dan running program * * usage: ./AdjacencyMatrixTriple [Jumlah Verteks] * */ #include <stdio.h> #include <math.h> #include <time.h> int triples(int **adjm, int n); int main(int argc,char **argv) { srand(time(NULL)); int i,j, k; int n = atoi(argv [1]); // Argumen n sebagai jumlah verteks int **adjm; adjm = malloc (n*sizeof(int*)); for(k=0; k < n; k++) { adjm[k]=malloc(n*sizeof(int)); } //Membuat Matrik Adjacency Matrik for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(i==j) { adjm[i][j]=0; } else { adjm[i][j]=rand()%2; //Membangun Adjacency Matriks dengan 0 atau 1 secara acak //adjm[i][j]=1; } adjm[j][i]=adjm[i][j]; } } //Mencetak Adjacency Matriks /** for(i=0; i<n; i++) { for(j=0; j<n; j++) { printf("%d \t", adjm[i][j]); } printf("\n"); } * */ int triple = 0; double start_time = clock(); for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(adjm[i][j]==1) { for(k=j+1;k<n;k++) { if(adjm[i][k]==1 && adjm[j][k]==1) { triple++; } } } } } double end_time = clock(); double result_time = (end_time - start_time) / CLOCKS_PER_SEC; printf("\nJumlah Tripel : %d \n", triple); printf("Time: %f\n", result_time); printf ("\n\n"); }
Leave a Reply