Skip to content
Snippets Groups Projects
Commit 6c4669ca authored by Jacob Theisen's avatar Jacob Theisen
Browse files

shjør

parent 076e8d20
No related branches found
No related tags found
No related merge requests found
...@@ -73,7 +73,7 @@ max_num = max(edge_arr,key=lambda item:item.time) ...@@ -73,7 +73,7 @@ max_num = max(edge_arr,key=lambda item:item.time)
res_arr = [] res_arr = []
def init_table(): def init_table():
for i in range(num_of_nodes): for i in range(num_of_nodes):
res_arr.append(results(i, max_num.time+1, False, None, )) res_arr.append(results(i, max_num.time+1, False, None))
# def rec_func(node, counter, global_fra, end_switch): # def rec_func(node, counter, global_fra, end_switch):
# if not end_switch: # if not end_switch:
...@@ -103,22 +103,22 @@ def rec_func2(node, global_fra): ...@@ -103,22 +103,22 @@ def rec_func2(node, global_fra):
def calculate_shortest_path(current_node, time, current_neighbour, slutt): # def calculate_shortest_path(current_node, time, current_neighbour, slutt):
count_a = 0 # count_a = 0
count_a, _ = rec_func2(current_neighbour, count_a, slutt) # count_a, _ = rec_func2(current_neighbour, count_a, slutt)
count_b = 0 # count_b = 0
count_b, _ = rec_func2(current_node, count_b, slutt) # count_b, _ = rec_func2(current_node, count_b, slutt)
count_b += time # count_b += time
if count_b < count_a: # if count_b < count_a:
return True # return True
else: # else:
return False # return False
def update_que(que): def update_que(que):
tmp_arr = [a for a in res_arr if a.node in que] tmp_arr = [a for a in res_arr if a.node in que]
tmp_arr.sort(key=lambda x: x.time, reverse=True) tmp_arr.sort(key=lambda x: x.total_time, reverse=True)
que = [a.node for a in tmp_arr if a in tmp_arr] que = [a.node for a in tmp_arr if a in tmp_arr]
return que return que
...@@ -137,7 +137,7 @@ def dijkstras(slutt, fra, start): ...@@ -137,7 +137,7 @@ def dijkstras(slutt, fra, start):
if tmp_edge.fra == fra: if tmp_edge.fra == fra:
current_neighbour = [a for a in res_arr if a.node == tmp_edge.til][0] current_neighbour = [a for a in res_arr if a.node == tmp_edge.til][0]
if current_neighbour.visited == False and current_neighbour.node not in queue: if current_neighbour.visited == False and current_neighbour.node not in queue:
current_neighbour.time = current_node.time + tmp_edge.time current_neighbour.total_time = current_node.total_time + tmp_edge.time
current_neighbour.prev = current_node.node current_neighbour.prev = current_node.node
if tmp_edge.til == slutt: if tmp_edge.til == slutt:
current_node.visited = True current_node.visited = True
...@@ -150,15 +150,15 @@ def dijkstras(slutt, fra, start): ...@@ -150,15 +150,15 @@ def dijkstras(slutt, fra, start):
queue.append(tmp_edge.til) queue.append(tmp_edge.til)
elif current_neighbour.node != start: elif current_neighbour.node != start:
if current_node.time + tmp_edge.time < current_neighbour.time: if current_node.total_time + tmp_edge.time < current_neighbour.total_time:
current_neighbour.time = tmp_edge.time + current_node.time current_neighbour.total_time = tmp_edge.time + current_node.total_time
current_neighbour.prev = current_node.node current_neighbour.prev = current_node.node
if we_soon_to_be_done and not len(end_que): if we_soon_to_be_done and not len(end_que):
#not finished #not finished
end_node = [b for b in res_arr if b.node == slutt][0] end_node = [b for b in res_arr if b.node == slutt][0]
travel_arr = rec_func2(end_node, start) travel_arr = rec_func2(end_node, start)
travel_arr = reversed(travel_arr) travel_arr = reversed(travel_arr)
print(f'total time: {end_node.time}\nshortest path: {"->".join(str(v) for v in travel_arr)}') print(f'total time: {end_node.total_time}\nshortest path: {"->".join(str(v) for v in travel_arr)}')
exit() exit()
else: else:
if we_soon_to_be_done: if we_soon_to_be_done:
...@@ -178,11 +178,11 @@ def init_things(): ...@@ -178,11 +178,11 @@ def init_things():
if sys.argv[1] == '-d': if sys.argv[1] == '-d':
#node_id #node_id
start = 20 start = 20
slutt = 4000 slutt = 30
init_table() init_table()
queue.append(start) queue.append(start)
start_node = [a for a in res_arr if a.node == start][0] start_node = [a for a in res_arr if a.node == start][0]
start_node.time = 0 start_node.total_time = 0
dijkstras(slutt, start, start) dijkstras(slutt, start, start)
elif sys.argv[1] == '-a': elif sys.argv[1] == '-a':
print('A* not yet implemented') print('A* not yet implemented')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment