Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <cstdlib>
  3. #include <time.h>
  4.  
  5. int N = 40;//número de nós
  6. int M = 4;//número de comunidades
  7. int K = 16; //número médio de conexões
  8. int node1, node2;//nós
  9. float In, Out;
  10. int conections = 0;//Número de conexões
  11.  
  12. main () {
  13. In = 0.9;//Probabilidade de conexao intracomunidade
  14. Out = 0.4;//Probabilidade de conexao intercomunidade
  15.  
  16. //Declaração do vetor de excentricidade
  17. int excentricidade[N];
  18.  
  19. //matriz de adjacência
  20. int MA[N][N];
  21. //Esvaziar matriz de adjacência
  22. for(int i = 0; i < N; i++)
  23. for(int j = 0; j < N; j++)
  24. MA[i][j] = 0;
  25.  
  26. srand(time(NULL)); //semente de números aleatórios
  27.  
  28. while(conections < K * N) {
  29. //Conexao intracomunidade
  30. node1 = rand()%N;//sortear primeiro nó
  31.  
  32. //sorteia um novo nó até que os nós sejam da
  33. //mesma comunidade e diferentes entre si
  34. do
  35. {
  36. node2 = rand()%N;//sortear segundo nó
  37. }while(node1/(N/M)!=node2/(N/M) || node1==node2);
  38.  
  39. //Conectar nós
  40. if(rand()%100+1 <= In*100)
  41. {
  42. MA[node1][node2] = 1;
  43. MA[node2][node1] = 1;
  44. conections += 2;
  45. }
  46.  
  47. //Conexao intercomunidade
  48. node1 = rand()%N;//sortear primeiro nó
  49.  
  50. //sorteia um novo nó até que os nós sejam de
  51. //comunidade diferentes
  52. do
  53. {
  54. node2 = rand()%N;//sortear segundo nó
  55. }while(node1/(N/M) == node2/(N/M));
  56.  
  57. //Conectar nós
  58. if(rand()%100+1 <= Out*100)
  59. {
  60. MA[node1][node2] = 1;
  61. MA[node2][node1] = 1;
  62. conections += 2;
  63. }
  64. }
  65.  
  66. //Exibir matriz de adjacência
  67. for(int i = 0; i < N; i++)
  68. {
  69. for(int j = 0; j < N; j++)
  70. {
  71. printf("%d ",MA[i][j]);
  72. }
  73. printf("\n");
  74. }
  75.  
  76.  
  77. int distance[N][N];
  78.  
  79. for(int i = 0; i < N; i++)
  80. for(int j = 0; j < N; j++)
  81. if(MA[i][j] == 1)
  82. distance[i][j] = 1;
  83. else
  84. distance[i][j] = -1;
  85.  
  86. for(int i = 0; i < N; i++)
  87. distance[i][i] = 0;
  88.  
  89. for(int k = 0; k < N; k++)
  90. for(int i = 0; i < N; i++)
  91. for(int j = 0; j < N; j++)
  92. if((distance[i][j] > distance[i][k] + distance[k][j] ||
  93. distance[i][j] == -1) &&
  94. distance[i][k] > 0 &&
  95. distance[k][j] > 0 )
  96. distance[i][j] = distance[i][k] + distance[k][j];
  97.  
  98. //Exibir matriz de distância
  99. for(int i = 0; i < N; i++)
  100. {
  101. for(int j = 0; j < N; j++)
  102. {
  103. printf("%d ",distance[i][j]);
  104. }
  105. printf("\n");
  106. }
  107.  
  108.  
  109. }
  110.  
  111. void encontrarExcentricidade(){
  112. for(int i = 0; i < N; i++) {
  113.  
  114. excentricidade[i] = 0;
  115. }
  116.  
  117. printf("Excentricidade:\n");
  118.  
  119. for(int i = 0; i < N; i++) {
  120. for(int j = 0; j < N; j++) {
  121. if(excentricidade[i] < distance[i][j])
  122. excentricidade[i] = distance[i][j];
  123. }
  124. printf("%d ", excentricidade[i]);
  125. }
  126. }
  127.  
  128. //Encontrar raio de cada nó
  129.  
  130. int calculoRaio(int excentricidade[]) {
  131.  
  132. int raio = excentricidade[0];
  133.  
  134.  
  135. for(int i=0; i < N; i++){
  136.  
  137. if(excentricidade[i] < raio)
  138. raio = excentricidade[i];
  139. }
  140.  
  141. return raio;
  142.  
  143. }
  144.  
  145. //Encontrar diâmetro de cada nó
  146.  
  147. int calculoDiametro(int excentricidade[]){
  148.  
  149. int diametro = excentricidade[0];
  150.  
  151. for(int i = 0; i < N; i++){
  152.  
  153. if(excentricidade[i] > diametro)
  154. diametro = excentricidade[i];
  155. }
  156.  
  157. return diametro;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement