, , , !
, , , ( , ).
def read_distances(map_file):
connections = dict()
return connections
, , - , . , "A, B, 5", read_distances
, A ("B",5)
B ("A",5)
. , . :
distances = read_distances(map_file)
print(distances["A"])
print(distances["B"])
, , :
A,B,5
A,C,3
B,C,4
- :
distances = read_distances(map_file)
print(distances["A"])
print(distances["B"])
print(distances["C"])
, distances[starting_point]
, , . 2- (.. 2 ), (other_point, distance_as_int).
, , , , , , . ( , : " ", , , .) , ( ), . , , , , .
1:
, , . distances[starting_point]
, , - . .
connections = distances[start_point]
for connection in connections:
end_point = connection[0]
distance = connection[1]
, Python : , , , "", :
connections = distances[start_point]
for end_point, distance in connections:
"" . , , , , , ( 2). , , , connections
, , . , :
for end_point, distance in distances[start_point]:
, "" .
.. , Python , , . , pass
. pass
, "no-op", .. . , , , :
for end_point, distance in distances[start_point]:
pass
, pass
IndentationError
. pass
, , , .
2:
, , , , . , .
def dfs(place, dist_so_far, roads, distances):
"""Depth-first search, which may continue from from_place if dist_so_far
is the shortest distance at which it has yet been reached.
Args:
place: Currently searching from here
dist_so_far: Distance at which from_place has been reached
this time (which may not be the shortest path to from_place)
roads: dict mapping places to lists of hops of the form (place, hop-distance)
distances: dict mapping places to the shortest distance at which they
have been reached so far (up to this time).
"""
if place not in distances:
distances[place] = dist_so_far
if dist_so_far > distances[place]:
return
distances[place] = dist_so_far
for other_place, hop_distance in roads[place]:
dist_to_other_place = dist_so_far + hop_distance
dfs(other_place, dist_to_other_place, roads, distances)
, . , , . , , .
, , , . : Python . , (, distances
) , , , , .
, BAD . , , , , , . ( . , , add_value_to_dict
, , , , .)
, , . distances
, , , . , dfs()
, . , , , , . , .
, , , . , . -, , .