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

koffein takk

parent 66633662
Branches main
No related tags found
No related merge requests found
from math import inf
import sys import sys
class int_points (object): class int_points (object):
...@@ -85,8 +84,6 @@ def rec_func(node, counter, global_fra): ...@@ -85,8 +84,6 @@ def rec_func(node, counter, global_fra):
return rec_func(node, counter, global_fra) return rec_func(node, counter, global_fra)
def calculate_shortest_path(current_node, time, current_neighbour, slutt): def calculate_shortest_path(current_node, time, current_neighbour, slutt):
print('\nin calculate')
res_a = [c for c in res_arr if c.node == current_neighbour.node][0]
count_a = 0 count_a = 0
count_a = rec_func(current_neighbour, count_a, slutt) count_a = rec_func(current_neighbour, count_a, slutt)
count_b = 0 count_b = 0
...@@ -105,10 +102,14 @@ def update_que(que): ...@@ -105,10 +102,14 @@ def update_que(que):
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
end_que = []
queue = [] queue = []
we_soon_to_be_done = False
def dijkstras(slutt, fra, start): def dijkstras(slutt, fra, start):
global we_soon_to_be_done
global queue global queue
if we_soon_to_be_done:
end_que.pop(0)
current_node = [b for b in res_arr if b.node == fra][0] current_node = [b for b in res_arr if b.node == fra][0]
for tmp_edge in edge_arr: for tmp_edge in edge_arr:
if tmp_edge.fra == fra: if tmp_edge.fra == fra:
...@@ -118,8 +119,11 @@ def dijkstras(slutt, fra, start): ...@@ -118,8 +119,11 @@ def dijkstras(slutt, fra, start):
current_neighbour.prev = fra current_neighbour.prev = fra
if tmp_edge.til == slutt: if tmp_edge.til == slutt:
current_node.visited = True current_node.visited = True
queue.pop(0) we_soon_to_be_done = True
dijkstras(slutt, slutt, start) end_que.append(tmp_edge.til)
else:
if tmp_edge.fra == slutt:
end_que.append(tmp_edge.til)
else: else:
queue.append(tmp_edge.til) queue.append(tmp_edge.til)
...@@ -127,8 +131,7 @@ def dijkstras(slutt, fra, start): ...@@ -127,8 +131,7 @@ def dijkstras(slutt, fra, start):
if calculate_shortest_path(current_node, tmp_edge.time, current_neighbour, start): if calculate_shortest_path(current_node, tmp_edge.time, current_neighbour, start):
current_neighbour.time = tmp_edge.time current_neighbour.time = tmp_edge.time
current_neighbour.prev = tmp_edge.fra current_neighbour.prev = tmp_edge.fra
if we_soon_to_be_done and not len(end_que):
if fra == slutt:
#not finished #not finished
print('ferdig, resultater er: node, tid, prev, besøkt') print('ferdig, resultater er: node, tid, prev, besøkt')
for i in res_arr: for i in res_arr:
...@@ -136,6 +139,10 @@ def dijkstras(slutt, fra, start): ...@@ -136,6 +139,10 @@ def dijkstras(slutt, fra, start):
print(i.node, i.time, i.prev, i.visited) print(i.node, i.time, i.prev, i.visited)
print('que when done is: ', queue) print('que when done is: ', queue)
exit() exit()
else:
if we_soon_to_be_done:
current_node.visited = True
dijkstras(slutt,end_que[0],start)
else: else:
queue.pop(0) queue.pop(0)
current_node.visited = True current_node.visited = True
...@@ -149,8 +156,8 @@ def init_things(): ...@@ -149,8 +156,8 @@ def init_things():
if len(sys.argv) > 1: if len(sys.argv) > 1:
if sys.argv[1] == '-d': if sys.argv[1] == '-d':
#node_id #node_id
start = 0 start = 20
slutt = 2 slutt = 27
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]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment