Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. def generateGraph(z):
  2. '''
  3. Generates a dictionary {vertex: set(links)} from the matrix
  4. '''
  5. graph = {}
  6. for key,value in enumerate(range(0,len(z))):
  7. z[value] = list(z[value])
  8. graph[value] = set()
  9. for k,v in enumerate(z[value]):
  10. if int(z[value][k]) == 1:
  11. graph[value].add(k)
  12. return graph
  13.  
  14. def countClusters(graph):
  15. '''
  16. Counts the number of independent sub-graphs
  17. '''
  18. clusters = 0
  19. while graph != {}:
  20. clusters += 1
  21. for edge in graph[next(iter(graph))]:
  22. if edge in graph:
  23. for vertex in depthFirstSearch(graph,edge):
  24. del graph[vertex]
  25. return clusters
  26.  
  27. def depthFirstSearch(graph, vertex, visited=None):
  28. '''
  29. Searches a graph by vising recursively all vertices
  30. '''
  31. if visited is None:
  32. visited = set()
  33. visited.add(vertex)
  34. for nextVertex in graph[vertex] - visited:
  35. dfs(graph, nextVertex, visited)
  36. return visited
  37.  
  38.  
  39.  
  40. m = ['11000',
  41. '11000',
  42. '00110',
  43. '00110',
  44. '00001']
  45. graph = generateGraph(m)
  46. clusters = countClusters(graph)
  47. print clusters
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement