Advertisement
Guest User

Untitled

a guest
May 25th, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. def SolveTSP():
  2. global graph
  3. In = graph.getIn()
  4. Out = graph.getOut()
  5. print("In: ", In)
  6. print("Out: ", Out)
  7. minCost = 9999999
  8. minCostCycle = []
  9. list = FindAllHamiltonianCycles(Out, In)
  10. for cycle in list:
  11. cost = 0
  12. minCycle = []
  13. for index in range (0, len(cycle) - 1):
  14. cost += graph.getCostValue(cycle[index], cycle[index + 1])
  15. minCycle.append(cycle[index])
  16. if cost < minCost:
  17. minCost = cost
  18. minCostCycle = minCycle
  19.  
  20. ------------------------------------------------
  21.  
  22. '''
  23. Created on Mar 23, 2015
  24.  
  25. @author: razvan
  26. '''
  27.  
  28. class Graph:
  29. def __init__(self, nrVertices):
  30. self.__In = {}
  31. self.__Out = {}
  32. self.__edges = {}
  33. self.__nrVertices = nrVertices
  34. for x in range(nrVertices):
  35. self.__Out[x] = []
  36. self.__In[x] = []
  37.  
  38. def getIn(self):
  39. return self.__In
  40.  
  41. def getOut(self):
  42. return self.__Out
  43.  
  44. def getNrOfVertices(self):
  45. return self.__nrVertices;
  46.  
  47. def getVertices(self):
  48. return self.__Out.keys()
  49.  
  50. def addEdge(self, start, end, cost):
  51. edge = (start, end)
  52. if end not in self.__Out[start]:
  53. self.__Out[start].append(end)
  54. if start not in self.__In[end]:
  55. self.__In[end].append(start)
  56. self.__edges[edge] = int(cost)
  57.  
  58. def isEdge(self, start, end):
  59. if end in self.__Out[start]:
  60. return True
  61. return False
  62.  
  63. def outbound(self, vertex):
  64. return self.__Out[vertex]
  65.  
  66. def inbound(self, vertex):
  67. return self.__In[vertex]
  68.  
  69. def getEdges(self):
  70. return self.__edges.keys()
  71.  
  72. def getCostValue(self,start,end):
  73. '''key == tuple'''
  74. key = (start, end)
  75. if key in self.__edges.keys():
  76. return (self.__edges[key])
  77. else:
  78. print("There is no such edge!")
  79.  
  80. def setCostValue(self, start, end, val):
  81. key = (start,end)
  82. self.__edges[key] = val
  83.  
  84. def parseNout(self, vertex):
  85. return self.__Out[vertex]
  86.  
  87. def parseNin(self, vertex):
  88. return self.__In[vertex]
  89.  
  90. def vertexDegree(self, vertex):
  91. return [len(self.__In[vertex]), len(self.__Out[vertex])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement