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

koffein takk

parent 66633662
No related branches found
No related tags found
No related merge requests found
from math import inf
import sys
class int_points (object):
......@@ -85,8 +84,6 @@ def rec_func(node, counter, global_fra):
return rec_func(node, counter, global_fra)
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 = rec_func(current_neighbour, count_a, slutt)
count_b = 0
......@@ -105,10 +102,14 @@ def update_que(que):
que = [a.node for a in tmp_arr if a in tmp_arr]
return que
end_que = []
queue = []
we_soon_to_be_done = False
def dijkstras(slutt, fra, start):
global we_soon_to_be_done
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]
for tmp_edge in edge_arr:
if tmp_edge.fra == fra:
......@@ -118,8 +119,11 @@ def dijkstras(slutt, fra, start):
current_neighbour.prev = fra
if tmp_edge.til == slutt:
current_node.visited = True
queue.pop(0)
dijkstras(slutt, slutt, start)
we_soon_to_be_done = True
end_que.append(tmp_edge.til)
else:
if tmp_edge.fra == slutt:
end_que.append(tmp_edge.til)
else:
queue.append(tmp_edge.til)
......@@ -127,8 +131,7 @@ def dijkstras(slutt, fra, start):
if calculate_shortest_path(current_node, tmp_edge.time, current_neighbour, start):
current_neighbour.time = tmp_edge.time
current_neighbour.prev = tmp_edge.fra
if fra == slutt:
if we_soon_to_be_done and not len(end_que):
#not finished
print('ferdig, resultater er: node, tid, prev, besøkt')
for i in res_arr:
......@@ -136,6 +139,10 @@ def dijkstras(slutt, fra, start):
print(i.node, i.time, i.prev, i.visited)
print('que when done is: ', queue)
exit()
else:
if we_soon_to_be_done:
current_node.visited = True
dijkstras(slutt,end_que[0],start)
else:
queue.pop(0)
current_node.visited = True
......@@ -149,8 +156,8 @@ def init_things():
if len(sys.argv) > 1:
if sys.argv[1] == '-d':
#node_id
start = 0
slutt = 2
start = 20
slutt = 27
init_table()
queue.append(start)
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