Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 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. int distance[N][N];
  12.  
  13. main () {
  14. In = 0.9;//Probabilidade de conexao intracomunidade
  15. Out = 0.4;//Probabilidade de conexao intercomunidade
  16.  
  17. //Declaração do vetor de excentricidade
  18. int excentricidade[N];
  19.  
  20. //matriz de adjacência
  21. int MA[N][N];
  22. //Esvaziar matriz de adjacência
  23. for(int i = 0; i < N; i++)
  24. for(int j = 0; j < N; j++)
  25. MA[i][j] = 0;
  26.  
  27. srand(time(NULL)); //semente de números aleatórios
  28.  
  29. while(conections < K * N) {
  30. //Conexao intracomunidade
  31. node1 = rand()%N;//sortear primeiro nó
  32.  
  33. //sorteia um novo nó até que os nós sejam da
  34. //mesma comunidade e diferentes entre si
  35. do
  36. {
  37. node2 = rand()%N;//sortear segundo nó
  38. }while(node1/(N/M)!=node2/(N/M) || node1==node2);
  39.  
  40. //Conectar nós
  41. if(rand()%100+1 <= In*100)
  42. {
  43. MA[node1][node2] = 1;
  44. MA[node2][node1] = 1;
  45. conections += 2;
  46. }
  47.  
  48. //Conexao intercomunidade
  49. node1 = rand()%N;//sortear primeiro nó
  50.  
  51. //sorteia um novo nó até que os nós sejam de
  52. //comunidade diferentes
  53. do
  54. {
  55. node2 = rand()%N;//sortear segundo nó
  56. }while(node1/(N/M) == node2/(N/M));
  57.  
  58. //Conectar nós
  59. if(rand()%100+1 <= Out*100)
  60. {
  61. MA[node1][node2] = 1;
  62. MA[node2][node1] = 1;
  63. conections += 2;
  64. }
  65. }
  66.  
  67. //Exibir matriz de adjacência
  68. for(int i = 0; i < N; i++)
  69. {
  70. for(int j = 0; j < N; j++)
  71. {
  72. printf("%d ",MA[i][j]);
  73. }
  74. printf("\n");
  75. }
  76.  
  77.  
  78. for(int i = 0; i < N; i++)
  79. for(int j = 0; j < N; j++)
  80. if(MA[i][j] == 1)
  81. distance[i][j] = 1;
  82. else
  83. distance[i][j] = -1;
  84.  
  85. for(int i = 0; i < N; i++)
  86. distance[i][i] = 0;
  87.  
  88. for(int k = 0; k < N; k++)
  89. for(int i = 0; i < N; i++)
  90. for(int j = 0; j < N; j++)
  91. if((distance[i][j] > distance[i][k] + distance[k][j] ||
  92. distance[i][j] == -1) &&
  93. distance[i][k] > 0 &&
  94. distance[k][j] > 0 )
  95. distance[i][j] = distance[i][k] + distance[k][j];
  96.  
  97. //Exibir matriz de distância
  98. for(int i = 0; i < N; i++)
  99. {
  100. for(int j = 0; j < N; j++)
  101. {
  102. printf("%d ",distance[i][j]);
  103. }
  104. printf("\n");
  105. }
  106.  
  107.  
  108. }
  109.  
  110. void encontrarExcentricidade(int excentricidade[], int distance[][]){
  111.  
  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