import math
edges = [
("GBP", "USD", 1.35)
("GBP", "EUR", 1.15)
("USD", "GBP", 0.74)
("USD", "EUR", 0.85)
("EUR", "GBP", 0.87)
("EUR", "USD", 1.18)
("THB", "USD", 0.030)
("THB", "EUR", 0.025)
("THB", "GBP", 0.027)
]
arbitrage = []
transformed_edges = []
for v,w, rate in edges: #v being the start node, w being the end node
weight = -math.log(rate)
transformed_edges.append(v, w , weight)
def arbitrage_exists(vertices, edges, source):
distance = {v: float('inf') for v in vertices}
distance[source] = 0
for i in range(len(vertices) - 1):
for u, v, weight in transformed_edges:
if distance[u] + w < distance[v]:
distance[v] = distance[u] + w
for u, v, weight in transformed_edges:
if distance[u] + w < distance[v]:
arbitrage = (u, v, weight)
return True
return False
Это то, что у меня есть на данный момент: я впервые работаю над таким проектом на Python (и я давно не использую Python, но еще очень неопытен), поэтому любые советы приветствуются.>
[code]import math edges = [ ("GBP", "USD", 1.35) ("GBP", "EUR", 1.15) ("USD", "GBP", 0.74) ("USD", "EUR", 0.85) ("EUR", "GBP", 0.87) ("EUR", "USD", 1.18) ("THB", "USD", 0.030) ("THB", "EUR", 0.025) ("THB", "GBP", 0.027) ] arbitrage = [] transformed_edges = [] for v,w, rate in edges: #v being the start node, w being the end node weight = -math.log(rate) transformed_edges.append(v, w , weight) def arbitrage_exists(vertices, edges, source): distance = {v: float('inf') for v in vertices} distance[source] = 0 for i in range(len(vertices) - 1): for u, v, weight in transformed_edges: if distance[u] + w < distance[v]: distance[v] = distance[u] + w
for u, v, weight in transformed_edges: if distance[u] + w < distance[v]: arbitrage = (u, v, weight) return True return False [/code] Это то, что у меня есть на данный момент: я впервые работаю над таким проектом на Python (и я давно не использую Python, но еще очень неопытен), поэтому любые советы приветствуются.>