Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def longestPath(self, order):
- '''
- :param order:
- :return:
- '''
- #
- self.order = order
- source, sink, edgeDict, weightDict = (self.source, self.sink, self.edgeDict, self.weightDict)
- #
- weightDistance = {node: -999 for node in order}
- #
- ordern = order[order.index(source)+1:order.index(sink) + 1]
- traceback = {node: None for node in ordern}
- weightDistance[source] = 0
- #
- for node in order:
- #
- r node in edgeDict:
- #
- for adjNode in edgeDict[node]:
- #
- if weightDistance[adjNode] < (weightDistance[node] + weightDict[node][adjNode]):
- #
- traceback[adjNode] = node
- weightDistance[adjNode] = weightDistance[node] + weightDict[node][adjNode]
- longestPath = []
- #
- while sink in traceback.keys():
- #
- longestPath = [sink] + longestPath
- #
- sink = traceback[sink]
- #
- longestPath = [source] + longestPath
- #
- longestDistance = weightDistance[self.sink]
- return longestPath, longestDistance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement