Python-costraint для оптимального покрытия вершин

Я новичок в программировании на CSP. У меня есть код ниже:

      from constraint import *

problem = Problem()

vertex = range(1, 6)
edges = [[1, 2], [1, 3], [2, 4], [2, 5], [2, 6], [4, 6]]

problem.addVariables(vertex, [0 , 1])

for edge in edges:
    problem.addConstraint(MinSumConstraint(1), edge)

solutions = problem.getSolutions()

a = min(solutions, key=lambda d: len([k for k in d.keys() if d[k] == 1]))

print(a)

Этот код успешно решает задачу графа "Оптимальное покрытие вершины".

Хотелось бы узнать, как работает эта строчка

      for edge in edges:
    problem.addConstraint(MinSumConstraint(1), edge)

например, если край [1, 2], какова сумма? как мы можем вычислить его, чтобы выбрать пары ребер, которые соблюдают это ограничение (MinSumConstraint)?

0 ответов

Другие вопросы по тегам