Skip to main content
IBM Quantum Platform

PauliTwoDesign

class qiskit.circuit.library.PauliTwoDesign(num_qubits=None, reps=3, seed=None, insert_barriers=False, name='PauliTwoDesign')

GitHub

Bases: TwoLocal

O ansatz de Pauli Two-Design.

Esta classe implementa uma forma específica de um circuito de 2-design [1], frequentemente estudado na literatura sobre aprendizado de máquina quântico, como na investigação de platôs estéreis em algoritmos variacionais [2].

O circuito consiste em camadas alternadas de rotação e entrelaçamento, com uma camada inicial de portas de tipo “ H=RY(π/4)\sqrt{H} = RY(\pi/4) ”. As camadas de rotação contêm rotações de Pauli de um único qubit, nas quais o eixo é escolhido aleatoriamente de forma uniforme entre X, Y ou Z. As camadas de entrelaçamento são compostas por portas CZ em pares, com uma profundidade total de 2.

Por exemplo, o circuito poderia ter a seguinte aparência (mas observe que a escolha de uma semente diferente produz rotações de Pauli diferentes).

     ┌─────────┐┌──────────┐       ░ ┌──────────┐       ░  ┌──────────┐
q_0: ┤ RY(π/4) ├┤ RZ(θ[0]) ├─■─────░─┤ RY(θ[4]) ├─■─────░──┤ RZ(θ[8]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░  ├──────────┤
q_1: ┤ RY(π/4) ├┤ RZ(θ[1]) ├─■──■──░─┤ RY(θ[5]) ├─■──■──░──┤ RX(θ[9]) ├
     ├─────────┤├──────────┤    │  ░ ├──────────┤    │  ░ ┌┴──────────┤
q_2: ┤ RY(π/4) ├┤ RX(θ[2]) ├─■──■──░─┤ RY(θ[6]) ├─■──■──░─┤ RX(θ[10]) ├
     ├─────────┤├──────────┤ │     ░ ├──────────┤ │     ░ ├───────────┤
q_3: ┤ RY(π/4) ├┤ RZ(θ[3]) ├─■─────░─┤ RX(θ[7]) ├─■─────░─┤ RY(θ[11]) ├
     └─────────┘└──────────┘       ░ └──────────┘       ░ └───────────┘

Exemplos

from qiskit.circuit.library import PauliTwoDesign
circuit = PauliTwoDesign(4, reps=2, seed=5, insert_barriers=True)
circuit.draw('mpl')
Diagrama de circuito gerado pelo código anterior.
Veja Também

A função pauli_two_design() constrói o mesmo circuito funcionalmente, mas mais rápido.

Referências

[1] : Nakata et al, 2-designs unitários de unitários X e Z-diagonais aleatórios.

arXiv:1502.07514

[2] : McClean et al, Platôs estéreis em cenários de treinamento de redes neurais quânticas.

arXiv:1803.11173

Descontinuado desde a versão 2.1

A classe qiskit.circuit.library.n_local.pauli_two_design.PauliTwoDesign está obsoleta desde o Qiskit 2.1. Ele será removido no Qiskit 3.0. Em vez disso, use a função qiskit.circuit.library.pauli_two_design.

Parâmetros

  • num_qubits (int | None) – O número de qubits do circuito Pauli Two-Design.
  • reps (int) – Especifica a frequência com que um bloco que consiste em uma camada de rotação e uma camada de emaranhamento é repetido.
  • seed (int | None) – A semente para escolher aleatoriamente os eixos das rotações de Pauli.
  • insert_barriers (bool) – Se True, são inseridas barreiras entre cada camada. Se for False, nenhuma barreira será inserida. O padrão é False.
  • name (str) – O nome a ser usado para o circuito gerado.

Atributos

num_parameters_settable

Retorna o número de parâmetros configuráveis.

Retorna

O número de parâmetros possivelmente distintos.

name

Tipo: str

Um nome legível por humanos para o circuito.

Exemplo

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.