Skip to main content
IBM Quantum Platform

fatiamento

qiskit_addon_utils.slicing

Métodos utilitários para corte de circuitos.

Para obter mais informações, consulte o guia de instruções que discute esse submódulo.

combine_slices

combine_slices(slices, include_barriers=False)

GitHub

Combine fatias de N-qubit de um circuito em um único circuito.

Parâmetros

  • slices (Sequence[QuantumCircuit]) – As fatias do circuito N-qubit.
  • include_barriers (bool) – Se for True, coloque barreiras entre cada fatia.

Retorna

A QuantumCircuit com as fatias anexadas em ordem sequencial.

Aumentos

ValueError - Duas fatias de entrada foram definidas em diferentes números de qubits.

Tipo de retorno

QuantumCircuit | Nenhum

slice_by_barriers

slice_by_barriers(circuit)

GitHub

Divida o site QuantumCircuit em fatias ao redor de barreiras de circuito completo.

As barreiras que não atuam em todos os qubits do circuito serão tratadas como operações normais e incluídas nas fatias. As barreiras que atuam em todos os qubits serão interpretadas como localizações de fatias e não serão incluídas nas fatias de saída.

Parâmetros

circuit (QuantumCircuit) – O circuito a ser dividido.

Retorna

Uma sequência de QuantumCircuit objetos, um para cada fatia.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_coloring

slice_by_coloring(circuit, coloring)

GitHub

Divida um QuantumCircuit em fatias usando a coloração de borda fornecida.

Portas de dois qubits que atuam em conexões de qubits (arestas) da mesma cor serão agrupadas de forma avida em fatias usando CollectOpColor. Isso será feito em ordem crescente do valor da cor (os valores inteiros aos quais cada aresta é mapeada).

Aviso

Observe que isso não significa que as fatias de cores de baixo valor sejam garantidamente as mais à esquerda em seu circuito. Abaixo está um exemplo para enfatizar isso.

>>> from qiskit import QuantumCircuit

>>> circuit = QuantumCircuit(5)
>>> _ = circuit.cx(0, 1)
>>> _ = circuit.cx(3, 4)
>>> _ = circuit.cx(2, 3)

>>> circuit.draw()
q_0: ──■───────
     ┌─┴─┐
q_1: ┤ X ├─────
     └───┘
q_2: ───────■──
          ┌─┴─┐
q_3: ──■──┤ X ├
     ┌─┴─┐└───┘
q_4: ┤ X ├─────
     └───┘

>>> coloring = {(0, 1): 0, (2, 3): 0, (3, 4): 1}

>>> from qiskit_addon_utils.slicing import combine_slices, slice_by_coloring

>>> slices = slice_by_coloring(circuit, coloring)

# for illustration purposes, we are recombining the slices with barriers
>>> recombined = combine_slices(slices, include_barriers=True)
>>> recombined.draw()

q_0: ──────░───■──
           ░ ┌─┴─┐
q_1: ──────░─┤ X ├
           ░ └───┘
q_2: ──────░───■──
           ░ ┌─┴─┐
q_3: ──■───░─┤ X ├
     ┌─┴─┐ ░ └───┘
q_4: ┤ X ├─░──────
     └───┘ ░

Os portas de qubit único serão agrupados em uma única fatia por meio de CollectOpSize.

Parâmetros

  • circuit (QuantumCircuit) – O circuito a ser dividido.
  • coloring (dict[tuple[int, int], int]) – Um dicionário que mapeia bordas (pares de números inteiros) para valores de cores.

Retorna

Uma sequência de QuantumCircuit objetos, um para cada fatia.

Aumentos

  • ValueError - A coloração da borda de entrada é inválida.
  • ValueError - Não foi possível atribuir uma cor à instrução de circuito.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_depth

slice_by_depth(circuit, max_slice_depth)

GitHub

Dividir um QuantumCircuit em fatias com base na profundidade.

Essa função transforma o circuito de entrada em um circuito de DAGCircuit e agrupa a sequência de depth-1 camadas de saída de layers() em fatias de profundidade que não excedam max_slice_depth. Isso é feito compondo camadas em fatias até que a profundidade máxima da fatia seja atingida e, em seguida, iniciando uma nova fatia com a próxima camada. A fatia final pode ser composta por menos de max_slice_depth camadas.

Parâmetros

  • circuit (QuantumCircuit) – O circuito a ser dividido.
  • max_slice_depth (int) – A profundidade máxima de uma determinada fatia.

Retorna

Uma sequência de QuantumCircuit objetos, um para cada fatia.

Tipo de retorno

lista [ QuantumCircuit ]

slice_by_gate_types

slice_by_gate_types(circuit)

GitHub

Dividir um QuantumCircuit em depth-1 fatias de operações do mesmo tipo.

Aviso

Observação: as fatias adjacentes que não compartilham qubits em comum podem ser ordenadas arbitrariamente.

Parâmetros

circuit (QuantumCircuit) – O circuito a ser dividido.

Retorna

Uma sequência de QuantumCircuit objetos, um para cada fatia.

Tipo de retorno

lista [ QuantumCircuit ]

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.