graph_build.cpp 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**
  2. * @file tests/boost_graph/partitioning/graph_build.cpp
  3. * @author The PARADEVS Development Team
  4. * See the AUTHORS or Authors.txt file
  5. */
  6. /*
  7. * PARADEVS - the multimodeling and simulation environment
  8. * This file is a part of the PARADEVS environment
  9. *
  10. * Copyright (C) 2013 ULCO http://www.univ-litoral.fr
  11. *
  12. * This program is free software: you can redistribute it and/or modify
  13. * it under the terms of the GNU General Public License as published by
  14. * the Free Software Foundation, either version 3 of the License, or
  15. * (at your option) any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  24. */
  25. #include <tests/boost_graph/partitioning/graph_build.hpp>
  26. namespace paradevs { namespace tests { namespace boost_graph {
  27. void build_graph(UnorientedGraph& ug, OrientedGraph& og)
  28. {
  29. /*
  30. * construction graphe Oriente
  31. */
  32. vertex_to v0 = boost::add_vertex(og);
  33. vertex_to v1 = boost::add_vertex(og);
  34. vertex_to v2 = boost::add_vertex(og);
  35. vertex_to v3 = boost::add_vertex(og);
  36. vertex_to v4 = boost::add_vertex(og);
  37. vertex_to v5 = boost::add_vertex(og);
  38. vertex_to v6 = boost::add_vertex(og);
  39. vertex_to v7 = boost::add_vertex(og);
  40. vertex_to v8 = boost::add_vertex(og);
  41. vertex_to v9 = boost::add_vertex(og);
  42. vertex_to v10 = boost::add_vertex(og);
  43. add_edge(v1, v0, EdgeProperties(1.), og);
  44. add_edge(v2, v0, EdgeProperties(1.), og);
  45. add_edge(v3, v0, EdgeProperties(1.), og);
  46. add_edge(v1, v2, EdgeProperties(1.), og);
  47. add_edge(v4, v1, EdgeProperties(1.), og);
  48. add_edge(v5, v1, EdgeProperties(1.), og);
  49. add_edge(v6, v1, EdgeProperties(1.), og);
  50. add_edge(v6, v2, EdgeProperties(1.), og);
  51. add_edge(v2, v3, EdgeProperties(1.), og);
  52. add_edge(v9, v3, EdgeProperties(1.), og);
  53. add_edge(v10, v3, EdgeProperties(1.), og);
  54. add_edge(v4, v5, EdgeProperties(1.), og);
  55. add_edge(v5, v6, EdgeProperties(1.), og);
  56. add_edge(v7, v4, EdgeProperties(1.), og);
  57. add_edge(v8, v4, EdgeProperties(1.), og);
  58. add_edge(v7, v8, EdgeProperties(1.), og);
  59. add_edge(v9, v10, EdgeProperties(1.), og);
  60. og[v6] = VertexProperties(6, 1.5, TOP_PIXEL);
  61. og[v8] = VertexProperties(8, 1., TOP_PIXEL);
  62. og[v10] = VertexProperties(10, 1.5, TOP_PIXEL);
  63. og[v0] = VertexProperties(0, 3, NORMAL_PIXEL);
  64. og[v1] = VertexProperties(1, 2, NORMAL_PIXEL);
  65. og[v2] = VertexProperties(2, 2, NORMAL_PIXEL);
  66. og[v3] = VertexProperties(3, 2, NORMAL_PIXEL);
  67. og[v4] = VertexProperties(4, 1.5, NORMAL_PIXEL);
  68. og[v5] = VertexProperties(5, 1.5, NORMAL_PIXEL);
  69. og[v7] = VertexProperties(7, 1., NORMAL_PIXEL);
  70. og[v9] = VertexProperties(9, 1.5, NORMAL_PIXEL);
  71. /*
  72. * construction graphe Non Oriente
  73. */
  74. vertex_t v01 = boost::add_vertex(ug);
  75. vertex_t v11 = boost::add_vertex(ug);
  76. vertex_t v21 = boost::add_vertex(ug);
  77. vertex_t v31 = boost::add_vertex(ug);
  78. vertex_t v41 = boost::add_vertex(ug);
  79. vertex_t v51 = boost::add_vertex(ug);
  80. vertex_t v61 = boost::add_vertex(ug);
  81. vertex_t v71 = boost::add_vertex(ug);
  82. vertex_t v81 = boost::add_vertex(ug);
  83. vertex_t v91 = boost::add_vertex(ug);
  84. vertex_t v101 = boost::add_vertex(ug);
  85. boost::add_edge(v01, v11, EdgeProperties(1.), ug);
  86. boost::add_edge(v01, v21, EdgeProperties(1.), ug);
  87. boost::add_edge(v01, v31, EdgeProperties(1.), ug);
  88. boost::add_edge(v11, v21, EdgeProperties(1.), ug);
  89. boost::add_edge(v11, v41, EdgeProperties(1.), ug);
  90. boost::add_edge(v11, v51, EdgeProperties(1.), ug);
  91. boost::add_edge(v11, v61, EdgeProperties(1.), ug);
  92. boost::add_edge(v21, v61, EdgeProperties(1.), ug);
  93. boost::add_edge(v21, v31, EdgeProperties(1.), ug);
  94. boost::add_edge(v31, v91, EdgeProperties(1.), ug);
  95. boost::add_edge(v31, v101, EdgeProperties(1.), ug);
  96. boost::add_edge(v41, v51, EdgeProperties(1.), ug);
  97. boost::add_edge(v51, v61, EdgeProperties(1.), ug);
  98. boost::add_edge(v41, v71, EdgeProperties(1.), ug);
  99. boost::add_edge(v41, v81, EdgeProperties(1.), ug);
  100. boost::add_edge(v71, v81, EdgeProperties(1.), ug);
  101. boost::add_edge(v91, v101, EdgeProperties(1.), ug);
  102. ug[v61] = VertexProperties(60, 1.5, TOP_PIXEL);
  103. ug[v81] = VertexProperties(80, 1, TOP_PIXEL);
  104. ug[v101] = VertexProperties(100, 1.5, TOP_PIXEL);
  105. ug[v01] = VertexProperties(0, 3, NORMAL_PIXEL);
  106. ug[v11] = VertexProperties(10, 2, NORMAL_PIXEL);
  107. ug[v21] = VertexProperties(20, 2, NORMAL_PIXEL);
  108. ug[v31] = VertexProperties(30, 2, NORMAL_PIXEL);
  109. ug[v41] = VertexProperties(40, 1.5, NORMAL_PIXEL);
  110. ug[v51] = VertexProperties(50, 1.5, NORMAL_PIXEL);
  111. ug[v71] = VertexProperties(70, 1, NORMAL_PIXEL);
  112. ug[v91] = VertexProperties(90, 1.5, NORMAL_PIXEL);
  113. /* property_map<UnorientedGraph,vertex_degree_t>::type
  114. * poids_sommets=get(vertex_degree_t(),*g);
  115. add_edge(0,1,1,*g);
  116. add_edge(0,2,1,*g);
  117. add_edge(0,3,1,*g);
  118. add_edge(1,2,1,*g);
  119. add_edge(1,4,1,*g);
  120. add_edge(1,5,1,*g);
  121. add_edge(1,6,1,*g);
  122. add_edge(2,6,1,*g);
  123. add_edge(2,3,1,*g);
  124. add_edge(3,18,1,*g);
  125. add_edge(3,21,1,*g);
  126. add_edge(4,5,1,*g);
  127. add_edge(4,7,1,*g);
  128. add_edge(4,8,1,*g);
  129. add_edge(4,9,1,*g);
  130. add_edge(5,6,1,*g);
  131. add_edge(6,15,1,*g);
  132. add_edge(6,16,1,*g);
  133. add_edge(6,17,1,*g);
  134. add_edge(7,8,1,*g);
  135. add_edge(7,10,1,*g);
  136. add_edge(7,11,1,*g);
  137. add_edge(8,9,1,*g);
  138. add_edge(8,11,1,*g);
  139. add_edge(8,12,1,*g);
  140. add_edge(9,13,1,*g);
  141. add_edge(9,14,1,*g);
  142. add_edge(10,11,1,*g);
  143. add_edge(11,12,1,*g);
  144. add_edge(13,14,1,*g);
  145. add_edge(15,16,1,*g);
  146. add_edge(16,17,1,*g);
  147. add_edge(17,19,1,*g);
  148. add_edge(19,20,1,*g);
  149. add_edge(22,23,1,*g);
  150. add_edge(18,17,1,*g);
  151. add_edge(18,19,1,*g);
  152. add_edge(18,20,1,*g);
  153. add_edge(18,21,1,*g);
  154. add_edge(21,22,1,*g);
  155. add_edge(21,23,1,*g);
  156. put(poids_sommets,0,3);
  157. for(int i=1;i<4;i++)
  158. put(poids_sommets,i,2.5);
  159. for(int i=4;i<7;i++)
  160. put(poids_sommets,i,2);
  161. put(poids_sommets,18,2);
  162. put(poids_sommets,21,2);
  163. for(int i=7;i<10;i++)
  164. put(poids_sommets,i,1.5);
  165. for(int i=15;i<18;i++)
  166. put(poids_sommets,i,1.5);
  167. put(poids_sommets,19,1.5);
  168. put(poids_sommets,20,1.5);
  169. put(poids_sommets,22,1.5);
  170. put(poids_sommets,23,1.5);
  171. for(int i=10;i<15;i++)
  172. put(poids_sommets,i,1);
  173. tie(vertexIt, vertexEnd) = vertices(*g);
  174. for (; vertexIt != vertexEnd; ++vertexIt)
  175. {
  176. std::cout << *vertexIt << " est connecté avec ";
  177. tie(neighbourIt, neighbourEnd) = adjacent_vertices(*vertexIt, *g);
  178. for (; neighbourIt != neighbourEnd; ++neighbourIt)
  179. std::cout << *neighbourIt << " ";
  180. std::cout<<" et son poids est de "<< poids_sommets[*vertexIt];
  181. std::cout << "\n";
  182. }*/
  183. }
  184. } } } // namespace paradevs tests boost_graph