mindquantum.algorithm.nisq.SGAnsatz2D

View Source On Gitee
class mindquantum.algorithm.nisq.SGAnsatz2D(nqubits, k, line_set=None, nlayers=1, prefix='', suffix='')[source]

SG ansatz for 2D quantum systems.

The SG ansatz consists of multiple variational quantum circuit blocks, each of which is a parametrized quantum circuit applied to several adjacent qubits. With such a structure, the SG ansatz naturally adapts to quantum many-body problems.

Specifically, for 1D quantum systems, the SG ansatz can efficiently generate any matrix product states with a fixed bond dimension. For 2D systems, the SG ansatz can generate string-bond states.

For more detail, please refers A sequentially generated variational quantum circuit with polynomial complexity.

Parameters
  • nqubits (int) – Number of qubits in the ansatz.

  • k (int) – log(R) + 1, where R is the fixed bond dimension.

  • line_set (list, optional) – A list set of qubits' lines to generate a specific type of string-bond state. If None, will be generated automatically as a 1×N grid where N equals to nqubits. Default: None.

  • nlayers (int) – Number of layers in each block. Default: 1.

  • prefix (str) – The prefix of parameters. Default: ''.

  • suffix (str) – The suffix of parameters. Default: ''.

Examples

>>> from mindquantum.algorithm import SGAnsatz2D
>>> # Method 1: Create from 2D grid (recommended)
>>> sg = SGAnsatz2D.from_grid(nrow=2, ncol=3, k=2)
>>> print(len(sg.circuit))  # Number of quantum gates in the ansatz
32
>>> # Method 2: Create with custom line set
>>> line_set = SGAnsatz2D.generate_line_set(2, 3)  # [[0,3,4,1,2,5], [0,1,2,5,4,3]]
>>> sg = SGAnsatz2D(nqubits=6, k=2, line_set=line_set)
classmethod from_grid(nrow, ncol, k, nlayers=1, prefix='', suffix='')[source]

Create SGAnsatz2D from a 2D grid configuration.

This is the recommended way to create a SGAnsatz2D instance for 2D quantum systems. It automatically generates the appropriate line set based on the grid dimensions.

Parameters
  • nrow (int) – Number of rows in the 2D grid

  • ncol (int) – Number of columns in the 2D grid

  • k (int) – log(R) + 1, where R is the fixed bond dimension

  • nlayers (int) – Number of layers in each block. Default: 1

  • prefix (str) – The prefix of parameters. Default: ''

  • suffix (str) – The suffix of parameters. Default: ''

Returns

A new instance configured for the specified 2D grid

Return type

SGAnsatz2D

Examples

>>> from mindquantum.algorithm import SGAnsatz2D
>>> sg = SGAnsatz2D.from_grid(nrow=2, ncol=3, k=2)
>>> print(len(sg.circuit))  # Number of quantum gates in the ansatz
32
classmethod generate_line_set(nrow, ncol)[source]

Generate snake-like traversal patterns for 2D quantum systems.

This method generates two different traversal paths for a 2D quantum system: 1. Column-wise snake pattern: traverses each column alternating between up and down 2. Row-wise snake pattern: traverses each row alternating between left and right

Parameters
  • nrow (int) – Number of rows in the 2D grid

  • ncol (int) – Number of columns in the 2D grid

Returns

A list containing two traversal paths, where each path is a list of qubit indices.

The first path is column-wise, the second is row-wise.

Return type

list

Examples

>>> # For a 2x3 grid with qubits numbered as:
>>> # 0 1 2
>>> # 3 4 5
>>> line_set = SGAnsatz2D.generate_line_set(2, 3)
>>> print(line_set)
>>> # Output: [[0,3,4,1,2,5], [0,1,2,5,4,3]]