Advertisement
Guest User

Untitled

a guest
Nov 20th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. class Graph():
  2. def __init__(self):
  3. import queue
  4. self.d = {}
  5. def addNode(self, node):
  6. if node not in self.d:
  7. self.d[node] = []
  8. def __repr__(self):
  9. return(str(self.d))
  10. def addEdge(self, source, target):
  11. if self.d[source] != []:
  12. if target not in self.d[source]:
  13. self.d[source].append(target)
  14. else:
  15. print("takie polaczenie juz istnieje", (source, target))
  16. else:
  17. self.d[source] = [target]
  18. if source not in self.d[target]:
  19. self.addEdge(target, source)
  20. def visit(self,node):
  21. print("odwiedzamy teraz wezel: ", node)
  22. def w_glab(self, start):
  23. try:
  24. self.visited.append(start)
  25. except:
  26. self.visited = [start]
  27. for node in self.d[start]:
  28. if node not in self.visited:
  29. self.w_glab(node)
  30. #self.visit(start)
  31. return self.visited
  32.  
  33.  
  34.  
  35. def wszerz(self, start):
  36. self.q = queue.Queue()
  37. self.visited2 = {}
  38. self.q.put(start)
  39. self.visited2[start] = True
  40. while not self.q.empty():
  41. start = self.q.get()
  42. #self.visit(start)
  43. for node in self.d[start]:
  44. if node in self.visited2.keys():
  45. if self.visited2[node] != True:
  46. self.q.put(node)
  47. self.visited2[node] = True
  48. else:
  49. self.q.put(node)
  50. self.visited2[node] = True
  51. self.v = self.visited2.keys()
  52. return(list(self.v))
  53.  
  54.  
  55. def najkrotszy(self, start, koniec):
  56. self.wszerz(start)
  57. self.visited3 = {}
  58. self.p = {}
  59. self.qu = queue.Queue()
  60. self.p[start] = start
  61. self.qu.put(start)
  62. self.visited3[start] = True
  63. while not self.qu.empty():
  64. start = self.qu.get()
  65. if start == koniec:
  66. while self.p[start] != start:
  67. print(start)
  68. start = self.p[start]
  69. self.qu = None
  70. return True
  71. for node in self.d[start]:
  72. if node in self.visited3.keys():
  73. if self.visited3[node] != True:
  74. self.p[node] = self.p[start]
  75. self.qu.put(node)
  76. self.visited3[node] = True
  77. else:
  78. self.p[node] = start
  79. self.qu.put(node)
  80. self.visited3[node] = True
  81. print("sciezka nie istnieje")
  82. return True
  83.  
  84.  
  85. import queue
  86. g = Graph()
  87. for element in "ABCDEFGHIJ":
  88. g.addNode(element)
  89. g.addEdge("A","B")
  90. g.addEdge("A","D")
  91. g.addEdge("A","C")
  92. g.addEdge("C","F")
  93. g.addEdge("D","F")
  94. g.addEdge("F","G")
  95. g.addEdge("B","G")
  96. g.addEdge("G","H")
  97. print("Twoj graf to: ", g)
  98. pocz = input("Podaj wierzcholek przeszukiwania wglab: ")
  99. print(g.w_glab(pocz))
  100. szerz = input("Podaj wierzcholek przeszukiwania wszerz: ")
  101. print(g.wszerz(szerz))
  102. a = input("Podaj wierzcholek poczatkowy: ")
  103. b = input("Podaj wierzcholek koncowy: ")
  104. print("Najkrotsza sciezka pomiedzy: ", a, " oraz ", b)
  105. g.najkrotszy(a, b)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement