1

我需要解决具有 4 个节点和 5 条边的图的最大切问题,但我必须同时使用二次解和线性解。我需要通过添加一些约束将二次 maxcut 问题转换为线性问题,但我不知道该怎么做。

这是我找到的二次方版本:

import numpy as np

from qiskit_optimization import QuadraticProgram
from qiskit_optimization.algorithms import MinimumEigenOptimizer

from qiskit import BasicAer
from qiskit.algorithms import QAOA
from qiskit.algorithms.optimizers import SPSA

# Generate a graph of 4 nodes
n = 4
graph = nx.Graph()
graph.add_nodes_from(np.arange(0, n, 1))
elist = [(0, 1, 1.0), (0, 2, 1.0), (0, 3, 1.0), (1, 2, 1.0), (2, 3, 1.0)]
graph.add_weighted_edges_from(elist)

# Compute the weight matrix from the graph
w = nx.adjacency_matrix(graph)
print(w)

# Formulate the problem as quadratic program
problem = QuadraticProgram()
_ = [problem.binary_var('x{}'.format(i)) for i in range(n)] # create n binary variables
linear = w.dot(np.ones(n))
quadratic = -w
problem.maximize(linear=linear, quadratic=quadratic)
print(problem.export_as_lp_string())

现在我应该通过添加以下约束将问题表述为线性问题:(下图链接)

<( https://imgur.com/EdRDBiO )>

提前感谢您的帮助

4

0 回答 0