Files
tira/viikko14/bellman-ford.py
T
2026-04-15 10:39:02 +03:00

44 lines
1.1 KiB
Python

import time
import random
class BellmanFord:
def __init__(self, nodes):
self.nodes = nodes
self.edges = []
def add_edge(self, node_a, node_b, weight):
self.edges.append((node_a, node_b, weight))
def find_distances(self, start_node):
distances = {}
for node in self.nodes:
distances[node] = float("inf")
distances[start_node] = 0
num_rounds = len(self.nodes) - 1
for _ in range(num_rounds):
for edge in self.edges:
node_a, node_b, weight = edge
new_distance = distances[node_a] + weight
if new_distance < distances[node_b]:
distances[node_b] = new_distance
return distances
if __name__ == "__main__":
start = time.time()
ls = [x for x in range(1, 5000 + 1)]
random.shuffle(ls)
bf = BellmanFord(ls)
for i in range(1, 5000 + 1):
for j in range(1, i):
if i - j < 10:
bf.add_edge(j, i, random.randint(1, 1000))
distances = bf.find_distances(1)
end = time.time()
print(f"Time: {end - start:.2f}s")