mindquantum.algorithm.nisq.MaxCutAnsatz
- class mindquantum.algorithm.nisq.MaxCutAnsatz(graph, depth=1)[源代码]
MaxCut ansatz。了解更多详细信息,请访问 A Quantum Approximate Optimization Algorithm。
\[U(\beta, \gamma) = e^{-\beta_pH_b}e^{-\gamma_pH_c} \cdots e^{-\beta_0H_b}e^{-\gamma_0H_c}H^{\otimes n}\]\[H_b = \sum_{i\in n}X_{i}, H_c = \sum_{(i,j)\in C}Z_iZ_j\]这里: \(n\) 是节点的集合, \(C\) 是图的边的集合。
- 参数:
graph (list[tuple[int]]) - 图结构。图的每个元素都是由两个节点构造的边。例如,[(0, 1), (1,2)]表示一个三节点的图,且其中一条边连接节点0和节点1,另一条边连接节点1和节点2。
depth (int) - MaxCut ansatz的深度。默认值:
1
。
样例:
>>> import numpy as np >>> from mindquantum.algorithm.nisq import MaxCutAnsatz >>> graph = [(0, 1), (1, 2), (0, 2)] >>> maxcut = MaxCutAnsatz(graph, 1) >>> maxcut.circuit ┏━━━┓ ┏━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━┓ ┏━━━━━━━━━━━━━┓ q0: ──┨ H ┠─┨ ┠─────────────────● ┠─┨ RX(alpha_0) ┠─── ┗━━━┛ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━┛ ┏━━━┓ ┃ Rzz(beta_0) ┃ ┏━━━━━━━━━━━━━┓ ┃ ┃ ┏━━━━━━━━━━━━━┓ q1: ──┨ H ┠─┨ ┠─┨ ┠─┨ Rzz(beta_0) ┠─┨ RX(alpha_0) ┠─── ┗━━━┛ ┗━━━━━━━━━━━━━┛ ┃ ┃ ┃ ┃ ┗━━━━━━━━━━━━━┛ ┏━━━┓ ┃ Rzz(beta_0) ┃ ┃ ┃ ┏━━━━━━━━━━━━━┓ q2: ──┨ H ┠─────────────────┨ ┠─● ┠─┨ RX(alpha_0) ┠─── ┗━━━┛ ┗━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━┛ ┗━━━━━━━━━━━━━┛ >>> >>> print(maxcut.hamiltonian) 3/2 [] + -1/2 [Z0 Z1] + -1/2 [Z0 Z2] + -1/2 [Z1 Z2] >>> partitions = maxcut.get_partition(5, np.array([4, 1])) >>> for i in partitions: ... print(f'partition: left: {i[0]}, right: {i[1]}, cut value: {maxcut.get_cut_value(i)}') partition: left: [2], right: [0, 1], cut value: 2 partition: left: [0, 1], right: [2], cut value: 2 partition: left: [0], right: [1, 2], cut value: 2 partition: left: [0, 1, 2], right: [], cut value: 0 partition: left: [], right: [0, 1, 2], cut value: 0
- get_cut_value(partition)[源代码]
获取切割方案的切割边数。切割方案是一个list数组,该list数组由两个list数组构成,每一个list数组包含切割的节点。
- 参数:
partition (list) - 图形切割方案。
- 返回:
int,给定切割方案下的切割值。
- get_partition(max_n, weight)[源代码]
获取MaxCut问题的切割方案。
- 参数:
max_n (int) - 需要多少个切割方案。
weight (Union[ParameterResolver, dict, numpy.ndarray, list, numbers.Number]) - MaxCut ansatz的参数值。
- 返回:
list,切割方案构成的列表。
- property hamiltonian
获取MaxCut问题的哈密顿量。
- 返回:
QubitOperator,MaxCut问题的哈密顿量。