Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. # 6.00 Problem Set 11
  2. #
  3. # graph.py
  4. #
  5. # A set of data structures to represent graphs
  6. #
  7.  
  8.  
  9. class Node(object):
  10. def __init__(self, name):
  11. self.name = str(name)
  12. def getName(self):
  13. return self.name
  14. def __str__(self):
  15. return self.name
  16. def __repr__(self):
  17. return self.name
  18. def __eq__(self, other):
  19. return self.name == other.name
  20. def __ne__(self, other):
  21. return not self.__eq__(other)
  22.  
  23. class Edge(object):
  24. def __init__(self, src, dest):
  25. self.src = src
  26. self.dest = dest
  27. def getSource(self):
  28. return self.src
  29. def getDestination(self):
  30. return self.dest
  31. def __str__(self):
  32. return str(self.src) + '->' + str(self.dest)
  33.  
  34. class Digraph(object):
  35. """
  36. A directed graph
  37. """
  38. def __init__(self):
  39. self.nodes = set([])
  40. self.edges = {}
  41. def addNode(self, node):
  42. if node in self.nodes:
  43. raise ValueError('Duplicate node')
  44. else:
  45. self.nodes.add(node)
  46. self.edges[node] = []
  47. def addEdge(self, edge):
  48. src = edge.getSource()
  49. dest = edge.getDestination()
  50. if not(src in self.nodes and dest in self.nodes):
  51. raise ValueError('Node not in graph')
  52. self.edges[src].append(dest)
  53. def childrenOf(self, node):
  54. return self.edges[node]
  55. def hasNode(self, node):
  56. return node in self.nodes
  57. def __str__(self):
  58. res = ''
  59. for k in self.edges:
  60. for d in self.edges[k]:
  61. res = res + str(k) + '->' + str(d) + '\n'
  62. return res[:-1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement