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 !
