Advertisement
Guest User

Untitled

a guest
Apr 18th, 2014
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. %Modularity in prolog
  2. %Undirected & unweighted
  3. %not a multigraph
  4.  
  5.  
  6. number_of_edges(L):-
  7. findall(Edge_Id, edge(Edge_Id, X, Y), Edge_Ids), length(Edge_Ids, L).
  8.  
  9. edge_in_module(Edge_Id, Module):-
  10. edge(Edge_Id, X, Y),
  11. node_in_module(X, Module),
  12. node_in_module(Y, Module).
  13.  
  14. edges_in_module(Edge_Ids, Module):-
  15. bagof(Edge_Id, edge_in_module(Edge_Id,Module), Edge_Ids).
  16.  
  17. degree_of_node(Node, Degree):-
  18. findall(Connected_Node,edge(_, Node, Connected_Node), Connected_Nodes), length(Connected_Nodes, OutDegree),
  19. findall(Connected_Node2,edge(_, Connected_Node2, Node), Connected_Nodes2), length(Connected_Nodes2,InDegree),
  20. Degree is InDegree + OutDegree.
  21.  
  22. degree_of_node_in_module(Node,Module,Degree):-
  23. node_in_module(Node, Module),
  24. degree_of_node(Node,Degree).
  25.  
  26. list_sum([Item], Item).
  27. list_sum([Item1,Item2 | Tail], Total) :-
  28. list_sum([Item1+Item2|Tail], Total).
  29.  
  30. mod_score(Module, Mod_score):-
  31. findall(Degree, degree_of_node_in_module(Node,Module,Degree), Degrees),
  32. list_sum(Degrees, Dm),
  33. edges_in_module(Edges, Module),
  34. length(Edges, Lm),
  35. number_of_edges(L),
  36. LmOverL is Lm / L,
  37. DmOver2L is Dm / (2*L),
  38. SecondTerm is DmOver2L*DmOver2L,
  39. Mod_score is LmOverL- SecondTerm.
  40.  
  41. edge(edge1,node10,node3).
  42. edge(edge2,node11,node1).
  43. edge(edge3,node11,node5).
  44. edge(edge4,node11,node6).
  45. edge(edge5,node12,node1).
  46. edge(edge6,node13,node1).
  47. edge(edge7,node13,node4).
  48. edge(edge8,node14,node1).
  49. edge(edge9,node14,node2).
  50. edge(edge10,node14,node3).
  51. edge(edge11,node14,node4).
  52. edge(edge12,node17,node6).
  53. edge(edge13,node17,node7).
  54. edge(edge14,node18,node1).
  55. edge(edge15,node18,node2).
  56. edge(edge16,node2,node1).
  57. edge(edge17,node20,node1).
  58. edge(edge18,node20,node2).
  59. edge(edge19,node22,node1).
  60. edge(edge20,node22,node2).
  61. edge(edge21,node26,node24).
  62. edge(edge22,node26,node25).
  63. edge(edge23,node28,node24).
  64. edge(edge24,node28,node25).
  65. edge(edge25,node28,node3).
  66. edge(edge26,node29,node3).
  67. edge(edge27,node3,node1).
  68. edge(edge28,node3,node2).
  69. edge(edge29,node30,node24).
  70. edge(edge30,node30,node27).
  71. edge(edge31,node31,node2).
  72. edge(edge32,node31,node9).
  73. edge(edge33,node32,node1).
  74. edge(edge34,node32,node25).
  75. edge(edge35,node32,node26).
  76. edge(edge36,node32,node29).
  77. edge(edge37,node33,node15).
  78. edge(edge38,node33,node16).
  79. edge(edge39,node33,node19).
  80. edge(edge40,node33,node21).
  81. edge(edge41,node33,node23).
  82. edge(edge42,node33,node24).
  83. edge(edge43,node33,node3).
  84. edge(edge44,node33,node30).
  85. edge(edge45,node33,node31).
  86. edge(edge46,node33,node32).
  87. edge(edge47,node33,node9).
  88. edge(edge48,node34,node10).
  89. edge(edge49,node34,node14).
  90. edge(edge50,node34,node15).
  91. edge(edge51,node34,node16).
  92. edge(edge52,node34,node19).
  93. edge(edge53,node34,node20).
  94. edge(edge54,node34,node21).
  95. edge(edge55,node34,node23).
  96. edge(edge56,node34,node24).
  97. edge(edge57,node34,node27).
  98. edge(edge58,node34,node28).
  99. edge(edge59,node34,node29).
  100. edge(edge60,node34,node30).
  101. edge(edge61,node34,node31).
  102. edge(edge62,node34,node32).
  103. edge(edge63,node34,node33).
  104. edge(edge64,node34,node9).
  105. edge(edge65,node4,node1).
  106. edge(edge66,node4,node2).
  107. edge(edge67,node4,node3).
  108. edge(edge68,node5,node1).
  109. edge(edge69,node6,node1).
  110. edge(edge70,node7,node1).
  111. edge(edge71,node7,node5).
  112. edge(edge72,node7,node6).
  113. edge(edge73,node8,node1).
  114. edge(edge74,node8,node2).
  115. edge(edge75,node8,node3).
  116. edge(edge76,node8,node4).
  117. edge(edge77,node9,node1).
  118. edge(edge78,node9,node3).
  119.  
  120. node_in_module(node1,1).
  121. node_in_module(node2,1).
  122. node_in_module(node3,2).
  123. node_in_module(node4,1).
  124. node_in_module(node5,1).
  125. node_in_module(node6,1).
  126. node_in_module(node7,2).
  127. node_in_module(node8,2).
  128. node_in_module(node9,1).
  129. node_in_module(node10,2).
  130. node_in_module(node11,2).
  131. node_in_module(node12,2).
  132. node_in_module(node13,2).
  133. node_in_module(node14,2).
  134. node_in_module(node15,2).
  135. node_in_module(node16,1).
  136. node_in_module(node17,1).
  137. node_in_module(node18,1).
  138. node_in_module(node19,2).
  139. node_in_module(node20,1).
  140. node_in_module(node21,1).
  141. node_in_module(node22,1).
  142. node_in_module(node23,1).
  143. node_in_module(node24,1).
  144. node_in_module(node25,1).
  145. node_in_module(node26,2).
  146. node_in_module(node27,2).
  147. node_in_module(node28,2).
  148. node_in_module(node29,2).
  149. node_in_module(node30,1).
  150. node_in_module(node31,2).
  151. node_in_module(node32,1).
  152. node_in_module(node33,2).
  153. node_in_module(node34,1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement