def single_variable_constraints(A, b):
row = len(A)
col = len(A[0])
vertices_num = col
vertices = []
edges = []
weights = dict()
for i in range(0, vertices_num + 1):
vertices.append(Vertex(i))
for i in range(0, row):
for j in range(0, len(A[i])):
if A[i][j] == 1:
edges.append((vertices[0], vertices[j + 1]))
weights[(vertices[0], vertices[j + 1])] = b[i]
break
elif A[i][j] == -1:
edges.append((vertices[j + 1], vertices[0]))
weights[(vertices[j + 1], vertices[0])] = b[i]
break
G = Graph(vertices, edges)
if G.Bellman_Ford(lambda x, y: weights[(x, y)], vertices[0]):
return [v.d for v in vertices[1:]]
else:
return None
评论列表
文章目录