Jan-22-2019, 12:57 PM
Hey there !
Im having trouble with this code:
I just want to run it and get the solution...
Many thanks in advance !
Im having trouble with this code:
class Graph: def __init__(self): self.graph = { 'A': {'B': 10, 'D': 4, 'F': 10}, 'B': {'E': 5, 'J': 10, 'I': 17}, 'C': {'A': 4, 'D': 10, 'E': 16}, 'D': {'F': 12, 'G': 21}, 'E': {'G': 4}, 'F': {'H': 3}, 'G': {'J': 3}, 'H': {'G': 3, 'J':5}, 'I': {}, 'J': {'I': 8} } def shortpath(self, start, end): D = {} # final distances dict P = {} # Predecessor dict #Fill the dicts with default values for node in self.graph.keys(): D[node] = - 1 # Vertices are unreachable P[node] = "" # Vertices have no predecessors D[start] = 0 # The start vertex needs no move # print(f'D: {D}\nP: {P}') unseen_nodes = list(self.graph.keys()) # All nodes are unseen while len(unseen_nodes) > 0: # print(f'unseen_nodes: {unseen_nodes}') # Select the node with the lowest value in D (final distance) shortest = None node = '' for temp_node in unseen_nodes: if shortest == None: shortest = D[temp_node] node = temp_node elif D[temp_node] < shortest: shortest = D[temp_node] node = temp_node #remove the selected node from unseen_nodes if node in unseen_nodes: unseen_nodes.remove(node) #for each child (connected vertex) of the current node for child_node, child_value in self.graph[node].items(): if D[child_node] < D[node] + child_value: D[child_node] = D[node] + child_value #To go to child_node, you have to go through node P[child_node] = node #Set a clean path path = [] # we begin from the end node = end #while we are not arrived at the beginning while not (node == start): if path.count(node) == 0: path.insert(0, node) #Insert the predecessor of the current node node = P[node] # The current node becomes its predecessor else: break path.insert(0, start)#Finally, insert the start vertex return path def main(): gg = Graph() gg.shortpath('C', 'I') if __name__ == '__main__': main()I previously got help from a very kind soul in this forum, who suggest I should remove line 71 and remove the indentation from line 72 and after that, I should run:
python programname.pyIt was to no avail, since I get SyntaxError when I run the aforementioned command in a different cell....
I just want to run it and get the solution...
Many thanks in advance !